docs: добавлен TDD workflow в AGENTS.md и tests/AGENTS.md
- blog/AGENTS.md: раздел TDD Development Workflow с lifecycle фичи - tests/AGENTS.md: правила TDD для тестов (RED/GREEN/REFACTOR, TC-ID формат) - Описаны уровни тесткейсов: TC-UNIT, TC-API, TC-WEB, TC-E2E - Добавлены правила коммита во все подпроекты
This commit is contained in:
81
AGENTS.md
81
AGENTS.md
@@ -354,6 +354,87 @@ response.set_cookie(
|
||||
- Tables auto-created on startup
|
||||
- Use `init_db()` and `close_db()` in lifespan
|
||||
|
||||
## TDD Development Workflow
|
||||
|
||||
This project uses **Test-Driven Development (TDD)** with a formal test agreement process.
|
||||
|
||||
### Feature Lifecycle
|
||||
|
||||
```
|
||||
User: "начнем новую фичу"
|
||||
|
|
||||
v
|
||||
Discovery Phase (автоматически)
|
||||
|-- Анализ существующего кода
|
||||
|-- Определение затронутых слоев DDD
|
||||
|-- Рекомендации по тесткейсам
|
||||
|
|
||||
v
|
||||
User Agreement (согласование)
|
||||
|-- Пользователь подтверждает/корректирует тесткейсы
|
||||
|
|
||||
v
|
||||
Test Design
|
||||
|-- Актуализация FEATURE_*.md
|
||||
|-- Создание artifact: pyaqa/feature/{feature-name}.md
|
||||
|-- Назначение TC-UNIT-NNN, TC-API-NNN, TC-WEB-NNN, TC-E2E-NNN
|
||||
|
|
||||
v
|
||||
Write Tests (RED)
|
||||
|-- Написать тесты, убедиться что они падают
|
||||
|
|
||||
v
|
||||
Implementation (GREEN)
|
||||
|-- Domain -> Application -> Infrastructure -> Presentation
|
||||
|-- Минимальная реализация для прохождения тестов
|
||||
|
|
||||
v
|
||||
Refactor
|
||||
|-- Улучшение кода с сохранением зеленых тестов
|
||||
|-- Линтеры, type checker
|
||||
|
|
||||
v
|
||||
Verification
|
||||
|-- ruff check, ruff format, isort, mypy
|
||||
|-- pytest (coverage ≥70%)
|
||||
|-- E2E tests
|
||||
|
|
||||
v
|
||||
User Acceptance
|
||||
|-- Пользователь подтверждает приемку
|
||||
|
|
||||
v
|
||||
Commit (во все затронутые проекты)
|
||||
|-- blog, pytfm, pyaqa (root)
|
||||
```
|
||||
|
||||
### Branch Naming
|
||||
- Формат: `feature/{feature-name}`
|
||||
- База: `dev`
|
||||
|
||||
### Test Case IDs
|
||||
- `TC-UNIT-NNN` — unit тесты (domain, use cases)
|
||||
- `TC-API-NNN` — API endpoint тесты
|
||||
- `TC-WEB-NNN` — Web route тесты (HTML responses)
|
||||
- `TC-E2E-NNN` — End-to-end тесты (Playwright)
|
||||
|
||||
### Test Level Selection
|
||||
Все 4 уровня по умолчанию. Можно сокращать в зависимости от фичи:
|
||||
- **Domain-only фича**: только TC-UNIT
|
||||
- **API-only фича**: TC-UNIT + TC-API
|
||||
- **Web UI фича**: TC-UNIT + TC-WEB + TC-E2E
|
||||
- **Full-stack фича**: все 4 уровня
|
||||
|
||||
### Artifact Location
|
||||
- **Шаблон**: `pyaqa/feature/TEMPLATE.md`
|
||||
- **Артефакт фичи**: `pyaqa/feature/{feature-name}.md`
|
||||
|
||||
### Commit Rules
|
||||
При приемке фичи коммитить во ВСЕ затронутые подпроекты:
|
||||
1. `blog/` — если затронут
|
||||
2. `pytfm/` — если затронут
|
||||
3. `pyaqa/` (root) — всегда (обновление ссылок на подпроекты)
|
||||
|
||||
## Notes
|
||||
|
||||
- Web routes (`app/presentation/web/routes.py`) currently use `MockPost` and `MOCK_POSTS` instead of real use cases — integrate with actual use cases when ready
|
||||
|
||||
Reference in New Issue
Block a user