# SFM Streamlit Production-ready Streamlit приложение для обработки ФЭС XML файлов в Excel-отчет и протокол с доступом к файлам через SAMBA (`rail_connectors`). ## Архитектура ```text main.py app/ app_config.py # константы приложения и user-id path_store.py # JSON-хранилище персональных путей path_settings.py # UI-модалка изменения пути samba_access.py # проверка доступа к SAMBA папке auth/ service.py # orchestration auth/session providers.py mock_provider.py pipeline/ config.py # шаблоны имен/путей пайплайна file_manager.py # scan/move/upload/download в SAMBA parser.py # namespace-aware парсер ФЭС XML report.py # генерация report.xlsx protocol.py # генерация protocol.xlsx service.py # run_batch orchestration tests/ unit/ smoke/ ``` ## Основной поток 1. Пользователь вводит SAMBA логин/пароль. 2. При необходимости меняет персональный `input_dir` (с pre-check доступа). 3. Нажимает `Запустить обработку xml в excel`. 4. Пайплайн: - сканирует входную папку; - невалидные имена переносит в `Err`; - валидные XML парсит и формирует строки отчета; - создает `report.xlsx`, `protocol.xlsx`, `process.log`; - сохраняет артефакты в `Out/YYYY/MM_YYYY/YYYYMMDD/run_number/`; - успешные файлы переносит в `Processed`. 5. В UI отображаются счетчики и пути к артефактам. ## Переменные окружения Используются переменные авторизации Raisa (`OPENBAO__SETTINGS__*`). SMBA source и дефолтный путь входа задаются в коде (`app/app_config.py`). ## Быстрый старт ```bash python -m venv .venv .\.venv\Scripts\activate pip install -r requirements.txt copy .env.example .env streamlit run main.py ``` ## Тесты и качество ```bash pytest ruff check . black --check . isort --check-only . ``` ## Pre-commit ```bash pre-commit install pre-commit run --all-files ``` Хуки: - `black` - `isort` - `ruff` - `ruff-format`