feat(config): несекретные настройки из OpenBao через OPENBAO__APP__<ИМЯ> (#11) #12

Merged
aep merged 1 commits from feat/11-openbao-app-settings into main 2026-10-07 17:42:21 +03:00
Owner

Closes #11

Тот же механизм, что в RSHB/arm-core#44 (PR arm-core#49): код источника api/src/core/settings_sources.py идентичен.

Что сделано

  • api/src/core/settings_sources.py — OpenBaoAppSettingsSource (наследник EnvSettingsSource, префикс OPENBAO__APP__); неизвестное имя — ValueError при старте.
  • api/src/core/config.py — settings_customise_sources (init -> env -> OPENBAO__APP__* -> .env), OpenBAOSettings отбрасывает ключ APP.
  • Тесты api/tests/unit/test_config_openbao_app.py (11), в т.ч. OPENBAO__APP__SCAN_HOTFOLDER_MODE=smb без OPENBAO__SMB__* -> ошибка конфигурации, с ними -> работает.
  • api/.env.example, README (таблица переменных).

Rulings I made

  • R-1: ключ APP убирается model_validator(mode="before") в OpenBAOSettings (самый узкий вариант: опечатка в имени группы остаётся ошибкой; без него extra_forbidden).
  • R-2: OPENBAO__APP__* читается только из окружения процесса, в .env не действует.
  • R-3: OPENBAO__APP__OPENBAO__... отвергается как неизвестное имя.
  • R-4: в .env.example только комментарий с примерами, активных ключей не добавлено.
  • R-5: наследование от EnvSettingsSource вместо собственного PydanticBaseSettingsSource (разбор типов как из env без копирования).

Проверка

make check-full зелёный: unit 1030 passed, integration 11 passed, docker-build ok.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

Closes #11 Тот же механизм, что в RSHB/arm-core#44 (PR arm-core#49): код источника `api/src/core/settings_sources.py` идентичен. ## Что сделано - `api/src/core/settings_sources.py` — `OpenBaoAppSettingsSource` (наследник `EnvSettingsSource`, префикс `OPENBAO__APP__`); неизвестное имя — `ValueError` при старте. - `api/src/core/config.py` — `settings_customise_sources` (init -> env -> `OPENBAO__APP__*` -> `.env`), `OpenBAOSettings` отбрасывает ключ `APP`. - Тесты `api/tests/unit/test_config_openbao_app.py` (11), в т.ч. `OPENBAO__APP__SCAN_HOTFOLDER_MODE=smb` без `OPENBAO__SMB__*` -> ошибка конфигурации, с ними -> работает. - `api/.env.example`, README (таблица переменных). ## Rulings I made - R-1: ключ `APP` убирается `model_validator(mode="before")` в `OpenBAOSettings` (самый узкий вариант: опечатка в имени группы остаётся ошибкой; без него `extra_forbidden`). - R-2: `OPENBAO__APP__*` читается только из окружения процесса, в `.env` не действует. - R-3: `OPENBAO__APP__OPENBAO__...` отвергается как неизвестное имя. - R-4: в `.env.example` только комментарий с примерами, активных ключей не добавлено. - R-5: наследование от `EnvSettingsSource` вместо собственного `PydanticBaseSettingsSource` (разбор типов как из env без копирования). ## Проверка `make check-full` зелёный: unit 1030 passed, integration 11 passed, docker-build ok. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 1 commit 2026-10-07 17:35:45 +03:00
Тот же источник настроек, что в arm-core#44: приоритет обычный env -> OPENBAO__APP__* -> .env -> умолчание;
неизвестное имя — ошибка при старте; ключ APP не ломает OpenBAOSettings. Режим smb из OPENBAO__APP__
включает проверку обязательных OPENBAO__SMB__*.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep merged commit 536dd31536 into main 2026-10-07 17:42:21 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-scan-gateway#12
No description provided.