Raykov-MS 7b90daa396 Remove SMB entirely, switch input to attached zip, add self-service token popover
- Drop SMB/SAMBA subsystem completely: app/samba_access.py, app/path_settings.py,
  app/path_store.py, app/pipeline/file_manager.py and their tests, plus the
  smbprotocol dependency and all related UI (login/password fields, path editor,
  SMB diagnostics) in main.py.
- run_batch now takes a .zip attached via Streamlit's file_uploader (same as the
  local dev tool) instead of reading from SMB or a fictitious OpenCloud "Attach"
  folder; renamed from run_local_zip_batch since it's now the single canonical
  batch entrypoint used by both main.py and scripts/local_zip_test_app.py.
- Fixed run number resolution: added next_opencloud_run_number() which lists the
  Out/year/month/day folder via WebDAV PROPFIND, so repeated runs land in
  incrementing subfolders instead of always overwriting "1".
- Added a self-service "Добавить токен" popover in main.py so users can link
  their own OpenCloud App Token to their Keycloak account (opencloud_token_store)
  without an admin running the CLI script; reworded the missing-token error to
  point at it.
2026-09-17 15:34:53 +03:00
2026-09-17 13:04:35 +03:00
fix
2026-08-11 01:09:07 +03:00
2026-06-04 14:13:30 +03:00
2026-06-04 14:13:30 +03:00
fix
2026-08-11 01:09:07 +03:00
2026-09-17 13:04:35 +03:00
2026-06-04 14:13:30 +03:00
2026-06-22 07:25:27 +03:00
2026-09-17 13:04:35 +03:00

SFM Streamlit

Production-ready Streamlit приложение для обработки ФЭС XML файлов в Excel-отчет и протокол с доступом к файлам через SAMBA (rail_connectors).

Архитектура

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).

Быстрый старт

python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
streamlit run main.py

Тесты и качество

pytest
ruff check .
black --check .
isort --check-only .

Pre-commit

pre-commit install
pre-commit run --all-files

Хуки:

  • black
  • isort
  • ruff
  • ruff-format
Description
No description provided
Readme 12 MiB
Languages
Python 100%