architect/_archive/2025-11-26-cleanup/system-docs/architecture/7-temporal.md

Временное измерение

Версия: 1.0.0
Дата: 2025-11-19


Что описывает это измерение

Вопрос: Как система эволюционирует во времени?

Ответ:
- Версионирование
- Жизненный цикл
- История изменений
- Миграции

НЕ описывает:
- Где хранятся версии (структурное)
- Что меняется (функциональное)
- Как мигрировать (процессное)


Версионирование

Семантическое версионирование

Формат: MAJOR.MINOR.PATCH

1.0.0  1.1.0  1.1.1  2.0.0

Правила:
- MAJOR — несовместимые изменения API
- MINOR — новая функциональность (обратно совместимая)
- PATCH — исправления багов

Что версионируется

Документы:

# В YAML файле
version: "1.0.0"
updated: "2025-11-19"

Код:

git tag v1.0.0
git push --tags

Платформа:

platform/     # Platform v1
platform-v2/  # Platform v2

API:

/api/v1/products  # API v1
/api/v2/products  # API v2

Жизненный цикл проекта

Состояния

planning →
  development →
    testing →
      staging →
        production →
          archived

Длительность (типичная)

planning: 7-14 дней
- Сбор требований
- Проектирование
- Написание спецификации

development: 30-60 дней
- Реализация функционала
- Итеративная разработка
- Code reviews

testing: 7-14 дней
- Unit тесты
- Integration тесты
- Исправление багов

staging: 3-7 дней
- UAT (User Acceptance Testing)
- Нагрузочное тестирование
- Финальные правки

production: бесконечно
- Работа в продакшене
- Мониторинг
- Поддержка

archived: бесконечно
- Хранение истории
- Доступ для справки
- Нет активной разработки


Жизненный цикл документа

Состояния

Draft → Review → Active → Deprecated → Archived

Переходы

Draft → Review:
- Документ написан
- Готов к ревью

Review → Active:
- Ревью пройдено
- Одобрено к использованию

Active → Deprecated:
- Появилась новая версия
- Старая ещё поддерживается

Deprecated → Archived:
- Поддержка прекращена
- Только для истории


История изменений

Git

Commits:

git log --oneline
# abc123 feat: add export to Excel
# def456 fix: correct date formatting
# ghi789 docs: update README

Branching:

main
├── feature/new-function
├── bugfix/date-issue
└── release/v1.1.0

Tags:

git tag
# v1.0.0
# v1.1.0
# v2.0.0

Changelog

Формат:

# Changelog

## [1.1.0] - 2025-11-19
### Added
- Export to Excel функция

### Fixed
- Форматирование дат

## [1.0.0] - 2025-10-15
### Added
- Начальный релиз

Миграции

Стратегия поэтапной миграции

10 стадий:
1. Инвентаризация (что есть)
2. Анализ (что менять)
3. Планирование (как менять)
4. Подготовка (создание структуры)
5. Staging (тестирование)
6. Валидация (проверка)
7. Миграция (переключение)
8. Верификация (проверка работы)
9. Архивирование (сохранение старого)
10. Финализация (очистка)

Чекпоинты

После каждой стадии:

git add .
git commit -m "checkpoint: migration stage 5 completed"

Rollback при проблемах:

git reset --hard <checkpoint_hash>

Обратная совместимость

Принцип

Идея: Старая версия продолжает работать параллельно с новой

Реализация

Platform v1 и v2:

platform/      # v1 продолжает работать
platform-v2/   # v2 разрабатывается
projects/      # Проекты на v1
projects-v2/   # Новые проекты на v2 (будущее)

API:

/api/v1/  # Старый API
/api/v2/  # Новый API

Оба доступны одновременно.

Deprecation Policy

Этапы:
1. Announce — объявить устаревание
2. Deprecate — пометить как deprecated
3. Support Period — поддержка N месяцев
4. Remove — удалить/архивировать

Пример:

2025-11: Announce "API v1 deprecated"
2025-12 - 2026-06: Support period (6 месяцев)
2026-07: Remove API v1

Архивирование

Что архивировать

Где хранить

archive/
├── 2025-11-09-marketplace-old/
├── old-projector/
└── ARCHITECTURE_v2_DRAFT.md

Формат

Папки:

archive/{YYYY-MM-DD}-{name}/

Файлы:

{name}_archived_{YYYY-MM-DD}.md

Сохранение метаданных

# archive/metadata.yaml
archives:
  - name: "marketplace-old"
    date: "2025-11-09"
    reason: "Полностью переписан на v2"
    original: "projects/marketplace/"

Восстановление из истории

Git

Восстановить файл:

git checkout <commit_hash> -- path/to/file

Восстановить весь проект:

git checkout <commit_hash>
# или
git checkout <tag_name>  # v1.0.0

Архив

Распаковать:

cd archive/
tar -xzf marketplace-v1.tar.gz

Временные метки

Обязательные поля

version: "1.0.0"
updated: "2025-11-19"  # ← дата последнего обновления

Дополнительные

created: "2025-10-15"   # Дата создания
deprecated: "2026-01-01" # Дата устаревания
archived: "2026-07-01"   # Дата архивирования

Формат

ISO 8601:

YYYY-MM-DD
2025-11-19

С временем (опц):

YYYY-MM-DDTHH:MM:SS
2025-11-19T15:30:00

Следующее измерение

Следующее: 8-spatial.md — распределение по серверам

Назад: 6-information.md — информационное измерение