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

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

Closes #22

Тот же механизм, что в RSHB/arm-core#44 (PR arm-core#49) и arm-scan-gateway#11 (PR scan-gateway#12): код источника 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 (10).
  • 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.

Проверка

make check-full зелёный (lint, mypy, unit, integration 10 passed, docker-build).

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

Closes #22 Тот же механизм, что в RSHB/arm-core#44 (PR arm-core#49) и arm-scan-gateway#11 (PR scan-gateway#12): код источника `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` (10). - `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`. ## Проверка `make check-full` зелёный (lint, mypy, unit, integration 10 passed, docker-build). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 1 commit 2026-10-07 17:39:36 +03:00
Тот же источник настроек, что в arm-core#44: приоритет обычный env -> OPENBAO__APP__* -> .env -> умолчание;
неизвестное имя — ошибка при старте; ключ APP не ломает OpenBAOSettings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep merged commit a4221e0b6e into main 2026-10-07 17:42:29 +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-tabular-parser#23
No description provided.