docs: добавлены workflow для bugfix и refactoring
- blog/AGENTS.md: добавлены Bugfix Lifecycle и Refactoring Lifecycle - tests/AGENTS.md: добавлены Bugfix Test Workflow и Refactor Test Workflow - Добавлены правила для regression tests - Добавлены anti-patterns для багфикса и рефакторинга - Обновлены commit rules для всех типов задач
This commit is contained in:
95
AGENTS.md
95
AGENTS.md
@@ -408,9 +408,85 @@ Commit (во все затронутые проекты)
|
|||||||
|-- blog, pytfm, pyaqa (root)
|
|-- blog, pytfm, pyaqa (root)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Bugfix Lifecycle
|
||||||
|
|
||||||
|
```
|
||||||
|
User: "исправить баг"
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Reproduction Phase
|
||||||
|
|-- Анализ бага, воспроизведение
|
||||||
|
|-- Определение root cause
|
||||||
|
|-- Создание artifact: pyaqa/bugfix/{name}.md
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Write Regression Test
|
||||||
|
|-- Написать тест, воспроизводящий баг
|
||||||
|
|-- Убедиться что тест падает (RED)
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Fix (GREEN)
|
||||||
|
|-- Минимальный фикс
|
||||||
|
|-- Убедиться что тест проходит
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Verification
|
||||||
|
|-- Все существующие тесты проходят
|
||||||
|
|-- Coverage не упал
|
||||||
|
|-- Линтеры, type checker
|
||||||
|
|
|
||||||
|
v
|
||||||
|
User Acceptance
|
||||||
|
|-- Пользователь проверяет исправление
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Commit (во все затронутые проекты)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Refactoring Lifecycle
|
||||||
|
|
||||||
|
```
|
||||||
|
User: "отрефакторить"
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Analysis Phase
|
||||||
|
|-- Анализ кода
|
||||||
|
|-- Определение scope и рисков
|
||||||
|
|-- Создание artifact: pyaqa/refactor/{name}.md (опционально)
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Pre-check
|
||||||
|
|-- Все тесты проходят ДО рефакторинга
|
||||||
|
|-- Фиксация coverage baseline
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Refactoring
|
||||||
|
|-- Пошаговые изменения
|
||||||
|
|-- Проверка тестов после каждого шага
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Post-check
|
||||||
|
|-- Все тесты проходят ПОСЛЕ рефакторинга
|
||||||
|
|-- Coverage не ниже baseline
|
||||||
|
|-- Поведение не изменилось
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Verification
|
||||||
|
|-- Линтеры, type checker
|
||||||
|
|-- Нет новых warnings
|
||||||
|
|
|
||||||
|
v
|
||||||
|
User Acceptance (опционально)
|
||||||
|
|-- Пользователь проверяет, что ничего не сломалось
|
||||||
|
|
|
||||||
|
v
|
||||||
|
Commit (во все затронутые проекты)
|
||||||
|
```
|
||||||
|
|
||||||
### Branch Naming
|
### Branch Naming
|
||||||
- Формат: `feature/{feature-name}`
|
- **Feature**: `feature/{feature-name}` от `dev`
|
||||||
- База: `dev`
|
- **Bugfix**: `bugfix/{bug-name}` от `dev`
|
||||||
|
- **Refactor**: `refactor/{name}` от `dev`
|
||||||
|
|
||||||
### Test Case IDs
|
### Test Case IDs
|
||||||
- `TC-UNIT-NNN` — unit тесты (domain, use cases)
|
- `TC-UNIT-NNN` — unit тесты (domain, use cases)
|
||||||
@@ -419,20 +495,23 @@ Commit (во все затронутые проекты)
|
|||||||
- `TC-E2E-NNN` — End-to-end тесты (Playwright)
|
- `TC-E2E-NNN` — End-to-end тесты (Playwright)
|
||||||
|
|
||||||
### Test Level Selection
|
### Test Level Selection
|
||||||
Все 4 уровня по умолчанию. Можно сокращать в зависимости от фичи:
|
Все 4 уровня по умолчанию. Можно сокращать в зависимости от задачи:
|
||||||
- **Domain-only фича**: только TC-UNIT
|
- **Domain-only фича**: только TC-UNIT
|
||||||
- **API-only фича**: TC-UNIT + TC-API
|
- **API-only фича**: TC-UNIT + TC-API
|
||||||
- **Web UI фича**: TC-UNIT + TC-WEB + TC-E2E
|
- **Web UI фича**: TC-UNIT + TC-WEB + TC-E2E
|
||||||
- **Full-stack фича**: все 4 уровня
|
- **Full-stack фича**: все 4 уровня
|
||||||
|
- **Bugfix**: уровни в зависимости от слоя бага (минимум unit + regression)
|
||||||
|
- **Refactor**: все существующие тесты (unit + api + web + e2e)
|
||||||
|
|
||||||
### Artifact Location
|
### Artifact Location
|
||||||
- **Шаблон**: `pyaqa/feature/TEMPLATE.md`
|
- **Feature**: `pyaqa/feature/TEMPLATE.md` → `pyaqa/feature/{feature-name}.md`
|
||||||
- **Артефакт фичи**: `pyaqa/feature/{feature-name}.md`
|
- **Bugfix**: `pyaqa/bugfix/TEMPLATE.md` → `pyaqa/bugfix/{bug-name}.md`
|
||||||
|
- **Refactor**: `pyaqa/refactor/TEMPLATE.md` → `pyaqa/refactor/{name}.md`
|
||||||
|
|
||||||
### Commit Rules
|
### Commit Rules
|
||||||
При приемке фичи коммитить во ВСЕ затронутые подпроекты:
|
При завершении коммитить во ВСЕ затронутые подпроекты:
|
||||||
1. `blog/` — если затронут
|
1. `blog/` — если изменен
|
||||||
2. `pytfm/` — если затронут
|
2. `pytfm/` — если изменен
|
||||||
3. `pyaqa/` (root) — всегда (обновление ссылок на подпроекты)
|
3. `pyaqa/` (root) — всегда (обновление ссылок на подпроекты)
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Agents MUST consult these files before adding or modifying tests.
|
|||||||
|
|
||||||
### Adding a Feature Test
|
### Adding a Feature Test
|
||||||
|
|
||||||
1. **User triggers**: `"начнем новую фичу"`
|
1. **User triggers**: `"начем новую фичу"`
|
||||||
2. **Agent analyzes**: существующий код, затронутые слои, рекомендует тесткейсы
|
2. **Agent analyzes**: существующий код, затронутые слои, рекомендует тесткейсы
|
||||||
3. **User agrees**: подтверждает или корректирует набор тесткейсов
|
3. **User agrees**: подтверждает или корректирует набор тесткейсов
|
||||||
4. **Agent creates**:
|
4. **Agent creates**:
|
||||||
@@ -78,6 +78,31 @@ Agents MUST consult these files before adding or modifying tests.
|
|||||||
9. **User accepts**: подтверждает приемку
|
9. **User accepts**: подтверждает приемку
|
||||||
10. **Agent commits**: во все затронутые проекты
|
10. **Agent commits**: во все затронутые проекты
|
||||||
|
|
||||||
|
### Bugfix Test Workflow
|
||||||
|
|
||||||
|
1. **User triggers**: `"исправить баг"`
|
||||||
|
2. **Agent analyzes**: воспроизводит баг, определяет root cause
|
||||||
|
3. **Agent creates**: `pyaqa/bugfix/{bug-name}.md` — артефакт бага
|
||||||
|
4. **Agent writes regression test**:
|
||||||
|
- Unit тест, воспроизводящий баг (должен падать)
|
||||||
|
- Дополнительные тесты на уровне бага (API/Web/E2E)
|
||||||
|
5. **Agent fixes**: минимальный фикс
|
||||||
|
6. **Agent verifies**: все тесты проходят, coverage не упал
|
||||||
|
7. **User accepts**: проверяет исправление
|
||||||
|
8. **Agent commits**: во все затронутые проекты
|
||||||
|
|
||||||
|
### Refactor Test Workflow
|
||||||
|
|
||||||
|
1. **User triggers**: `"отрефакторить"`
|
||||||
|
2. **Agent analyzes**: scope рефакторинга, затронутые файлы
|
||||||
|
3. **Agent creates**: `pyaqa/refactor/{name}.md` (опционально)
|
||||||
|
4. **Pre-check**: фиксирует baseline (все тесты проходят, coverage)
|
||||||
|
5. **Agent refactors**: пошаговые изменения
|
||||||
|
6. **Post-check**: все тесты проходят, coverage не ниже baseline
|
||||||
|
7. **Agent verifies**: линтеры, нет новых warnings
|
||||||
|
8. **User accepts**: опционально проверяет поведение
|
||||||
|
9. **Agent commits**: во все затронутые проекты
|
||||||
|
|
||||||
### Test Case Assignment Rules
|
### Test Case Assignment Rules
|
||||||
|
|
||||||
- **TC-UNIT-NNN**: unit тесты (domain, use cases)
|
- **TC-UNIT-NNN**: unit тесты (domain, use cases)
|
||||||
@@ -91,7 +116,7 @@ Agents MUST consult these files before adding or modifying tests.
|
|||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
### TC-UNIT-NNN: Test Name
|
### TC-UNIT-NNN: Test Name
|
||||||
- **Type:** Positive | Negative | Policy
|
- **Type:** Positive | Negative | Policy | Regression
|
||||||
- **Layer:** Unit | API | Web | E2E
|
- **Layer:** Unit | API | Web | E2E
|
||||||
- **File:** `path/to/test.py::TestClass::test_method`
|
- **File:** `path/to/test.py::TestClass::test_method`
|
||||||
- **Expected:** Что ожидается
|
- **Expected:** Что ожидается
|
||||||
@@ -113,6 +138,12 @@ Agents MUST consult these files before adding or modifying tests.
|
|||||||
| Web | 60% | Routes + handlers |
|
| Web | 60% | Routes + handlers |
|
||||||
| E2E | Cover all AC | Все acceptance criteria |
|
| E2E | Cover all AC | Все acceptance criteria |
|
||||||
|
|
||||||
|
### Regression Test Rules
|
||||||
|
|
||||||
|
- **Bugfix**: ДОЛЖЕН включать regression test (unit минимум)
|
||||||
|
- **Refactor**: ВСЕ существующие тесты должны проходить ДО и ПОСЛЕ
|
||||||
|
- **Coverage**: Не должен упасть после багфикса или рефакторинга
|
||||||
|
|
||||||
## Anti-Patterns
|
## Anti-Patterns
|
||||||
|
|
||||||
- Do NOT add `@pytest.mark.asyncio` to `async def` tests (auto mode handles it)
|
- Do NOT add `@pytest.mark.asyncio` to `async def` tests (auto mode handles it)
|
||||||
@@ -121,6 +152,8 @@ Agents MUST consult these files before adding or modifying tests.
|
|||||||
- Do NOT put fixtures in `__init__.py` — use `conftest.py`
|
- Do NOT put fixtures in `__init__.py` — use `conftest.py`
|
||||||
- Do NOT write implementation before tests (no TDD bypass)
|
- Do NOT write implementation before tests (no TDD bypass)
|
||||||
- Do NOT skip RED phase (tests must fail before implementation)
|
- Do NOT skip RED phase (tests must fail before implementation)
|
||||||
|
- Do NOT commit багфикс без regression test
|
||||||
|
- Do NOT commit рефакторинг с упавшим coverage
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user