type: standard
aspect: lifecycle
title: "Общая модель стадий жизненного цикла"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 1.0.0
Дата: 2026-03-07
Универсальная модель стадий для всех артефактов платформы.
ИДЕЯ → РАЗРАБОТКА → ТЕСТИРОВАНИЕ → ПРОДАКШН → АРХИВ
Каждая сущность проходит через стадии жизненного цикла.
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ DRAFT │ → │ DEV │ → │ TEST │ → │ PROD │ → │ ARCHIVE │
│ Черновик │ │ Разработка│ │ Тестовая │ │ Продакшн │ │ Архив │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│ ↑ ↑
└──────────────────────────────────────────────┘ │
ROLLBACK │
│
┌──────────────────────────────────────────────────────────────┘
│ DEPRECATED
| Стадия | Статус | Описание | Действия |
|---|---|---|---|
| DRAFT | draft |
Черновик, идея, планирование | Проектирование, документация |
| DEV | development |
Активная разработка | Код, тесты, интеграция |
| TEST | testing |
Тестирование, проверка | QA, staging, review |
| PROD | active |
Продакшн, эксплуатация | Мониторинг, поддержка |
| ARCHIVE | archived |
Архив, не используется | Хранение, документирование |
| Статус | Когда | Описание |
|---|---|---|
deprecated |
Перед ARCHIVE | Устарело, но ещё работает |
suspended |
В любой момент | Приостановлено |
failed |
После TEST | Не прошло тестирование |
cancelled |
В любой момент | Отменено |
DRAFT → DEV → TEST → PROD → ARCHIVE
Условия перехода:
| Переход | Условие | Проверка |
|---|---|---|
| DRAFT → DEV | План утверждён | ✅ Требования определены |
| DEV → TEST | Код готов | ✅ Тесты написаны, сборка успешна |
| TEST → PROD | Тесты пройдены | ✅ QA одобрено, деплой готов |
| PROD → ARCHIVE | Не используется | ✅ Замена готова, данные мигрированы |
PROD → TEST → DEV → DRAFT
Причины отката:
| Переход | Причина | Действие |
|---|---|---|
| PROD → TEST | Критический баг | Откатить на предыдущую версию |
| TEST → DEV | Тесты не прошли | Исправить код |
| DEV → DRAFT | Архитектура неверна | Переработать дизайн |
ANY → SUSPENDED # Приостановка
SUSPENDED → ANY # Возобновление
ANY → CANCELLED # Отмена
TEST → FAILED # Провал тестирования
PROD → DEPRECATED # Устаревание
DRAFT: Идея проекта, бриф
↓
DEV: Разработка MVP
↓
TEST: Пилот, альфа/бета
↓
PROD: Запуск, эксплуатация
↓
ARCHIVE: Проект завершён
Подробнее: ../arh/lifecycle-project.md
DRAFT: Проектирование API
↓
DEV: Написание кода
↓
TEST: Unit/Integration тесты
↓
PROD: Деплой в продакшн
↓
ARCHIVE: Код устарел
Подробнее: lifecycle-code.md
DRAFT: Схема данных
↓
DEV: Тестовые данные
↓
TEST: Валидация на staging
↓
PROD: Продакшн данные
↓
ARCHIVE: Старые данные
Подробнее: lifecycle-data.md
DRAFT: Черновик документа
↓
DEV: Написание, редактирование
↓
TEST: Review, правки
↓
PROD: Опубликовано
↓
ARCHIVE: Устарело
Подробнее: lifecycle-artifact.md
Папки по стадиям:
projects/
├── draft/ ← Черновики
├── dev/ ← В разработке
├── active/ ← Продакшн
└── archive/ ← Архив
Префиксы файлов:
DRAFT_project.md
DEV_module.py
TEST_feature.js
PROD_service.py
ARCHIVE_old_version.py
name: "my-project"
status: "active" # draft | development | testing | active | archived
lifecycle_stage: "prod" # draft | dev | test | prod | archive
version: "1.0.0"
Ветки:
draft/* # Черновики
dev/* # Разработка
test/* # Тестирование
main # Продакшн
archive/* # Архив
Теги:
v1.0.0-draft
v1.0.0-beta
v1.0.0 # prod
v1.0.0-archived
CREATE TABLE projects (
id INT PRIMARY KEY,
name VARCHAR(255),
status VARCHAR(50), -- draft, development, testing, active, archived
lifecycle_stage VARCHAR(20),
created_at TIMESTAMP,
updated_at TIMESTAMP
);
# .github/workflows/lifecycle.yml
name: Lifecycle Management
on:
push:
branches: [dev, test, main]
jobs:
transition:
runs-on: ubuntu-latest
steps:
- name: DEV → TEST
if: github.ref == 'refs/heads/test'
run: |
npm test
npm run build
- name: TEST → PROD
if: github.ref == 'refs/heads/main'
run: |
npm run deploy:prod
#!/bin/bash
# .git/hooks/pre-push
BRANCH=$(git branch --show-current)
if [ "$BRANCH" = "main" ]; then
echo "Pushing to PROD. Running checks..."
npm test || exit 1
npm run lint || exit 1
fi
| Метрика | Описание | Норма |
|---|---|---|
| Time in DRAFT | Время в черновиках | < 1 недели |
| Time in DEV | Время разработки | < 2 недель |
| Time in TEST | Время тестирования | < 3 дней |
| Time in PROD | Время в продакшне | > 6 месяцев |
| Failed transitions | Откаты назад | < 10% |
ПРОЕКТЫ ПО СТАДИЯМ:
┌─────────────────────────────────────┐
│ DRAFT: ████████░░ 5 проектов (20%) │
│ DEV: ██████████ 10 проектов (40%)│
│ TEST: ████░░░░░░ 3 проекта (12%) │
│ PROD: ██████░░░░ 5 проектов (20%) │
│ ARCHIVE:██░░░░░░░░ 2 проекта (8%) │
└─────────────────────────────────────┘
Нельзя пропускать стадии:
❌ DRAFT → PROD (без DEV и TEST)
✅ DRAFT → DEV → TEST → PROD
Откат только на одну стадию назад:
❌ PROD → DRAFT (слишком далеко)
✅ PROD → TEST → DEV (постепенно)
Из ARCHIVE нельзя вернуть в PROD:
❌ ARCHIVE → PROD
✅ ARCHIVE → (создать новый проект)
| Стадия | Проверка | Инструмент |
|---|---|---|
| DEV → TEST | Тесты пройдены | npm test, pytest |
| TEST → PROD | Review сделан | GitHub PR approval |
| PROD → ARCHIVE | Замена готова | Checklist |
Обновлено: 2026-03-07