# Концепция документации (Strong MVP, без связи с кодом)

## 1. Область применения
Документ описывает систему работы с документацией как самостоятельный слой.

Включает:
- текущее состояние (as-is)
- целевые сценарии использования
- целевую модель документации
- расширенный frontmatter
- базовую структуру документа `frontmatter + Summary + Details`
- RAG-слои (без связи с кодом)

---

# 2. Текущее состояние (As-Is)

## 2.1 Источник истины
- Документация хранится в Confluence
- Основная модель — иерархия страниц
- Навигация через дерево страниц

## 2.2 Структура и связи
- Документы не атомарны
- Одна страница содержит несколько тем
- Используются перекрестные ссылки между страницами

## 2.3 Ограничения
- Нет типизации документов
- Нет структурированного metadata-слоя
- Связи не формализованы

---

# 3. Целевые сценарии использования

## 3.1 Поиск документации

Пользователь формулирует запрос, например: "как работает создание заказа".

Система должна:
- найти релевантные документы
- отобрать наиболее точные фрагменты
- учитывать тип документа, модуль и сущности

Результат:
- короткий список релевантных документов
- возможность перейти в детали

## 3.2 Объяснение (Explain)

Пользователь хочет понять:
- как работает компонент
- что делает API
- как устроен процесс

Система должна:
- взять summary документа
- дополнить его деталями из Details
- дать краткое и точное объяснение без лишнего текста

## 3.3 Поиск по сущности (Entity Lookup)

Пользователь ищет:
- где используется сущность
- какие документы с ней связаны

Система должна:
- найти все документы, где упоминается сущность
- показать связи между ними

## 3.4 Навигация по документации

Пользователь начинает с одного документа и хочет:
- понять контекст
- перейти к связанным частям

Система должна:
- использовать parent/children
- использовать links
- строить осмысленный путь по документации

## 3.5 Генерация документации

Система создает новый документ:
- по шаблону
- с корректным frontmatter
- с заполненными разделами `Summary` и `Details`

Результат:
- документ сразу пригоден для использования
- соответствует структуре системы

## 3.6 Актуализация документации

При изменениях документа:
- система должна обновить только нужные части
- сохранить структуру
- обновить frontmatter и Details

Результат:
- документ остается консистентным
- не происходит деградации структуры

## 3.7 Связывание документации

При создании или обновлении:
- система добавляет связи между документами
- формирует граф знаний

Результат:
- документы не изолированы
- появляется навигация и reasoning

---

# 4. Frontmatter (расширенный контракт)

```yaml
id: api.create_order
type: api_method
name: create_order
title: Create order API

module: orders
layer: application

status: draft
updated_at: 2026-03-20

tags:
  - orders
  - api

entities:
  - Order
  - Cart

parent: orders_api
children: []

links:
  - type: related_api
    target: api.get_order
```

## Назначение ключевых полей

- `id` — стабильный идентификатор документа
- `type` — тип документа
- `title` — человекочитаемое имя
- `module` — модуль или bounded context
- `layer` — слой системы
- `status` — состояние документа
- `updated_at` — дата последнего обновления
- `tags` — фильтрация и поиск
- `entities` — база для entity lookup
- `parent` / `children` — иерархия
- `links` — граф связей

Все сведения о связях, сущностях и навигации должны храниться во frontmatter.
В теле документа отдельные разделы для связей, сущностей и навигации не создаются.

---

# 5. Структура документа (целевая)

Каждый документ состоит из двух смысловых слоев:
- frontmatter
- контент

Контент документа всегда состоит из двух обязательных разделов:
- `# Summary`
- `# Details`

## 5.1 Общие правила структуры

- `Summary` и `Details` всегда имеют заголовок уровня `#`
- других заголовков первого уровня в документе быть не должно
- `Summary` остается кратким и пригодным для explain
- `Details` заменяет прежние разделы `Context` и `Основное описание`
- внутренняя структура `Details` зависит от типа документа

## 5.2 Summary

Краткое описание на 3-6 строк.
Используется для explain, краткого ответа и быстрого понимания сути документа.

## 5.3 Details

Раздел содержит полное содержательное описание документа.
Состав подразделов определяется типом документа.

---

# 6. Типовая структура Details для API

Для документов типа `api_method` раздел `# Details` должен содержать следующие подразделы:

- `## Описание`
- `## Сценарий`
- `## Функциональные требования`
- `## Нефункциональные требования`
- `## Контракт`

## 6.1 Описание

Короткое описание сути метода:
- какую работу он выполняет
- для чего предназначен

## 6.2 Сценарий

Сценарий описывается в формате технического use case и включает:
- название
- предусловия
- триггер
- основной сценарий
- альтернативный сценарий
- обработку ошибок
- постусловие

Правила для сценария:
- сценарий должен быть лаконичным
- сценарий должен быть читаемым человеком
- в сценарии фиксируется суть шага, а не полная техническая реализация
- если условие можно выразить одним предложением, его допустимо оставить в сценарии
- если шаг требует детального описания формирования запроса, обработки ответа или внутренней логики, детали выносятся в функциональные требования

## 6.3 Функциональные требования

Функциональные требования описываются как последовательность требований внутри одного документа.

Формат:
- `FR-1`
- `FR-2`
- `FR-3`

Правила:
- идентификаторы локальны для документа
- на них нельзя ссылаться извне как на сквозные идентификаторы
- каждое требование описывает отдельный обязательный аспект реализации

## 6.4 Нефункциональные требования

Нефункциональные требования описываются аналогично функциональным.

Формат:
- `NFR-1`
- `NFR-2`
- `NFR-3`

Детальный формат записи может быть уточнен правилами конкретного проекта.

## 6.5 Контракт

Контракт должен быть пригоден для последующей сборки OpenAPI-спецификации.

Контракт описывает:
- входные параметры метода API
- выходные параметры
- структуру сообщения, как правило JSON
- обязательность полей
- типы полей
- ограничения на размер и формат
- назначение полей
- правила заполнения полей
- примеры данных

---

# 7. Базовая структура Details для остальных типов документов

Для всех типов документов, кроме `api_method`, на текущем этапе обязателен минимум:
- `# Summary`
- `# Details`

Дополнительные рекомендации по внутренней структуре `Details` для `logic_block`, `architecture_overview`, `domain_entity` и других типов будут заданы отдельно.

---

# 8. RAG слои (только документация)

## D0 — Чанки документов
Полный текст + разбиение.

## D1 — Каталог документов
- `id`
- `type`
- `title`
- `module`
- `tags`

## D2 — Индекс фактов
Факты, извлеченные из документов.

## D3 — Каталог сущностей
- сущности
- документы, где они используются

## D4 — Индекс сценариев (Workflow)
- последовательности действий
- пользовательские сценарии

## D5 — Граф связей
- связи между документами

---

# 9. Итог

Система документации:
- атомарные документы
- строгий frontmatter
- единая структура `Summary + Details`
- типовые правила для API-документов
- разделенные RAG-слои

Это позволяет:
- точно искать
- объяснять
- строить навигацию
- генерировать и обновлять документацию
