Open Finapp
Разработка

Граф кодовой базы

Интерактивный граф знаний кодовой базы Finapp, сгенерированный плагином understand-anything.

Что это такое

understand-anything - плагин для Claude Code, который анализирует кодовую базу и создает интерактивный граф знаний. Каждый файл распределяется по архитектурному слою, извлекаются связи между компонентами, генерируется экскурсия по проекту.

Дашборд: finapp-graph.ilko.me

Команды

КомандаОписание
/understandЗапустить анализ - инкрементальный если граф есть, полный если нет
/understand --fullПринудительная полная пересборка с нуля
/understand --reviewЗапустить LLM-ревьювер на существующем графе (без повторного анализа)
/understand --auto-updateВключить автоматическое обновление графа при каждом коммите
/understand --no-auto-updateОтключить автоматическое обновление графа
/understand --language ruГенерировать весь текст на заданном языке (en, ru, zh, ja, ko и др.)
/understand /путь/к/проектуАнализировать другую директорию вместо текущей

Опции можно комбинировать: /understand --full --language ru

Как это работает

Команда проходит 7 фаз:

ФазаЧто происходит
0Pre-flight - определяет инкрементальную или полную пересборку
0.5Читает правила исключений из .understandignore
1Сканирует все файлы проекта
1.5Группирует файлы в семантические батчи
2Анализирует каждый батч через LLM (5 параллельных субагентов)
3-5Объединяет батчи, собирает граф, проверяет
6-7Строит шаги экскурсии, записывает результат

Результаты сохраняются в .understand-anything/:

  • knowledge-graph.json - полный граф (узлы, рёбра, слои, экскурсия)
  • meta.json - хеш коммита и время последнего анализа
  • fingerprints.json - хеши файлов для инкрементальных обновлений

Исключения

.understand-anything/.understandignore управляет тем, что исключается из анализа. Использует синтаксис gitignore. По умолчанию всегда исключаются node_modules/, dist/, *.lock, изображения и т.д.

Текущие активные исключения:

.playwright-mcp        # Скриншоты Playwright MCP
docs/                  # Сайт документации (отдельный проект)
*.test.*               # Тестовые файлы
*.spec.*               # Spec файлы
*.snap                 # Снапшоты

Раскомментируйте или добавьте паттерны для дополнительных исключений, затем снова запустите /understand.

Инкрементальные обновления

Если граф уже существует, /understand сравнивает текущий коммит git с meta.json:

  • Тот же коммит - предлагает пересобрать или пропустить
  • Изменённые файлы - повторно анализирует только изменённые файлы и вливает в существующий граф
  • Флаг --full - принудительная полная пересборка с нуля

Обновление дашборда

После запуска /understand нужно переразместить дашборд:

# 1. Скопировать обновлённый граф в public директорию дашборда
cp .understand-anything/knowledge-graph.json \
   ~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard/public/
cp .understand-anything/meta.json \
   ~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard/public/

# 2. Сборка (demo режим - граф отдаётся с того же origin)
cd ~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard
VITE_DEMO_MODE=true pnpm exec vite build --config vite.config.demo.ts --base /

# 3. Деплой
cd dist && vercel deploy --prod --yes

Возможности дашборда

В дашборде три вида:

  • Knowledge Graph - полный граф связей между файлами с раскраской по слоям, фильтрами по слою или типу рёбер
  • Domain Graph - бизнес-процессы (если был запущен анализ доменов)
  • Architecture Layers - файлы, сгруппированные по слоям с описаниями

Из любого узла можно открыть исходный файл прямо в интерфейсе, посмотреть его импорты и зависимые файлы, пройти экскурсию по проекту.

Архитектурные слои

Каждый файл распределяется в один из 9 слоёв:

СлойОписание
EntryТочки входа приложения и Nuxt конфиг
ConfigКонфиги сборки, ESLint, TypeScript
BackendСхема Supabase Postgres + RLS + правила синхронизации PowerSync (app/supabase/, app/powersync/)
AuthSupabase Auth (email/пароль); двухуровневая защита маршрутов
StorePinia сторы (categories, wallets, trns, rates, settings)
ComposablesVue composables и утилиты
ComponentsVue компоненты, сгруппированные по фичам
PagesNuxt страницы и лейауты
TypesОбщие TypeScript типы и валидаторы