Spaces:
Running
Running
| import streamlit as st | |
| import pandas as pd | |
| def render_statistics_tab(result): | |
| st.subheader("📊 Статистика документа") | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| st.metric("Символов", f"{result['stats']['characters']:,}") | |
| with col2: | |
| st.metric("Слов", f"{result['stats']['words']:,}") | |
| with col3: | |
| st.metric("Предложений", f"{result['stats']['sentences']:,}") | |
| if result.get('sections'): | |
| st.subheader("📑 Разделы документа") | |
| for num, title in list(result['sections'].items())[:10]: | |
| st.write(f"**{num}** {title}") | |
| def render_materials_tab(result): | |
| st.subheader("🏗️ Найденные материалы") | |
| if result.get('materials_lemmas'): | |
| lemmas = sorted(result['materials_lemmas']) | |
| df = pd.DataFrame({ | |
| '№': range(1, len(lemmas) + 1), | |
| 'Материал': lemmas | |
| }) | |
| st.dataframe(df, width='stretch') | |
| st.caption(f"📊 **Всего уникальных материалов: {len(lemmas)}**") | |
| else: | |
| st.info("Материалы не найдены") | |
| def render_standards_tab(result): | |
| st.subheader("📜 Нормативные документы") | |
| if result.get('standards'): | |
| df = pd.DataFrame({'Норматив': sorted(result['standards'])}) | |
| st.dataframe(df, width='stretch') | |
| st.caption(f"📊 **Всего нормативов: {len(result['standards'])}**") | |
| else: | |
| st.info("Нормативы не найдены") | |
| def render_parameters_tab(result): | |
| st.subheader("🌡️ Технические параметры") | |
| if result.get('temperatures'): | |
| st.write("**Температуры:**") | |
| st.write(", ".join(sorted(result['temperatures'])[:15])) | |
| if result.get('thicknesses'): | |
| st.write("**Толщины:**") | |
| st.write(", ".join(sorted(result['thicknesses'])[:15])) | |
| if result.get('densities'): | |
| st.write("**Плотности:**") | |
| st.write(", ".join(sorted(result['densities'])[:15])) | |
| def render_sidebar(): | |
| """Боковая панель для загрузки файлов""" | |
| with st.sidebar: | |
| st.header("📁 Управление") | |
| uploaded_file = st.file_uploader( | |
| "Загрузите документ", | |
| type=['txt', 'docx', 'pdf'], | |
| help="Поддерживаются форматы: TXT, DOCX, PDF" | |
| ) | |
| st.divider() | |
| st.subheader("📄 Доступные документы") | |
| from utils.config import RAW_DIR | |
| docs = list(RAW_DIR.glob("*")) | |
| if docs: | |
| for doc in docs: | |
| st.write(f"• {doc.name}") | |
| else: | |
| st.info("Нет документов") | |
| return uploaded_file | |