SFM/README.md
2026-06-22 07:25:27 +03:00

80 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`