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

DOCUMENT-DRIVEN DEVELOPMENT (DDD)

Версия: 1.0.0
Дата: 2026-02-07
Статус: Active

НАЗНАЧЕНИЕ

Система организации разработки через документы: от бизнес-идеи до кода.

Принцип: Документы трансформируются по слоям (business → specs → prompts → code)


КОНЦЕПЦИЯ

Две оси

                СЛОИ (горизонталь)
        business  specs  prompts  code
                                    
org    ─────┼────────┼────────┼────────┼────
                                       
domain                                 
                                       
project                                  УРОВНИ
                                         (вертикаль)
tool                                   
                                       
module                                 
                                       
component                              
            └───────────────────────────┘

ОСЬ 1: УРОВНИ (вертикаль детализации)
- organization → domain → project → tool → module → component

ОСЬ 2: СЛОИ (горизонталь стадий)
- business → design → specs → prompts → code


УРОВНИ ДЕТАЛИЗАЦИИ

Уровень Тип Что это Пример
1 organization Организация, компания lideravto
2 domain Направление, домен it/web/cscart
3 project Проект, система catalog-system
4 tool Инструмент, подсистема import-system
5 module Модуль, пакет lider_setup
6 component Компонент, класс feature-creator

СЛОИ ДОКУМЕНТОВ

Слой Расширение Описание Уровни
business .biz.md Бизнес-требования, назначение org, domain, project, tool, module
operations .ops.md Бизнес-процессы org
structure .str.md Структура организации org
project .prj.md Описание проекта project
architecture .arc.md Архитектура domain, project
design .dsg.md Техническое решение tool, module
specs .spc.md Спецификации tool, module, component
api .api.md API документация tool, module
prompts .pmt.md Промпты для кода module, component
test .tst.md Тесты module

СТРУКТУРА ПАПОК

Правило

{entity}/
├── index.yaml            Метаданные (type, children)
├── {name}.{type}.md      Документы (файлы)
├── src/                  Код (папка)
└── {child}/              Дочерние сущности (папки)

Принцип:
- Файлы .md и .yaml = документы этого уровня
- Папка src/ = код этого уровня
- Папки остальные = дочерние сущности


ИМЕНОВАНИЕ ФАЙЛОВ

Формат

{name}.{layer}.md
{name}-{detail}.{layer}.md

Части:
- name — название документа (features, categories, install)
- detail — уточнение (create, update, delete) — опционально
- layer — тип слоя (biz, spc, pmt)

Примеры

purpose.biz.md                    ← Назначение
spec-features.spc.md              ← Спецификация features
spec-features-create.spc.md       ← Детали создания
prompt-install.pmt.md             ← Промпт установки
api.api.md                        ← API документация
test.tst.md                       ← Тесты

Правило префиксов

БЕЗ префикса модуля (файл внутри папки модуля):

lider_setup/spec-features.spc.md     ✅
lider_setup/lider-setup-spec.spc.md  ❌ избыточно

СТРУКТУРЫ ПО ТИПАМ

ORGANIZATION (1)

lideravto/
├── index.yaml
├── vision.biz.md
├── strategy.biz.md
├── processes.ops.md
├── departments.str.md
├── it/                     ← domain
├── sales/                  ← domain
└── logistics/              ← domain

index.yaml:

type: organization

Слои: .biz, .ops, .str
Код: нет
Дочерние: домены


DOMAIN (2)

it/web/cscart/
├── index.yaml
├── requirements.biz.md
├── tech-stack.arc.md
├── infrastructure.arc.md
├── catalog-system/         ← project
└── crm-integration/        ← project

index.yaml:

type: domain

Слои: .biz, .arc
Код: нет
Дочерние: проекты


PROJECT (3)

catalog-system/
├── index.yaml
├── brief.biz.md
├── value.biz.md
├── project.prj.md
├── roadmap.prj.md
├── architecture.arc.md
├── components.arc.md
├── src/                     код проекта (опционально)
   └── lib/
├── import-system/           tool
└── catalog-manager/         tool

index.yaml:

type: project
children: [import-system, catalog-manager]

Слои: .biz, .prj, .arc
Код: опционально в src/
Дочерние: инструменты (tools)


TOOL (4)

import-system/
├── index.yaml
├── purpose.biz.md
├── architecture.dsg.md
├── api.api.md
├── spec-parser.spc.md
├── spec-validator.spc.md
├── src/                     код tool
   └── lib/
├── lider_setup/             module
└── lider_import/            module

index.yaml:

type: tool
children: [lider_setup, lider_import]

Слои: .biz, .dsg, .spc, .api
Код: в src/ (библиотеки)
Дочерние: модули


MODULE (5)

lider_setup/
├── index.yaml
├── purpose.biz.md
├── functions.dsg.md
├── data.dsg.md
├── spec-features.spc.md
├── spec-features-create.spc.md
├── spec-features-update.spc.md
├── spec-categories.spc.md
├── api.api.md
├── prompt-install.pmt.md
├── prompt-features.pmt.md
├── test.tst.md
├── src/                    ← код module
│   ├── addon.xml
│   ├── func.php
│   └── init.php
├── feature-creator/        ← component
└── category-creator/       ← component

index.yaml:

type: module
children: [feature-creator, category-creator]

Слои: .biz, .dsg, .spc, .api, .pmt, .tst
Код: в src/ (основной код)
Дочерние: компоненты


COMPONENT (6)

feature-creator/
├── index.yaml
├── spec.spc.md
├── prompt.pmt.md
└── src/
    ├── FeatureCreator.php
    └── tests/
        └── FeatureCreatorTest.php

index.yaml:

type: component

Слои: .spc, .pmt
Код: в src/ (код компонента)
Дочерние: нет


МАТРИЦА: ТИПЫ × СЛОИ

Тип .biz .ops .str .prj .arc .dsg .spc .api .pmt .tst src/
organization
domain
project ⚠️
tool
module
component

ПОЛНАЯ ИЕРАРХИЯ (пример)

lideravto/                                        ← ORGANIZATION
├── index.yaml
├── vision.biz.md
├── processes.ops.md

└── it/
    └── web/
        └── cscart/                               ← DOMAIN
            ├── index.yaml
            ├── requirements.biz.md
            ├── tech-stack.arc.md

            └── catalog-system/                   ← PROJECT
                ├── index.yaml
                ├── brief.biz.md
                ├── project.prj.md
                ├── architecture.arc.md

                ├── src/
                │   └── lib/

                └── import-system/                ← TOOL
                    ├── index.yaml
                    ├── purpose.biz.md
                    ├── architecture.dsg.md
                    ├── spec-parser.spc.md

                    ├── src/
                    │   └── lib/

                    └── lider_setup/              ← MODULE
                        ├── index.yaml
                        ├── purpose.biz.md
                        ├── functions.dsg.md
                        ├── spec-features.spc.md
                        ├── prompt-install.pmt.md
                        ├── test.tst.md

                        ├── src/
                        │   ├── addon.xml
                        │   └── func.php

                        └── feature-creator/      ← COMPONENT
                            ├── index.yaml
                            ├── spec.spc.md
                            ├── prompt.pmt.md

                            └── src/
                                └── FeatureCreator.php

WORKFLOW: От идеи до кода

1. BUSINESS → Бизнес-требование

lideravto/vision.biz.md
→ "Лидер в продаже запчастей"

2. DOMAIN → Технологии

it/web/cscart/tech-stack.arc.md
→ "CS-Cart 4.19, PHP 8.1"

3. PROJECT → Проект

catalog-system/project.prj.md
→ "Система управления каталогом"

4. TOOL → Назначение

import-system/purpose.biz.md
→ "Импорт прайс-листов BAZON"

5. MODULE → Спецификация

lider_setup/spec-features.spc.md
→ "Создать 6 характеристик через API"

6. MODULE → Промпт

lider_setup/prompt-install.pmt.md
→ "Создай функцию fn_lider_setup_install()"

7. MODULE → Код

lider_setup/src/func.php
→ function fn_lider_setup_install() { ... }

8. COMPONENT → Спека

feature-creator/spec.spc.md
→ "Класс FeatureCreator"

9. COMPONENT → Промпт

feature-creator/prompt.pmt.md
→ "Создай класс FeatureCreator"

10. COMPONENT → Код

feature-creator/src/FeatureCreator.php
→ class FeatureCreator { ... }

НАВИГАЦИЯ

Список документов уровня

cd lider_setup/
ls *.md
# purpose.biz.md
# spec-features.spc.md
# prompt-install.pmt.md

Только спецификации

ls *.spc.md
# spec-features.spc.md
# spec-categories.spc.md

Только промпты

ls *.pmt.md
# prompt-install.pmt.md
# prompt-features.pmt.md

Код уровня

ls src/
# addon.xml  func.php  init.php

Дочерние сущности

ls -d */ | grep -v "src"
# feature-creator/
# category-creator/

Поиск по всему проекту

# Все спеки в проекте
find . -name "*.spc.md"

# Все промпты
find . -name "*.pmt.md"

# Все документы о features
find . -name "*features*.md"

ШАБЛОНЫ ДОКУМЕНТОВ

index.yaml

type: module                    # organization|domain|project|tool|module|component
children: [child1, child2]      # Дочерние сущности (опционально)

.biz.md (Business)

# Назначение

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

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

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

## Ценность

Что получим.

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

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

.dsg.md (Design)

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

Техническое решение.

## Функции

1. Функция 1 - описание
2. Функция 2 - описание

## Данные

| Сущность | Поля | Источник |
|----------|------|----------|
| Feature | code, name | Создаём |

## Алгоритм

1. Шаг 1
2. Шаг 2

.spc.md (Specification)

# Спецификация: Название

## Функция

**Имя:** `fn_name()`

**Параметры:**
- `$param` (type) - описание

**Возвращает:**
- type - описание

## Логика

1. Шаг 1
2. Шаг 2

## Тесты

- [ ] Создаёт сущность
- [ ] Обрабатывает ошибки

.pmt.md (Prompt)

# Промпт: Название

Создай [что] в файле `src/[путь]`

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

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

## Логика

1. Шаг 1
2. Шаг 2

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

- API функция 1
- API функция 2

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

- Прямые SQL

.api.md (API Documentation)

# API: Название

## Функции

### fn_name()

**Описание:** Что делает

**Параметры:**
- `$param` (type) - описание

**Возвращает:**
- type - описание

**Пример:**
```php
$result = fn_name($param);
### .tst.md (Test)

```markdown
# Тесты: Название

## Unit-тесты

- [ ] Функция создаёт
- [ ] Функция обрабатывает ошибки

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

- [ ] Модуль устанавливается
- [ ] Данные в БД корректны

## Ручные

1. Шаг 1
2. Шаг 2
3. Проверить результат

СОЗДАНИЕ НОВОЙ СУЩНОСТИ

1. Создать структуру

mkdir -p lider_parser/src
cd lider_parser/

2. Создать index.yaml

cat > index.yaml << EOF
type: module
children: [xml-parser, csv-validator]
EOF

3. Создать документы

# Бизнес-назначение
cat > purpose.biz.md << EOF
# Назначение

Парсинг прайс-листов BAZON
EOF

# Спецификация
cat > spec-parser.spc.md << EOF
# Спецификация: Парсер

Парсит XML в массив товаров
EOF

# Промпт
cat > prompt-parser.pmt.md << EOF
# Промпт

Создай функцию fn_parse_xml()
EOF

4. Сгенерировать код

claude "читай prompt-parser.pmt.md и создай код"

МИГРАЦИЯ СУЩЕСТВУЮЩЕГО КОДА

Было (старая структура)

lider_setup/
├── addon.xml
├── func.php
└── init.php

Миграция

cd lider_setup/

# 1. Создать index.yaml
cat > index.yaml << EOF
type: module
children: [feature-creator]
EOF

# 2. Создать папку src/ и переместить код
mkdir src/
mv *.xml *.php src/

# 3. Создать документы
cat > purpose.biz.md << EOF
# Назначение

Базовая настройка каталога запчастей
EOF

cat > spec-features.spc.md << EOF
# Спецификация

Создание характеристик товаров
EOF

cat > prompt-install.pmt.md << EOF
# Промпт

Создай функцию установки
EOF

Стало (новая структура)

lider_setup/
├── index.yaml
├── purpose.biz.md
├── spec-features.spc.md
├── prompt-install.pmt.md
└── src/
    ├── addon.xml
    ├── func.php
    └── init.php

ВАЛИДАЦИЯ СТРУКТУРЫ

Проверка наличия обязательных файлов

# Скрипт проверки
python3 tools/validate-structure.py lider_setup/

# Проверяет:
# ✓ index.yaml существует
# ✓ type корректный
# ✓ Для каждого промпта есть код в src/
# ✓ children существуют как папки

Построение графа зависимостей

python3 tools/build-graph.py

# Вывод:
# catalog-system
#   └── import-system
#       ├── lider_setup
#       │   ├── feature-creator
#       │   └── category-creator
#       └── lider_import

ГЕНЕРАЦИЯ КОДА ИЗ ПРОМПТОВ

Вручную

# Читаем промпт
cat prompt-install.pmt.md

# Даём Claude
claude "$(cat prompt-install.pmt.md)"

Автоматически

# Генерация для модуля
python3 tools/generate-from-prompts.py lider_setup/

# Генерация для всего проекта
python3 tools/generate-from-prompts.py catalog-system/

ПРЕИМУЩЕСТВА СИСТЕМЫ

От идеи до кода: Полная цепочка трансформации документов
Git-friendly: Всё в текстовых файлах
Понятная навигация: Файлы = доки, папки = код/дочерние
Поиск: Расширения позволяют искать по типу
Масштабируемость: От маленького компонента до организации
AI-ready: Промпты рядом с кодом


СВЯЗАННЫЕ СТАНДАРТЫ


ИСТОРИЯ ИЗМЕНЕНИЙ

Версия Дата Изменения
1.0.0 2026-02-07 Создание стандарта DDD