"""
UI модуль для операционных справок технологических позиций
"""
import streamlit as st
import pandas as pd
from api_client import upload_file_to_api, make_api_request, get_available_ogs


def render_oper_spravka_tech_pos_tab():
    """Рендер вкладки операционных справок технологических позиций"""
    st.header("🏭 Операционные справки технологических позиций")
    
    # Секция загрузки файлов
    st.subheader("📤 Загрузка файлов")
    
    uploaded_file = st.file_uploader(
        "Выберите ZIP архив с файлами операционных справок",
        type=['zip'],
        key="oper_spravka_tech_pos_upload"
    )
    
    if uploaded_file is not None:
        if st.button("📤 Загрузить файл", key="oper_spravka_tech_pos_upload_btn"):
            with st.spinner("Загружаем файл..."):
                file_data = uploaded_file.read()
                result, status_code = upload_file_to_api("/oper_spravka_tech_pos/upload", file_data, uploaded_file.name)
                
                if status_code == 200:
                    st.success("✅ Файл успешно загружен!")
                    st.json(result)
                else:
                    st.error(f"❌ Ошибка загрузки: {result}")
    
    st.markdown("---")
    
    # Секция получения данных
    st.subheader("📊 Получение данных")
    
    # Выбор формата отображения
    display_format = st.radio(
        "Формат отображения:",
        ["JSON", "Таблица"],
        key="oper_spravka_tech_pos_display_format",
        horizontal=True
    )
    
    # Получаем доступные ОГ динамически
    available_ogs = get_available_ogs("oper_spravka_tech_pos")
    
    # Выбор ОГ
    og_id = st.selectbox(
        "Выберите ОГ:",
        available_ogs if available_ogs else ["SNPZ", "KNPZ", "ANHK", "BASH", "UNH", "NOV"],
        key="oper_spravka_tech_pos_og_id"
    )
    
    if st.button("📊 Получить данные", key="oper_spravka_tech_pos_get_data_btn"):
        with st.spinner("Получаем данные..."):
            request_data = {"id": og_id}
            result, status_code = make_api_request("/oper_spravka_tech_pos/get_data", request_data)
            
            if status_code == 200 and result.get("success"):
                st.success("✅ Данные успешно получены!")
                
                # Показываем данные
                data = result.get("data", [])
                
                if data and len(data) > 0:
                    st.subheader("📋 Результат:")
                    
                    if display_format == "JSON":
                        # Отображаем как JSON
                        st.json(data)
                    else:
                        # Отображаем как таблицу
                        if isinstance(data, list) and data:
                            df = pd.DataFrame(data)
                            st.dataframe(df, use_container_width=True)
                        else:
                            st.write("Нет данных")
                else:
                    st.info("📋 Нет данных для отображения")
            else:
                st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")