GH GambleHub

Документация как код

1) Архитектурные принципы

1. Единый источник истины. Документы, схемы, диаграммы, спецификации API, глоссарий — в VCS рядом с кодом.
2. Автоматическая проверка качества. Линтеры, орфография, проверка ссылок, doctest примеров кода.
3. Сборка как артефакт. Док-сайт, PDF/ebook, «встроенные подсказки» — часть релизного пайплайна.
4. Версионирование и трассируемость. Док правит тот же PR, что меняет поведение системы; ADR привязаны к коммитам.
5. Доступность по ролям. Публичное/внутреннее, Runbook’и под on-call, API-спеки для интеграторов.
6. Минимум ручной работы. Генерация оглавлений, схем, графов зависимостей, кодовых фрагментов — из источников.

2) Типы документов и структура репо

Рекомендуемая раскладка:

docs/
index. md architecture/
overview. md contexts/( C4, contexts, boundaries)
components/
data/
schemas/ (JSON Schema, Avro, Proto)
lineage/ (dataflow. md, dq-policies. md)
security/
threat-models/
key-management. md api/
openapi/ (OpenAPI. yaml)
asyncapi/ (.yaml)
grpc/ (.proto)
processes/
rfc/ (RFC-YYYY-XX-Title. md)
adr/ (ADR-0001-title. md)
runbooks/ (incident-.md)
playbooks/
sops/ (standard operating procedures)
product/
user-guides/
how-to/
faq/
i18n/
en/, en/, tr/# assets localization/
diagrams/ (Mermaid, PlantUML, Graphviz)
images/
_templates/ (RFC/ADR/Runbook templates)
Артефакты:
  • RFC — обсуждение решений перед внедрением.
  • ADR — зафиксированное архитектурное решение (контекст → решение → последствия → альтернативы).
  • Runbook/Playbook — пошаговые инструкции для инцидентов и операций.
  • How-To/FAQ — задача → шаги → проверка результата.
  • API-спеки — OpenAPI/AsyncAPI/Proto как источник генерации SDK и доков.
  • Диаграммы как код — Mermaid/PlantUML/Graphviz/C4.

3) Стиль и стандарты

Единое руководство по стилю (тон, терминология, шаблоны заголовков, примеры).
Глоссарий с каноническими терминами (EN/RU), алиасами, запретными формулировками.
Нумерация и ссылки: постоянные якоря, кросс-референсы между ADR/RFC/кодом.

Метаданные в YAML-фронтматтере:
yaml title: "Payment Service: Overview"
owner: "payments-team"
reviewers: ["platform", "security"]
last_review: 2025-10-15 tags: ["architecture","payments","pci"]

4) Сборка и публикация

Генераторы статических сайтов:
  • MkDocs (Material) — просто, удобно, хорошая навигация и поиск.
  • Docusaurus — версияция документации и docs+blog; MDX-компоненты.
  • Antora — модульная документация для крупных платформ.
Пример mkdocs.yml (фрагмент):
yaml site_name: Platform Docs theme:
name: material features: [navigation. tabs, content. code. annotate, search. suggest]
plugins:
- search
- mermaid2
- mkdocs-awesome-pages-plugin
- macros nav:
- Review: index. md
- Architecture:
- Overview: architecture/overview. md
- Data: architecture/data/index. md
- API:
- REST: api/openapi/index. md
- Events: api/asyncapi/index. md

5) Диаграммы и схемы как код

Mermaid (пример последовательности):
mermaid sequenceDiagram participant C as Client participant G as API Gateway participant S as Service
C->>G: POST /orders
G->>S: createOrder()
S-->>G: 201 + order_id
G-->>C: 201 Created
PlantUML (C4 контейнеры):

@startuml
!include <C4/C4_Container>
Person(user, "User")
System_Boundary(system, "Platform"){
Container(api, "API", "HTTP")
Container(db, "DB", "Postgres")
}
Rel(user, api, "Uses")
Rel(api, db, "CRUD")
@enduml

OpenAPI/AsyncAPI рендерятся в сайт; из них генерируются SDK/клиенты/примеры.

6) Качество: линтеры и тесты документации

Линтеры/проверки:
  • markdownlint — правила форматирования Markdown.
  • Vale — стиль/терминология/тон.
  • Spellcheck — орфография (RU/EN словари).
  • Linkcheck — внешние/внутренние ссылки, якоря.
  • Doctest/Examples — выполнение фрагментов кода, синхронизация версий CLI/API.
  • Schematest — валидация OpenAPI/AsyncAPI/JSON Schema/Proto.
Пример GitHub Actions (фрагмент):
yaml name: docs-ci on: [pull_request, push]
jobs:
lint:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- run: npm i -g markdownlint-cli
- run: markdownlint "docs//.md"
- run: pipx run codespell docs          true
- run: pipx run linkchecker docs/site          true build:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install mkdocs-material mkdocs-mermaid2-plugin
- run: mkdocs build --strict preview:
if: github. event_name == 'pull_request'
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- run: mkdocs build
- uses: actions/upload-pages-artifact@v3
Doctest пример (Python):
python docs/snippets/calc. py def add(a,b):
"""Returns sum of a and b.

>>> add(2,3)
5
"""
return a+b

CI запускает `python -m doctest docs/snippets/calc.py`.

7) Процессы: RFC/ADR/обзоры и SLA на устаревание

RFC flow: инициатор → черновик → обсуждение → решение → план → имплементация → пост-фактум ретро.
ADR flow: коротко фиксируем выбор + ссылку на RFC/эксперименты.
Review-процедуры: источник — `CODEOWNERS` + `doc-owners.yaml`.
SLA на устаревание: критичные статьи имеют `last_review` и алерт на ревью через N дней.

Шаблон ADR (сокр.):
markdown
ADR-0007: Select Event Log - Avro + Schema Registry
Date: 2025-10-31
Status: accepted
Context: the evolution of schemes without breaking consumers is required.
Solution: Avro + Schema Registry, backward compatibility.
Implications: tooling, compatibility tests, N services migration.
Alternatives: JSON Schema, Protobuf (rejected due to X/Y).

8) Локализация (i18n) и многоязычность

Стратегия локализации: исходный язык (EN или RU) → перевод ветками `i18n/<locale>`.
Ключи и контекст: хранить «стейбл-ID» для заголовков/фрагментов.
Проверки: шаг `missing-keys`, алерты на рассинхронизацию.
Стили локалей: локальные глоссарии, недопустимые кальки, примеры кода на локальном языке UI.

9) Интеграция с продуктом

Встроенная справка (in-app docs): MDX-компоненты, контекстные подсказки.
Версионирование по релизам: теги/ветки `docs/vX.Y`, сайт с selector версий.
Автогенерация секций: из OpenAPI/AsyncAPI, GraphQL SDL, CLI `--help`.
Changelog как код: автоматическая генерация по меткам PR (feat/fix/docs/breaking).

10) Метрики и наблюдаемость документации

Docs SLO: время сборки/публикации, аптайм сайта, время появления документа после PR.
Покрытие артефактами: доля сервисов с ADR, доля эндпоинтов с примерами, доля Runbook’ов с «проверкой здоровья».
Пользовательские метрики: поисковые запросы без ответов, глубина просмотра, CTR встроенных подсказок.
Качество: ошибки линтеров/1000 строк, «битые ссылки», доля устаревших статей.

11) Безопасность и приватность

Секреты и ПД запрещены в репо; линтеры на секреты и маскирование.
Доступ к внутреннему сайту через SSO; публичные разделы отделены.
Правила экспорта: PDF/архивы без внутренних ссылок, водяные знаки для конфиденциальных документов.
Санитария скриншотов: автоматическая анонимизация (мок-данные/blur).

12) Паттерны

Docs in PR. Любое изменение, влияющее на поведение, включает обновление доков в том же PR.
Шаблоны как контракт. Создание сервиса/эндпоинта/датасета — через генератор, который кладет заготовки доков.
Диаграммы как код. Любой рисунок — редактируемый исходник, сборка SVG/PNG в CI.
Docs Preview. Комментарий бота с ссылкой на предпросмотр сайта для PR.
Док-линки в коде. Аннотации в исходниках (`@doc: adr/0007`), которые рендерятся в сайт.

13) Анти-паттерны

Документация в wiki/Notion без версий рядом с кодом → рассинхронизация.
Скриншоты без исходников → невозможность обновить автоматически.
«Секретные» знания в устных чатах и приватных файлах.
Генерики без примеров и инвариантов → бесполезные страницы.
Отсутствие владельцев и `last_review` → лавина устаревания.
Ручная сборка и публикация → ломкий и редкий релиз доков.

14) Примеры автоматизации

Генерация раздела API из спеков:
bash build. sh scripts/render-openapi. sh api/openapi/.yaml > docs/api/openapi/index. md scripts/render-asyncapi. sh api/asyncapi/.yaml > docs/api/asyncapi/index. md
Проверка ссылок и якорей:
bash linkcheck --config. linkcheck. yml site/
Бот предпросмотра (комментарий в PR):
yaml
- name: Deploy Preview run: mkdocs build && npx serve -s site -l 5000 &
- name: Comment with URL uses: peter-evans/create-or-update-comment@v4 with:
issue-number: ${{ github. event. pull_request. number }}
body: "Preview: http ://preview- $ {{github. run_id }}.local"

15) Чек-лист архитектора

1. Есть ли единый репозиторий доков рядом с кодом и понятная структура?
2. Описаны шаблоны (RFC/ADR/Runbook/How-To) и глоссарий?
3. Включены линтеры (markdownlint, Vale), spellcheck, linkcheck и doctest?
4. Диаграммы и схемы — как код, сборка в CI?
5. API-спеки (OpenAPI/AsyncAPI/Proto) валидируются и рендерятся в сайт?
6. Организован docs-preview для PR и авто-публикация по merge?
7. Есть SLA на устаревание (last_review) и «владельцы» страниц?
8. Метрики: покрытие, ошибки линтеров, битые ссылки, поисковые «нулевые» запросы?
9. Политики безопасности: секреты запрещены, SSO, водяные знаки/экспорт?
10. Локализация управляется ветками и проверяется на пропуски?

Заключение

Docs-as-Code превращает документацию из «постфактум заметок» в рабочий артефакт разработки: версионируемый, тестируемый и доставляемый. При таком подходе знания живут рядом с кодом, изменения прозрачны, а пользователи и инженеры получают актуальные инструкции, схемы и примеры тогда, когда они нужны. Это снижает операционные риски, ускоряет онбординг и улучшает качество решений по всей платформе.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.