Skip to content

Отчёты

Archora собирает три отчёта из одного скана. У каждого свой вопрос, поэтому выбирайте формат по аудитории.

Что можно экспортировать

ФорматАудиторияНа какой вопрос отвечает
HTMLРевьюер, тех-лид, code owner«Как сейчас выглядит архитектура и что чинить первым?»
Fix-plan JSONАвтоматизация, внутренние инструменты, планирование«Дай очередь починки с reason / action / verify по каждому пункту.»
Полный JSONИнтеграции, дашборды, кастомные срезы«Дай весь скан-конверт, я сам построю срез.»
JUnitCI / вкладки тестов«Покажи каждый цикл и нарушение как failed test case.»
MarkdownPR-комментарии«Положи компактное summary в код-ревью.»

Любой формат можно получить из меню Export в десктоп-приложении или из CLI: archora report . --format html|fix-plan|json|junit|md.

HTML-отчёт

HTML-бриф — один файл без JS, без graph runtime и без внешних ассетов. Открывается в любом браузере, его можно положить в репозиторий.

Внутри:

  • Repair brief — grade, score, modules, edges, число generated-модулей, если включена соответствующая политика.
  • Fix first — главный finding с разбивкой Action / Why / Verify.
  • Top priority — таблица следующих 9 пунктов с типом и списком целей.
  • Cycles — топ-20 циклов: severity, длина, suggested breakpoint и пример модулей.
  • Hotspots — топ-20 модулей по hotness с fan-in/out и флагом «in cycle».
  • Rule violations — отдельно layer и contracts.
  • Impact summary — модули с самой большой группой прямых импортёров — где изменение распространится дальше всего.
  • Verification plan — короткий упорядоченный список проверок перед закрытием задачи.

Подвал отсылает обратно к десктоп-приложению — HTML это бриф, а не замена интерактивного workspace.

Fix-plan JSON

Стабильный versioned-конверт для внутренних инструментов:

json
{
  "kind": "archora-fix-plan",
  "version": 1,
  "exportedAt": "2026-05-12T00:00:00.000Z",
  "appVersion": "archora",
  "project": { "id": "...", "name": "...", "rootPath": "...", "detectedFramework": "vue" },
  "architectureDebt": { "score": 13, "grade": "A", "breakdown": { ... } },
  "summary": {
    "cycles": 7,
    "layerViolations": 1,
    "contractViolations": 0,
    "hotZones": 4,
    "generatedModules": 12
  },
  "priorityFindings": [
    {
      "type": "cycle",
      "id": "cycle:abcdef12",
      "title": "Direct dependency cycle",
      "weight": 100,
      "targets": ["src/a.ts", "src/b.ts"],
      "reason": "2 modules close a dependency cycle.",
      "action": "Break the import from src/b.ts -> src/a.ts.",
      "verify": "Open Cycles and confirm this cycle disappeared after re-scan.",
      "params": { "severity": "direct" }
    }
  ],
  "evidence": {
    "cycles": [...],
    "layerViolations": [...],
    "contractViolations": [...],
    "hotZones": [...],
    "generatedModules": [...]
  },
  "verificationOrder": ["Verify cycle breakpoints first", "Verify layer boundary fixes"]
}

Что гарантируется:

  • kind и version стабильны. Изменение формы — это bump version.
  • priorityFindings отсортирован по weight по убыванию. Findings, у которых все targets generated, помечены generated: true и сильно понижены — они не попадают в верх очереди.
  • В каждом finding всегда есть reason, action, verify — тулза может показать их как есть.
  • В evidence лежат базовые cycles / violations / hotspots и список generated-модулей (с лимитом), чтобы потребителю не нужен второй вызов.

Полный JSON

Versioned-обёртка над целым ScanResult:

json
{
  "schema": 1,
  "app": "archora",
  "exportedAt": "2026-05-12T00:00:00.000Z",
  "scan": {
    /* полный ScanResult: modules, edges, cycles, metrics, ... */
  }
}

Полезно для diff'ов через archora diff, для baseline'ов в CI и для кастомных дашбордов. Файл существенно тяжелее fix-plan'а — на больших монорепо это сотни мегабайт. Если нужна только очередь починки, выбирайте fix-plan.

Re-export

Каждый успешный экспорт сохраняется в History → Exported reports. Кнопка Re-export рядом с записью повторит тот же scope/format на текущем скане с новым timestamp в имени файла. Кнопка отключена, если активный скан принадлежит другому проекту — откройте проект, отсканируйте, потом re-export.

Имена файлов

archora-<project-slug>-<scope>-<iso-stamp>.<ext>

  • <scope>report, fix-plan или current-view.
  • Slug проекта — это санитизированное имя. Диакритика, пробелы и пунктуация сворачиваются в -, имя безопасно для любой ФС.

Обработка ошибок

Пайплайн экспорта различает отмену и реальную ошибку:

  • Отмена системного «Save» (десктоп) — тихий abort: ни тоста, ни записи в history.
  • Ошибки записи в браузере или в Tauri выводятся как danger-toast с сообщением.
  • Запись в history создаётся только после того, как файл оказался на диске.

Выпущено под лицензией BUSL-1.1.