- Replace legacy @PURPOSE with @BRIEF across 241 files - Add missing [C:N] complexity tiers to function contracts in core modules - Fix tombstone contracts: add @STATUS DEPRECATED to 5 deprecated anchors - Resolve 7 unresolved @RELATION edges in executor.py (DictionaryManager, TranslationPreview, etc.) - Fix flat hierarchical IDs in 4 test files (22 test functions) - Fix invalid tags/relations in logger.py (@ADR, @CONSEQUENCES, DISABLED_BY) - Rebuild semantic index: 9,576 contracts, 4,742 edges, 0 parse warnings
3.0 KiB
3.0 KiB
[DEF:Doc.Architecture.DocArchitecture:Module]
@TIER: STANDARD
@BRIEF: Placeholder architecture document reserved for future normalized project architecture guidance.
@RELATION: DEPENDS_ON -> [DEF:Std:Architecture:Standard]
Architecture guidance currently lives in .ai/standards/architecture.md and .ai/MODULE_MAP.md.
Интеграционное тестирование с Testcontainers
Проект использует Testcontainers для интеграционных тестов, требующих реальных сервисов (PostgreSQL, ClickHouse, Apache Superset).
Принцип
Каждая тестовая сессия получает изолированные Docker-контейнеры на случайных портах. Контейнеры уничтожаются после завершения сессии. Это гарантирует отсутствие утечек состояния между запусками.
Поддерживаемые сервисы
| Сервис | Образ | Scope | Конфигурация |
|---|---|---|---|
| PostgreSQL | postgres:16-alpine |
session | backend/tests/integration/conftest.py |
| ClickHouse | clickhouse/clickhouse-server:24.3 |
module | test_translate_clickhouse.py |
| Apache Superset | apache/superset:4.1.2 |
session | backend/tests/integration/conftest.py |
Apache Superset Testcontainers
Решение: ADR-0012 — Superset Testcontainers
Архитектура:
Test Session
├── PostgresContainer (общий) # DB: superset_meta
├── Init Container (краткоживущий) # db upgrade → create-admin → init
└── Web Container (на всю сессию) # superset run -p 8088
Запуск:
cd backend && source .venv/bin/activate
python -m pytest tests/integration/test_superset_integration.py -v
# 8 passed in ~25s
Доступные fixtures:
superset_db_url— PostgreSQL URI для метаданных Supersetsuperset_container— запущенный веб-сервер Supersetsuperset_url—http://host:portsuperset_admin_headers— авторизованная сессия (admin:admin123)
Ограничения:
- Для REST API используйте fixture
superset_jwt_headers: JWT-авторизация (/api/v1/security/login) настроена в тестовом контейнере; session cookie предназначена для form-login сценариев. - Метаданные Superset хранятся в отдельной PostgreSQL БД
superset_meta. Fixture устанавливаетpsycopg2-binary, передаёт URI черезSUPERSET_CONFIG_PATHи использует Docker bridge IP; подробности в ADR-0012.