""" UI модуль для парсера сводок СА """ import streamlit as st import requests from api_client import make_api_request, API_BASE_URL from config import CA_MODES, CA_TABLES def render_svodka_ca_tab(): """Рендер вкладки сводок СА""" st.header("🏭 Сводки СА - Полный функционал") # Секция загрузки файлов st.subheader("📤 Загрузка файлов") uploaded_ca = st.file_uploader( "Выберите Excel файл сводки СА", type=['xlsx', 'xlsm', 'xls'], key="ca_upload" ) if uploaded_ca is not None: if st.button("📤 Загрузить сводку СА", key="upload_ca_btn"): with st.spinner("Загружаю файл..."): try: files = {"file": (uploaded_ca.name, uploaded_ca.read(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")} response = requests.post(f"{API_BASE_URL}/svodka_ca/upload", files=files) result = response.json() if response.status_code == 200: st.success(f"✅ {result.get('message', 'Файл загружен')}") st.info(f"ID объекта: {result.get('object_id', 'N/A')}") else: st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}") except Exception as e: st.error(f"❌ Ошибка: {str(e)}") st.markdown("---") # Секция получения данных st.subheader("🔍 Получение данных") col1, col2 = st.columns(2) with col1: st.subheader("Параметры запроса") modes = st.multiselect( "Выберите режимы", CA_MODES, default=["plan", "fact"], key="ca_modes" ) tables = st.multiselect( "Выберите таблицы", CA_TABLES, default=["ТиП", "Топливо"], key="ca_tables" ) with col2: st.subheader("Результат") if st.button("🔍 Получить данные СА", key="ca_btn"): if modes and tables: with st.spinner("Получаю данные..."): data = { "modes": modes, "tables": tables } result, status = make_api_request("/svodka_ca/get_data", data) if status == 200: st.success("✅ Данные получены") st.json(result) else: st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}") else: st.warning("⚠️ Выберите режимы и таблицы")