Фильтр донастроил
This commit is contained in:
@@ -18,6 +18,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
from adapters.storage import MinIOStorageAdapter
|
from adapters.storage import MinIOStorageAdapter
|
||||||
from adapters.parsers import SvodkaPMParser, SvodkaCAParser, MonitoringFuelParser, MonitoringTarParser, SvodkaRepairCAParser, StatusesRepairCAParser, OperSpravkaTechPosParser
|
from adapters.parsers import SvodkaPMParser, SvodkaCAParser, MonitoringFuelParser, MonitoringTarParser, SvodkaRepairCAParser, StatusesRepairCAParser, OperSpravkaTechPosParser
|
||||||
|
from adapters.pconfig import SINGLE_OGS, OG_IDS
|
||||||
|
|
||||||
from core.models import UploadRequest, DataRequest
|
from core.models import UploadRequest, DataRequest
|
||||||
from core.services import ReportService, PARSERS
|
from core.services import ReportService, PARSERS
|
||||||
@@ -1538,6 +1539,17 @@ async def async_upload_svodka_pm_zip(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# ====== СИСТЕМНЫЕ ЭНДПОИНТЫ (НЕ ОТОБРАЖАЮТСЯ В SWAGGER) ======
|
||||||
|
|
||||||
|
@app.get("/system/ogs", include_in_schema=False)
|
||||||
|
async def get_system_ogs():
|
||||||
|
"""Системный эндпоинт для получения списка ОГ из pconfig"""
|
||||||
|
return {
|
||||||
|
"single_ogs": SINGLE_OGS,
|
||||||
|
"og_ids": OG_IDS
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.post("/async/svodka_ca/upload", tags=[SvodkaCAParser.name],
|
@app.post("/async/svodka_ca/upload", tags=[SvodkaCAParser.name],
|
||||||
summary="Асинхронная загрузка файла отчета сводки СА",
|
summary="Асинхронная загрузка файла отчета сводки СА",
|
||||||
response_model=UploadResponse,
|
response_model=UploadResponse,
|
||||||
|
|||||||
@@ -37,6 +37,17 @@ def get_server_info() -> Dict[str, Any]:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def get_system_ogs() -> Dict[str, Any]:
|
||||||
|
"""Получение системного списка ОГ из pconfig"""
|
||||||
|
try:
|
||||||
|
response = requests.get(f"{API_BASE_URL}/system/ogs")
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.json()
|
||||||
|
return {"single_ogs": [], "og_ids": {}}
|
||||||
|
except:
|
||||||
|
return {"single_ogs": [], "og_ids": {}}
|
||||||
|
|
||||||
|
|
||||||
def upload_file_to_api(endpoint: str, file_data: bytes, filename: str) -> Tuple[Dict[str, Any], int]:
|
def upload_file_to_api(endpoint: str, file_data: bytes, filename: str) -> Tuple[Dict[str, Any], int]:
|
||||||
"""Загрузка файла на API"""
|
"""Загрузка файла на API"""
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ UI модуль для статусов ремонта СА
|
|||||||
"""
|
"""
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from api_client import upload_file_to_api, make_api_request, get_available_ogs
|
from api_client import upload_file_to_api, make_api_request, get_available_ogs, get_system_ogs
|
||||||
|
|
||||||
|
|
||||||
def render_statuses_repair_ca_tab():
|
def render_statuses_repair_ca_tab():
|
||||||
@@ -33,13 +33,14 @@ def render_statuses_repair_ca_tab():
|
|||||||
# Секция получения данных
|
# Секция получения данных
|
||||||
st.subheader("📊 Получение данных")
|
st.subheader("📊 Получение данных")
|
||||||
|
|
||||||
# Получаем доступные ОГ динамически
|
# Получаем доступные ОГ из системного API
|
||||||
available_ogs = get_available_ogs("statuses_repair_ca")
|
system_ogs = get_system_ogs()
|
||||||
|
available_ogs = system_ogs.get("single_ogs", [])
|
||||||
|
|
||||||
# Фильтр по ОГ
|
# Фильтр по ОГ
|
||||||
og_ids = st.multiselect(
|
og_ids = st.multiselect(
|
||||||
"Выберите ОГ (оставьте пустым для всех)",
|
"Выберите ОГ (оставьте пустым для всех)",
|
||||||
available_ogs if available_ogs else ["KNPZ", "ANHK", "SNPZ", "BASH", "UNH", "NOV"], # fallback
|
available_ogs if available_ogs else get_available_ogs(), # fallback
|
||||||
key="statuses_repair_ca_og_ids"
|
key="statuses_repair_ca_og_ids"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ UI модуль для ремонта СА
|
|||||||
"""
|
"""
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from api_client import upload_file_to_api, make_api_request, get_available_ogs
|
from api_client import upload_file_to_api, make_api_request, get_system_ogs, get_available_ogs
|
||||||
from config import REPAIR_TYPES
|
from config import REPAIR_TYPES
|
||||||
|
|
||||||
|
|
||||||
@@ -42,8 +42,9 @@ def render_svodka_repair_ca_tab():
|
|||||||
with col1:
|
with col1:
|
||||||
st.subheader("Фильтры")
|
st.subheader("Фильтры")
|
||||||
|
|
||||||
# Получаем доступные ОГ динамически
|
# Получаем доступные ОГ из системного API
|
||||||
available_ogs = get_available_ogs("svodka_repair_ca")
|
system_ogs = get_system_ogs()
|
||||||
|
available_ogs = system_ogs.get("single_ogs", [])
|
||||||
|
|
||||||
# Фильтр по ОГ
|
# Фильтр по ОГ
|
||||||
og_ids = st.multiselect(
|
og_ids = st.multiselect(
|
||||||
|
|||||||
Reference in New Issue
Block a user