architect/arh/standards/structure-old/DOCUMENT_SEQUENCE.md

DOCUMENT SEQUENCE — Последовательность создания документов

Когда и зачем создаётся каждый документ

Версия: 1.0.0
Дата: 2026-02-08


МАСТЕР-ФАЙЛ

index.yaml — главный файл каждого уровня

Это мастер-файл! Создаётся ПЕРВЫМ на каждом уровне.

Зачем:
- Метаданные (type, version, status)
- Навигация (ссылки на дочерние)
- Конфигурация (окружения, зависимости)

Когда создавать:
- ✅ ВСЕГДА первым делом на новом уровне
- ✅ Перед любыми другими документами

Пример organization/index.yaml:

type: organization
name: ЛидерАвто
industry: retail
domains:
  - biz
  - fin
  - it

Пример module/index.yaml:

type: module
name: catalog
purpose: Каталог товаров
dependencies:
  - import
  - search
version: 1.0.0

Правило: Нет index.yaml = уровень не существует официально


ПОСЛЕДОВАТЕЛЬНОСТЬ СОЗДАНИЯ (временная шкала)

Этап 0: Начало (5 минут)

Триггер: Новый проект/модуль/компонент

Создаём:

1. index.yaml           МАСТЕР-ФАЙЛ (обязательно)

Содержимое index.yaml:
- type (какой уровень)
- name (название)
- status (статус)
- version (если project/module)

Пример:

type: module
name: catalog
status: planning

Этап 1: Бизнес-идея (15-30 минут)

Триггер: Нужно объяснить ЗАЧЕМ это нужно

Создаём:

2. .biz.md              ЗАЧЕМ (бизнес-ценность)

Зачем .biz:
- Объяснить ЗАЧЕМ это нужно
- Бизнес-ценность
- Требования верхнего уровня
- Метрики успеха

Когда создавать:
- ✅ Новый модуль — объяснить зачем
- ✅ Новый проект — бизнес-требования
- ✅ Новая компания — видение
- ❌ Компонент — слишком мелкий уровень
- ❌ Рефакторинг — нет новой ценности

Содержимое:

# Назначение

Краткое описание зачем.

## Бизнес-задача

Какую проблему решаем.

## Ценность

- Что получим
- Метрики успеха

## Требования

- Требование 1
- Требование 2

Пример использования:

Ситуация: Начинаем модуль catalog
Создаём: catalog/purpose.biz.md
Содержимое: "Каталог товаров с фильтрами. Ценность: конверсия +30%"

Этап 2: Архитектура/Дизайн (30-60 минут)

Триггер: Понятно ЗАЧЕМ, нужно определить КАК (общее)

Создаём один из:

Вариант A: .arc.md (для project/domain)

3a. .arc.md             КАК устроена система (архитектура)

Зачем .arc:
- Техстек (технологии)
- Компоненты системы
- Инфраструктура
- Интеграции

Когда создавать:
- ✅ Новый project — техстек и архитектура
- ✅ Domain (it) — общий техстек направления
- ❌ Module — слишком детально, используй .dsg
- ❌ Organization — слишком высокий уровень

Содержимое:

# Архитектура

## Технологии

- Backend: PHP
- Frontend: JS
- БД: MySQL

## Компоненты

1. Модуль A
2. Модуль B

## Интеграции

- Система X через API

Вариант B: .dsg.md (для module)

3b. .dsg.md             КАК устроен модуль (дизайн)

Зачем .dsg:
- Техническое решение
- Компоненты модуля
- Данные и таблицы
- Алгоритм работы

Когда создавать:
- ✅ Новый модуль — дизайн решения
- ✅ Сложный модуль — много компонентов
- ❌ Простой модуль — можно пропустить, сразу .spc
- ❌ Project — используй .arc

Содержимое:

# Дизайн: Название

## Компоненты

1. Products — управление товарами
2. Filters — фильтрация

## Данные

| Компонент | Таблица | API |
|-----------|---------|-----|
| Products | products | fn_get_products() |

## Алгоритм

1. Получить фильтры
2. Построить SQL
3. Вернуть результат

Правило выбора:
- Project/Domain → .arc.md (архитектура системы)
- Module → .dsg.md (дизайн модуля)


Этап 3: Спецификации (1-3 часа)

Триггер: Понятно КАК общее, нужны ДЕТАЛИ

Создаём:

4. .spc.md              ЧТО ДЕЛАЕТ (детально)

Зачем .spc:
- Детальное описание функций
- Параметры и возвращаемые значения
- SQL запросы
- Алгоритмы
- Тесты (чек-листы)

Когда создавать:
- ✅ ВСЕГДА для module (основной документ)
- ✅ Для component если сложный
- ❌ Для project/domain (слишком высокий уровень)

Дробление:
Если модуль большой → несколько .spc файлов:

catalog/
├── catalog-products.spc.md     ← спека товаров
├── catalog-filters.spc.md      ← спека фильтров
└── catalog-search.spc.md       ← спека поиска

Содержимое:

# Спецификация: Products

## Функция

### fn_get_products($params)

**Параметры:**
- `$params` (array) — фильтры

**Возвращает:**
- array — список товаров

**SQL:**
```sql
SELECT * FROM products
WHERE category_id = ?

Тесты

**Правило:** .spc = обязательный документ для модуля

---

### Этап 4: API документация (30-60 минут)

**Триггер:** Спеки готовы, нужно задокументировать интерфейс

**Создаём:**
  1. .api.md ← КАК ИСПОЛЬЗОВАТЬ (интерфейс)
**Зачем .api:**
- Публичные функции модуля
- Примеры использования
- Параметры и возвраты (короткая форма)
- Шаблоны (если есть)

**Когда создавать:**
-  Module с публичным API
-  Module используется другими модулями
-  Component (API на уровне модуля)
-  Project (нет кода)

**Содержимое:**
```markdown
# API: Catalog

## Функции

### fn_get_products($params)
Получить товары с фильтрацией

### fn_get_categories()
Получить категории

## Использование

```php
$products = fn_get_products([
    'category_id' => 5,
    'brand' => 'MAN'
]);
**Отличие от .spc:**
- `.spc` — КАК работает ВНУТРИ (алгоритм, SQL)
- `.api` — КАК использовать СНАРУЖИ (примеры)

---

### Этап 5: Промпты для AI (20-40 минут)

**Триггер:** Спеки готовы, нужно СГЕНЕРИРОВАТЬ код

**Создаём:**
  1. .pmt.md ← ИНСТРУКЦИИ для AI-кодера
**Зачем .pmt:**
- Инструкции для AI
- Требования к коду
- Что использовать
- Что НЕ использовать

**Когда создавать:**
- ✅ Генерируем код AI
- ✅ Сложная логика (нужны детали)
- ❌ Пишем код вручную
- ❌ Тривиальный код

**Дробление:**
Один промпт = одна задача для AI:

catalog/
├── products-create.pmt.md ← создать Products
├── filters-create.pmt.md ← создать Filters
└── search-create.pmt.md ← создать Search

**Содержимое:**
```markdown
# Промпт: Создать Products

Создай класс Products в `src/Products.php`

## Требования

1. По спеке catalog-products.spc.md
2. PDO prepared statements
3. Типизация

## Использовать

- db_get_array()
- fn_paginate()

## НЕ использовать

- Прямой SQL
- eval()

Правило: .pmt создаётся ПЕРЕД генерацией кода


Этап 6: Тесты (30-60 минут)

Триггер: Код готов или ПЕРЕД кодом (TDD)

Создаём:

7. .tst.md              ТЕСТ-ПЛАН

Зачем .tst:
- Unit-тесты (чек-лист)
- Интеграционные тесты
- Ручные тесты (сценарии)
- Критерии прохождения

Когда создавать:
- ✅ Module (рекомендуется)
- ✅ Сложный component
- ❌ Простой component
- ❌ Project/Domain (тесты в модулях)

Содержимое:

# Тесты: Catalog

## Unit-тесты

- [ ] fn_get_products() возвращает массив
- [ ] Фильтр по категории работает

## Интеграционные

- [ ] Товары из БД отображаются
- [ ] Фильтры применяются

## Ручные

1. Открыть /catalog
2. Выбрать категорию
3. Проверить: товары показаны

## Критерии

- Все unit пройдены
- Все ручные пройдены

Правило: .tst = опционально, но рекомендуется для модулей


Этап 7: Код (часы/дни)

Триггер: Всё спроектировано, можно кодить

Создаём:

8. src/                 КОД

Зачем src/:
- Реализация функций
- Классы и компоненты
- Исполняемый код

Когда создавать:
- ✅ Module — основной код
- ✅ Component — компонент
- ✅ Engine — код движка
- ❌ Organization/Domain/Project (нет кода)

Структура:

src/
├── Products.php
├── Filters.php
└── Search.php

Правило: Код создаётся ПОСЛЕДНИМ (после документов)


ПАРАЛЛЕЛЬНЫЕ ДОКУМЕНТЫ (когда нужно)

Эти документы создаются не в прогрессии, а когда появляется триггер:

.ops.md (операции)

Триггер: Нужно описать процессы/деплой

Создаём:

.ops.md                 ПРОЦЕССЫ

Зачем:
- Инструкции деплоя
- Процессы (backup, monitoring)
- Чеклисты операций

Когда:
- ✅ Project перед деплоем → deployment.ops.md
- ✅ Organization → processes.ops.md
- ✅ Domain → deployment.ops.md
- ❌ Module (операции на уровне проекта)

.str.md (структура)

Триггер: Нужно показать оргструктуру

Создаём:

.str.md                 СТРУКТУРА

Зачем:
- Оргструктура
- Отделы и роли

Когда:
- ✅ Organization → departments.str.md
- ❌ Другие уровни (нет оргструктуры)

.prj.md (план проекта)

Триггер: Нужен роадмап/план

Создаём:

.prj.md                 ПЛАН

Зачем:
- Роадмап
- Milestone'ы
- График работ

Когда:
- ✅ Project → roadmap.prj.md
- ❌ Module (план на уровне проекта)


ДЕРЕВО РЕШЕНИЙ

НАЧИНАЕМ НОВЫЙ УРОВЕНЬ
    ↓
1. Создать index.yaml          ← ВСЕГДА первым
    ↓
2. Нужно объяснить ЗАЧЕМ?
    ├─→ ДА → .biz.md
    └─→ НЕТ → пропустить
    ↓
3. Какой уровень?
    ├─→ project/domain → .arc.md (архитектура)
    ├─→ module → .dsg.md (дизайн)
    └─→ component → пропустить
    ↓
4. Нужны детали?
    ├─→ ДА → .spc.md (спецификации)
    └─→ НЕТ → пропустить
    ↓
5. Есть публичный API?
    ├─→ ДА → .api.md
    └─→ НЕТ → пропустить
    ↓
6. Генерируем AI?
    ├─→ ДА → .pmt.md (промпты)
    └─→ НЕТ → пропустить
    ↓
7. Нужны тесты?
    ├─→ ДА → .tst.md
    └─→ НЕТ → пропустить
    ↓
8. Есть код?
    ├─→ ДА → src/
    └─→ НЕТ → готово
    ↓
ПАРАЛЛЕЛЬНО (когда нужно):
    ├─→ Деплой? → .ops.md
    ├─→ Оргструктура? → .str.md
    └─→ План проекта? → .prj.md

МАТРИЦА: ЧТО СОЗДАВАТЬ КОГДА

Документ Триггер Обязательно? Уровни
index.yaml Новый уровень ✅ ВСЕГДА все
.biz Нужно объяснить зачем ✅ Рекомендуется org, domain, project, module
.arc Нужна архитектура системы ✅ Да domain, project
.dsg Нужно спроектировать модуль ✅ Да (если сложный) module
.spc Нужны детали функций ✅ ОБЯЗАТЕЛЬНО module, component
.api Есть публичный интерфейс ⚠️ Опционально module
.pmt Генерируем AI ⚠️ Опционально module, component
.tst Нужны тесты ⚠️ Рекомендуется module
src/ Есть код ✅ Да engine, module, component
.ops Нужны процессы/деплой ⚠️ Когда нужно org, domain, project
.str Нужна оргструктура ⚠️ Когда нужно org
.prj Нужен план проекта ⚠️ Когда нужно project

ПРИМЕРЫ ПОСЛЕДОВАТЕЛЬНОСТИ

Пример 1: Простой модуль (минимум)

День 1 (10 мин):
1. catalog/index.yaml          ← мастер-файл
2. catalog/purpose.biz.md      ← зачем
3. catalog/catalog.spc.md      ← что делает

День 2 (2 часа):
4. catalog/src/Catalog.php     ← код

ИТОГО: 4 файла

Пример 2: Сложный модуль (полный)

День 1 (30 мин):
1. catalog/index.yaml          ← мастер-файл
2. catalog/purpose.biz.md      ← зачем

День 2 (1 час):
3. catalog/design.dsg.md       ← как устроен

День 3 (3 часа):
4. catalog/catalog-products.spc.md
5. catalog/catalog-filters.spc.md
6. catalog/catalog-search.spc.md

День 4 (1 час):
7. catalog/api.api.md          ← API

День 5 (1 час):
8. catalog/products-create.pmt.md
9. catalog/filters-create.pmt.md
10. catalog/search-create.pmt.md

День 6 (4 часа):
11. catalog/src/Products.php   ← код по промптам
12. catalog/src/Filters.php
13. catalog/src/Search.php

День 7 (1 час):
14. catalog/test.tst.md        ← тесты

ИТОГО: 14 файлов за неделю

Пример 3: Новый проект

День 1 (1 час):
1. lideravto-2026/index.yaml           ← мастер-файл
2. lideravto-2026/requirements.biz.md  ← требования

День 2 (2 часа):
3. lideravto-2026/roadmap.prj.md       ← план
4. lideravto-2026/architecture.arc.md  ← архитектура

День 3-7:
[Создание модулей внутри проекта]

Перед деплоем:
5. lideravto-2026/deployment.ops.md    ← инструкции

ИТОГО: 5 файлов проекта + файлы модулей

ЧАСТЫЕ ОШИБКИ

Ошибка 1: Забыли index.yaml

Неправильно:

catalog/
├── purpose.biz.md
└── src/

Правильно:

catalog/
├── index.yaml         ← ПЕРВЫМ ДЕЛОМ!
├── purpose.biz.md
└── src/

Ошибка 2: Создали все файлы сразу

Неправильно:

День 1:
- index.yaml
- purpose.biz.md
- design.dsg.md
- spec.spc.md
- api.api.md
- test.tst.md
- deployment.ops.md   ← Зачем?!

Правильно:

День 1:
- index.yaml
- purpose.biz.md

День 2:
- design.dsg.md

День 3:
- spec.spc.md

... по мере необходимости

Ошибка 3: Код перед документами

Неправильно:

1. src/Products.php     сразу код
2. spec.spc.md          потом спека?!

Правильно:

1. index.yaml
2. purpose.biz.md
3. design.dsg.md
4. spec.spc.md
5. src/Products.php     код ПОСЛЕДНИМ

РОЛЬ МАСТЕР-ФАЙЛА (index.yaml)

Зачем нужен

index.yaml = точка входа уровня

  1. Метаданные:
    yaml type: module version: 1.0.0 status: development

  2. Навигация:
    ```yaml
    dependencies:

  3. Конфигурация:
    ```yaml
    environments:

Связь с документами

index.yaml НЕ дублирует документы!

index.yaml:
  type: module
  purpose: Каталог товаров     краткое (1 строка)

purpose.biz.md:
  # Назначение

  Каталог товаров...           полное (много текста)

  ## Бизнес-задача
  ...

Правило:
- index.yaml — краткие метаданные
- .md файлы — полное описание

Автогенерация навигации

Можно генерировать из index.yaml:

# catalog/index.yaml
type: module
children:
  - products
  - filters
  - search

Генерируем README.md:

# Catalog

## Компоненты

- [Products](src/Products/)
- [Filters](src/Filters/)
- [Search](src/Search/)

ЧЕКЛИСТ СОЗДАНИЯ УРОВНЯ

Шаг 1: Мастер-файл
- [ ] Создан index.yaml
- [ ] Указан type
- [ ] Указан status
- [ ] Указаны зависимости (если есть)

Шаг 2: Бизнес
- [ ] Нужно объяснить зачем? → .biz.md
- [ ] Описана ценность
- [ ] Описаны требования

Шаг 3: Архитектура/Дизайн
- [ ] Project/Domain? → .arc.md
- [ ] Module? → .dsg.md
- [ ] Описаны компоненты
- [ ] Описаны данные

Шаг 4: Спецификации
- [ ] Созданы .spc.md для функций
- [ ] Описаны параметры
- [ ] Описаны алгоритмы
- [ ] Добавлены чек-листы тестов

Шаг 5: API (если нужно)
- [ ] Создан .api.md
- [ ] Описаны функции
- [ ] Добавлены примеры

Шаг 6: Промпты (если AI)
- [ ] Созданы .pmt.md
- [ ] Указано что использовать
- [ ] Указано что НЕ использовать

Шаг 7: Тесты (рекомендуется)
- [ ] Создан .tst.md
- [ ] Unit-тесты
- [ ] Интеграционные
- [ ] Ручные

Шаг 8: Код
- [ ] Создана папка src/
- [ ] Реализованы функции
- [ ] Код по промптам/спекам

Параллельно (когда нужно):
- [ ] Деплой? → .ops.md
- [ ] План? → .prj.md
- [ ] Структура? → .str.md


ИТОГ

Обязательный минимум

ЛЮБОЙ УРОВЕНЬ:
1. index.yaml          ← ВСЕГДА

MODULE (обязательно):
1. index.yaml
2. .spc.md             ← минимум
3. src/                ← код

MODULE (рекомендуется):
1. index.yaml
2. purpose.biz.md
3. design.dsg.md
4. .spc.md
5. api.api.md
6. test.tst.md
7. src/

Прогрессия

index.yaml     День 0 (мастер)
    
.biz           День 1 (зачем)
    
.arc/.dsg      День 2 (как общее)
    
.spc           День 3-4 (детали)
    
.api           День 5 (интерфейс)
    
.pmt           День 6 (инструкции)
    
src/           День 7+ (код)

Параллельно:
.ops, .str, .prj, .tst  когда нужно

Правило

Создавай документы последовательно, по мере необходимости!

НЕ создавай всё сразу. Каждый документ появляется когда нужен.


Версия: 1.0.0
Связанные стандарты:
- FOLDERS_FILES_STRUCTURE.md
- LAYERS_EXPLAINED.md
- LAYERS_GUIDE.md