feat(config): несекретные настройки из OpenBao через OPENBAO__APP__<ИМЯ> (#44) #49
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/44-openbao-app-settings"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #44
Что сделано
api/src/core/settings_sources.py—OpenBaoAppSettingsSource(наследникEnvSettingsSourceс префиксомOPENBAO__APP__): типы,NoDecode-списки, вложенность__и регистр разбираются так же, как из обычного env. Неизвестное имя —ValueErrorпри созданииSettings(то есть при старте).api/src/core/config.py—settings_customise_sources: init → обычный env →OPENBAO__APP__*→.env→ умолчание;OpenBAOSettingsотбрасывает ключAPP.api/tests/test_config_openbao_app.py(13): применение значения, приоритеты, типы (bool, int, CORS_ORIGINS списком), неизвестное имя,OPENBAO__APP__OPENBAO__..., вложенные группы не сломаны.api/.env.example, README (таблица переменных): правило для контура.Rulings I made
APPубираетсяmodel_validator(mode="before")вOpenBAOSettings(а неextra="ignore"на всей группе): самый узкий вариант, опечатка в имени группы (OPENBAO__DATABSE__...) остаётся ошибкой. Проверено: без негоOPENBAO.appпадает сextra_forbidden(из env и из.env).OPENBAO__APP__*в.env-файле не действует (платформа передаёт процессом; приоритет «.envнижеOPENBAO__APP__» иначе неоднозначен). Описано в README и.env.example.OPENBAO__APP__OPENBAO__...отвергается как неизвестное имя: секреты задаются толькоOPENBAO__<ГРУППА>__*..env.example/.env.testновые ключи не добавлены (только комментарий): тест требует одинаковых ключей в обоих файлах, а значения в.env.exampleи так заданы обычными именами.EnvSettingsSource(публичный класс pydantic-settings) вместо собственногоPydanticBaseSettingsSource: переиспользует разбор типов без копирования, нужная гарантия «так же, как из env».Проверка
make check-fullзелёный: check (1212 passed), dbml-check, check-infra, test-integration (797 passed), e2e (1 skipped — нет профиля services), docker-build, web-check (build ok).🤖 Generated with Claude Code
https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3