Systematic rename of all semantic anchors (#region, [DEF], @RELATION) across 1400+ files — backend Python, frontend Svelte/TS, specs, docs: - Flat anchors become Namespace.Module.Entity - @RELATION references updated to match new anchor paths - Zero business logic changes
3.0 KiB
3.0 KiB
[DEF:Doc.Architecture.DocArchitecture:Module]
@TIER: STANDARD
@PURPOSE: 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.