Фильтр донастроил

This commit is contained in:
2025-09-08 15:49:37 +03:00
parent 3ffe547208
commit 802cf5ffba
4 changed files with 32 additions and 7 deletions

View File

@@ -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,

View File

@@ -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:

View File

@@ -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"
) )

View File

@@ -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(