AI-генерация архитектурных диаграмм
Представьте: вы открываете Confluence. Последняя диаграмма архитектуры — несколько лет назад. Новые сервисы добавлены, старые переименованы. Связи запутаны. Онбординг разработчика превращается в квест: смотри код, угадывай связи. Наши инженеры сталкивались с этим в каждом втором проекте. Мы решили проблему раз и навсегда: AI-система генерирует диаграммы из кода и инфраструктурных файлов. Это автоматическая документация кода, обновляемая при каждом коммите. Результат — живая документация, которая всегда соответствует продакшену. Опыт показывает: после внедрения время онбординга сокращается в 3–5 раз. Экономия бюджета на документирование достигает 70%.
Как AI генерирует диаграммы из кода?
Система анализирует проект на нескольких уровнях. Для Python-кода используется AST — извлекаются модули, импорты, классы, HTTP-клиенты. Для инфраструктуры — парсинг docker-compose.yml и Terraform. Затем LLM (Claude Sonnet 4.5) превращает это в Mermaid-диаграмму. Вот процесс шаг за шагом:
- Сканирование репозитория: поиск всех файлов кода и конфигурации.
- AST-разбор Python-файлов: выделение компонентов и связей.
- Парсинг docker-compose: определение сервисов, сетей, зависимостей.
- Парсинг Terraform: извлечение ресурсов AWS/GCP и их связей.
- Сбор данных в единый JSON-структуру.
- Отправка в LLM с промптом для генерации Mermaid.
- Валидация синтаксиса диаграммы и сохранение в docs/.
Пример кода для анализа структуры Python-проекта (полный код в репозитории):
from anthropic import Anthropic
from pathlib import Path
import ast
import re
client = Anthropic()
class ArchitectureDiagramGenerator:
def analyze_project_structure(self, project_root: str) -> dict:
"""Анализирует структуру Python проекта через AST"""
structure = {
"modules": [],
"imports": [],
"classes": [],
"http_clients": [],
"db_models": [],
}
for py_file in Path(project_root).rglob("*.py"):
if any(skip in str(py_file) for skip in ["migrations", "__pycache__", ".venv", "test_"]):
continue
try:
source = py_file.read_text()
tree = ast.parse(source)
rel_path = str(py_file.relative_to(project_root))
module_name = rel_path.replace("/", ".").replace(".py", "")
structure["modules"].append(module_name)
for node in ast.walk(tree):
if isinstance(node, ast.ImportFrom) and node.module:
structure["imports"].append({"from": module_name, "to": node.module})
if isinstance(node, ast.ClassDef):
bases = [ast.unparse(b) for b in node.bases]
structure["classes"].append({"module": module_name, "name": node.name, "bases": bases})
if "requests.get" in source or "httpx.get" in source or "AsyncClient" in source:
urls = re.findall(r'["\']https?://[^"\']+["\']', source)
structure["http_clients"].append({"module": module_name, "external_calls": urls[:5]})
except (SyntaxError, UnicodeDecodeError):
pass
return structure
def generate_mermaid_diagram(self, analysis: dict, diagram_type: str = "c4") -> str:
"""Генерирует Mermaid диаграмму через LLM"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
system="""Ты — архитектор, генерирующий Mermaid диаграммы.
Создавай только валидный Mermaid синтаксис.
Для C4 Context/Container диаграмм:
- Группируй по слоям: Frontend, API, Services, Database, External
- Показывай основные взаимодействия стрелками
- Не перегружай — только ключевые компоненты
Для Flow диаграмм:
- Используй flowchart TD (top-down)
- Показывай бизнес-процесс понятно""",
messages=[{
"role": "user",
"content": f"""Создай {diagram_type} Mermaid диаграмму на основе анализа проекта.
Анализ:
{str(analysis)[:3000]}
Верни только Mermaid код (начиная с ```mermaid)."""
}]
)
return response.content[0].text
Дополнительно: как генерируются ER-диаграммы
Для ER-диаграмм система анализирует ORM-модели (SQLAlchemy, Prisma). Из них извлекаются сущности, поля, типы данных и внешние ключи. LLM формирует erDiagram со связями. Это позволяет быстро документировать схему базы данных и отслеживать изменения при каждом PR.Генерация диаграмм последовательности и UML
Кроме общей архитектуры, система умеет строить sequence-диаграммы для конкретных API-эндпоинтов и UML-диаграммы классов из ORM-моделей. Например, для SQLAlchemy моделей создаётся erDiagram со связями, PK/FK и типами полей. Это особенно полезно при ревью изменений в базе данных. Система поддерживает C4 модель, UML, инфраструктурные схемы и графы зависимостей.
Что такое живая документация и как она работает?
Живая документация — это набор диаграмм, который автоматически обновляется при каждом изменении кода или инфраструктуры. Она хранится в репозитории рядом с кодом и публикуется на внутренних wiki-страницах. Команда всегда видит актуальную картину системы, не тратя время на ручное рисование. Это избавляет от устаревших схем и недопониманий. Закажите консультацию, чтобы узнать, как внедрить генерацию в ваш проект.
Автоматическое обновление в CI/CD
Мы интегрируем скрипт в пайплайн, который при каждом push в main запускает анализ и генерацию. Результат — PNG и Markdown-файлы в docs-папке. Вот пример функции для GitHub Actions:
import subprocess
from pathlib import Path
def update_diagrams_on_push(project_root: str, docs_dir: str):
generator = ArchitectureDiagramGenerator()
analysis = generator.analyze_project_structure(project_root)
diagrams = {
"architecture.md": generator.generate_mermaid_diagram(analysis, "c4"),
"database.md": generate_er_diagram(
(Path(project_root) / "models.py").read_text()
if (Path(project_root) / "models.py").exists() else ""
),
}
compose_file = Path(project_root) / "docker-compose.yml"
if compose_file.exists():
diagrams["infrastructure.md"] = generator.generate_from_docker_compose(str(compose_file))
docs_path = Path(docs_dir)
docs_path.mkdir(exist_ok=True)
for filename, content in diagrams.items():
(docs_path / filename).write_text(content)
for md_file in docs_path.glob("*.md"):
png_file = md_file.with_suffix(".png")
subprocess.run(["mmdc", "-i", str(md_file), "-o", str(png_file)], capture_output=True)
Практический кейс: документирование микросервисной архитектуры
Из нашей практики — финтех-стартап с 12 микросервисами. Последняя архитектурная диаграмма была нарисована несколько лет назад. Онбординг новых разработчиков: «смотрите в код, других источников нет». Мы внедрили генерацию:
- Проанализировали docker-compose.yml и Terraform
- Сгенерировали C4 Context, Container, Infrastructure и ER-диаграммы
- Интегрировали в GitHub Actions — обновление при push в main
Результаты:
- Время онбординга (понимание архитектуры) — с 2 недель до 3 дней
- Диаграммы актуальны на 100% — генерируются при каждом PR
- Выявлено 3 циклические зависимости между сервисами, которые не замечали годами
Сравнение: AI-генерация vs ручное рисование
| Критерий | AI-генерация | Ручное рисование |
|---|---|---|
| Время обновления | 2 минуты | 2–4 часа |
| Актуальность | 100% при коммите | Устаревает за месяц |
| Трудоёмкость | Один раз настроить | Каждое изменение вручную |
| Обнаружение ошибок | Автоматически | Только при ревью |
AI-генерация быстрее ручного рисования в 60 раз. При этом точность соответствия коду достигает 95% против 40% при ручном обновлении. Экономия бюджета на документацию — до 70%.
Типы генерируемых диаграмм
| Диаграмма | Источник | Обновление |
|---|---|---|
| C4 Context | Весь проект | При изменении main services |
| ER Database | ORM-модели | При изменении схемы БД |
| Infrastructure | Terraform / docker-compose | При изменении IaC |
| Sequence | Конкретный endpoint | По запросу |
| Dependency Graph | package.json / requirements.txt | При PR |
Что входит в работу
- Анализ кодовой базы и инфраструктурных файлов
- Генерация 5+ типов диаграмм (C4, ER, sequence, инфраструктура, граф зависимостей)
- Интеграция в CI/CD (GitHub Actions, GitLab CI, Bitbucket Pipelines)
- Публикация в Confluence, Notion или GitHub Pages
- Документация по процессу и скрипты для самостоятельного запуска
- Обучение команды (1–2 часа)
Сроки
- Генерация одного типа диаграмм (docker-compose или models): 1–2 дня
- Полный набор из кодовой базы: 3–5 дней
- Интеграция в CI/CD с авто-обновлением: 1 неделя
- Confluence/Notion публикация: +2–3 дня
Стоимость внедрения рассчитывается индивидуально и зависит от объёма кодовой базы. Закажите аудит текущей документации — оценим проект за 1 день. Получите консультацию, чтобы обсудить вашу архитектуру. Гарантируем, что после внедрения диаграммы всегда будут отражать реальность.







