80 lines
2.6 KiB
Markdown
80 lines
2.6 KiB
Markdown
# 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`
|