diff --git a/python_parser/app/main.py b/python_parser/app/main.py index d2744bf..2f5a303 100644 --- a/python_parser/app/main.py +++ b/python_parser/app/main.py @@ -18,6 +18,7 @@ logger = logging.getLogger(__name__) from adapters.storage import MinIOStorageAdapter 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.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], summary="Асинхронная загрузка файла отчета сводки СА", response_model=UploadResponse, diff --git a/streamlit_app/api_client.py b/streamlit_app/api_client.py index 4d433c5..eeb34ac 100644 --- a/streamlit_app/api_client.py +++ b/streamlit_app/api_client.py @@ -37,6 +37,17 @@ def get_server_info() -> Dict[str, Any]: 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]: """Загрузка файла на API""" try: diff --git a/streamlit_app/parsers_ui/statuses_repair_ca_ui.py b/streamlit_app/parsers_ui/statuses_repair_ca_ui.py index ac2f680..d45a402 100644 --- a/streamlit_app/parsers_ui/statuses_repair_ca_ui.py +++ b/streamlit_app/parsers_ui/statuses_repair_ca_ui.py @@ -3,7 +3,7 @@ UI модуль для статусов ремонта СА """ import streamlit as st 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(): @@ -33,13 +33,14 @@ def render_statuses_repair_ca_tab(): # Секция получения данных st.subheader("📊 Получение данных") - # Получаем доступные ОГ динамически - available_ogs = get_available_ogs("statuses_repair_ca") + # Получаем доступные ОГ из системного API + system_ogs = get_system_ogs() + available_ogs = system_ogs.get("single_ogs", []) # Фильтр по ОГ 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" ) diff --git a/streamlit_app/parsers_ui/svodka_repair_ca_ui.py b/streamlit_app/parsers_ui/svodka_repair_ca_ui.py index 944acde..f6a3495 100644 --- a/streamlit_app/parsers_ui/svodka_repair_ca_ui.py +++ b/streamlit_app/parsers_ui/svodka_repair_ca_ui.py @@ -3,7 +3,7 @@ UI модуль для ремонта СА """ import streamlit as st 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 @@ -42,8 +42,9 @@ def render_svodka_repair_ca_tab(): with col1: st.subheader("Фильтры") - # Получаем доступные ОГ динамически - available_ogs = get_available_ogs("svodka_repair_ca") + # Получаем доступные ОГ из системного API + system_ogs = get_system_ogs() + available_ogs = system_ogs.get("single_ogs", []) # Фильтр по ОГ og_ids = st.multiselect(