feat: expand platform APIs, sources, and test coverage
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped

This commit is contained in:
2026-03-17 12:56:48 +01:00
parent b505c67968
commit 3d298ce352
101 changed files with 8387 additions and 292 deletions

View File

@@ -0,0 +1,87 @@
# ADR-015: Configuration Source of Truth and Secret Management
## Status
Accepted
## Context
Система использует множество конфигураций:
- база данных
- Redis
- Celery
- внешние API (FNS, закупки и т.д.)
- Django settings
Ошибки конфигурации приводят к:
- невозможности запуска
- некорректной работе
- утечкам секретов
Также важно:
- разделение dev/prod
- воспроизводимость окружения
- безопасность секретов
## Decision
Используется environment-based configuration.
### Источники конфигурации
1. `.env.dev` — локальная разработка
2. `.env.prod` — production
3. `.env.prod.example` — контракт обязательных переменных
4. Docker Compose — точка применения конфигурации
5. `settings.*` — логика конфигурации
### Source of Truth
- обязательные переменные определяются через `.env.*`
- структура и использование переменных — в `settings`
- значения по умолчанию должны быть минимальны
### Secret policy
- секреты НЕ хранятся в репозитории
- `.env.*` файлы не коммитятся (кроме example)
- реальные значения задаются через:
- env-файлы
- секреты инфраструктуры
- CI/CD переменные
### Fail-fast policy
При старте приложения:
- проверяется доступность DB
- проверяется Redis
- проверяются критические переменные
При ошибке:
- приложение не стартует
### Configuration constraints
- запрещено хардкодить значения в коде
- запрещено использовать разные имена переменных для одного и того же
- запрещено использовать устаревшие пути (например config.settings.*)
## Consequences
### Positive
- воспроизводимость окружения
- безопасность
- предсказуемость запуска
### Negative
- необходимость поддерживать env-файлы
- риск рассинхронизации example и реальных env
## Alternatives considered
### 1. Конфигурация через код
Отклонено — небезопасно и негибко.
### 2. Хранение секретов в репозитории
Отклонено — нарушает требования безопасности.