# CHANGELOG Generation - VoIdea **Дата:** 2026-05-10 **Статус:** Backlog --- ## Обзор Автоматическая генерация CHANGELOG на основе коммитов и conventional commits. --- ## Структура файлов ``` CHANGELOG/ ├── v1.0.md # При смене MAJOR (1.0.0 -> 1.1.0 -> ...) ├── v1.1.md # При смене MINOR ├── v2.0.md # При смене MAJOR └── ... ``` ### Правила - **MAJOR (X)** → новый файл vX.0.md - **MINOR (Y)** → новый файл vX.Y.md - **PATCH (Z)** → добавляется в конец существующего файла --- ## Формат CHANGELOG файла ```markdown # Changelog v1.0 ## [1.0.5] - 2026-05-10 ### Added - Feature X (commit: abc123) ### Fixed - Bug Y (commit: def456) ## [1.0.4] - 2026-05-09 ### Added - ... ## [1.0.0] - 2026-05-01 ### Added - Initial release ``` --- ## Conventional Commits | Тип | Влияние | |-----|---------| | `feat:` | Added (MINOR) | | `fix:` | Fixed (PATCH) | | `docs:` | Changed (no version) | | `refactor:` | Changed (no version) | | `test:` | Changed (no version) | | `chore:` | Changed (no version) | | `BREAKING:` | Major (MAJOR) | --- ## Генерация ### SpecAgent responsibilities 1. **Мониторинг тегов** - При создании нового тега → запуск генерации 2. **Анализ коммитов** - Парсинг conventional commits - Группировка по типу 3. **Генерация файла** - Определение какой файл создать/обновить - Формирование записей 4. **Проверка** - Валидация формата - Сохранение в CHANGELOG/ --- ## CI/CD Integration ### При push в main ```yaml # .github/workflows/changelog.yml name: Changelog on: push: branches: [main] jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Generate Changelog run: python scripts/generate_changelog.py - name: Commit run: | git add CHANGELOG/ git commit -m "docs: update changelog" git push ``` ### При создании тега ```python # scripts/generate_changelog.py import git from pathlib import Path def generate_changelog(tag: str): commits = get_commits_since_last_tag() changes = { 'added': [], 'fixed': [], 'changed': [] } for commit in commits: type, message = parse_conventional_commit(commit.message) changes[type].append(f"- {message} ({commit.hash[:7]})") update_changelog_file(tag, changes) ``` --- ## Ручная генерация ```bash # При необходимости python scripts/generate_changelog.py --tag 1.0.0 --from 0.9.0 ``` --- ## Автоматическая документация После генерации: 1. DocAgent обновляет PROJECT_GUIDE.md (ссылка на новую версию) 2. SpecAgent обновляет project.json 3. Уведомление в админ-панель --- ## TODO - [ ] Создать scripts/generate_changelog.py - [ ] Настроить CI/CD workflow - [ ] Интегрировать со SpecAgent - [ ] Добавить тесты - [ ] Документировать процесс --- *Создано: 2026-05-10* *Управляется SpecAgent*