[{"data":1,"prerenderedAt":832},["ShallowReactive",2],{"navigation_docs_ru":3,"-ru-development-understand-anything":167,"-ru-development-understand-anything-surround":827},[4,61,101,146],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":60},"Руководство","i-lucide-book-open","\u002Fru\u002Fguide","ru\u002F1.guide",[10,15,20,25,30,35,40,45,50,55],{"title":11,"path":12,"stem":13,"icon":14},"Введение","\u002Fru\u002Fguide\u002Fintroduction","ru\u002F1.guide\u002F01.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Установка","\u002Fru\u002Fguide\u002Finstallation","ru\u002F1.guide\u002F02.installation","i-lucide-smartphone",{"title":21,"path":22,"stem":23,"icon":24},"Авторизация","\u002Fru\u002Fguide\u002Fauth","ru\u002F1.guide\u002F03.auth","i-lucide-lock",{"title":26,"path":27,"stem":28,"icon":29},"Кошельки","\u002Fru\u002Fguide\u002Fwallets","ru\u002F1.guide\u002F04.wallets","i-lucide-wallet",{"title":31,"path":32,"stem":33,"icon":34},"Категории","\u002Fru\u002Fguide\u002Fcategories","ru\u002F1.guide\u002F05.categories","i-lucide-tags",{"title":36,"path":37,"stem":38,"icon":39},"Транзакции","\u002Fru\u002Fguide\u002Ftransactions","ru\u002F1.guide\u002F06.transactions","i-lucide-receipt",{"title":41,"path":42,"stem":43,"icon":44},"Переводы","\u002Fru\u002Fguide\u002Ftransfers","ru\u002F1.guide\u002F07.transfers","i-lucide-arrow-left-right",{"title":46,"path":47,"stem":48,"icon":49},"Статистика","\u002Fru\u002Fguide\u002Fstatistics","ru\u002F1.guide\u002F08.statistics","i-lucide-bar-chart-3",{"title":51,"path":52,"stem":53,"icon":54},"Тема","\u002Fru\u002Fguide\u002Ftheme","ru\u002F1.guide\u002F09.theme","i-lucide-palette",{"title":56,"path":57,"stem":58,"icon":59},"Настройки","\u002Fru\u002Fguide\u002Fsettings","ru\u002F1.guide\u002F10.settings","i-lucide-settings",false,{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":60},"Разработка","i-lucide-code","\u002Fru\u002Fdevelopment","ru\u002F2.development",[67,71,76,81,86,91,96],{"title":16,"path":68,"stem":69,"icon":70},"\u002Fru\u002Fdevelopment\u002Finstallation","ru\u002F2.development\u002F01.installation","i-lucide-download",{"title":72,"path":73,"stem":74,"icon":75},"Граф кодовой базы","\u002Fru\u002Fdevelopment\u002Funderstand-anything","ru\u002F2.development\u002F02.understand-anything","i-lucide-network",{"title":77,"path":78,"stem":79,"icon":80},"Офлайн и PWA","\u002Fru\u002Fdevelopment\u002Foffline","ru\u002F2.development\u002F03.offline","i-lucide-wifi-off",{"title":82,"path":83,"stem":84,"icon":85},"История миграций данных","\u002Fru\u002Fdevelopment\u002Fmigration","ru\u002F2.development\u002F04.migration","i-lucide-database",{"title":87,"path":88,"stem":89,"icon":90},"Деплой","\u002Fru\u002Fdevelopment\u002Fdeployment","ru\u002F2.development\u002F05.deployment","i-lucide-rocket",{"title":92,"path":93,"stem":94,"icon":95},"Тестирование","\u002Fru\u002Fdevelopment\u002Ftesting","ru\u002F2.development\u002F06.testing","i-lucide-flask-conical",{"title":97,"path":98,"stem":99,"icon":100},"Дата-утилиты","\u002Fru\u002Fdevelopment\u002Fdate-utilities","ru\u002F2.development\u002F07.date-utilities","i-lucide-calendar",{"title":102,"icon":103,"path":104,"stem":105,"children":106,"page":60},"Справочник","i-lucide-file-code","\u002Fru\u002Freference","ru\u002F3.reference",[107,112,116,121,126,131,136,141],{"title":108,"path":109,"stem":110,"icon":111},"Архитектура","\u002Fru\u002Freference\u002Farchitecture","ru\u002F3.reference\u002F01.architecture","i-lucide-boxes",{"title":113,"path":114,"stem":115,"icon":44},"Типы транзакций","\u002Fru\u002Freference\u002Ftransaction-types","ru\u002F3.reference\u002F02.transaction-types",{"title":117,"path":118,"stem":119,"icon":120},"Синхронизация","\u002Fru\u002Freference\u002Fsync","ru\u002F3.reference\u002F03.sync","i-lucide-refresh-cw",{"title":122,"path":123,"stem":124,"icon":125},"Офлайн-first","\u002Fru\u002Freference\u002Foffline-first","ru\u002F3.reference\u002F04.offline-first","i-lucide-list-ordered",{"title":127,"path":128,"stem":129,"icon":130},"Тех. решения","\u002Fru\u002Freference\u002Ftech-decisions","ru\u002F3.reference\u002F05.tech-decisions","i-lucide-lightbulb",{"title":132,"path":133,"stem":134,"icon":135},"Валидация","\u002Fru\u002Freference\u002Fvalidation-strategy","ru\u002F3.reference\u002F06.validation-strategy","i-lucide-shield-check",{"title":137,"path":138,"stem":139,"icon":140},"Что изменилось со времён Firebase","\u002Fru\u002Freference\u002Ffirebase-migration","ru\u002F3.reference\u002F07.firebase-migration","i-lucide-hamburger",{"title":142,"path":143,"stem":144,"icon":145},"Производительность","\u002Fru\u002Freference\u002Fperformance","ru\u002F3.reference\u002F08.performance","i-lucide-gauge",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":60},"Премиум","i-lucide-star","\u002Fru\u002Fpremium","ru\u002F4.premium",[152,157,162],{"title":153,"path":154,"stem":155,"icon":156},"Обзор","\u002Fru\u002Fpremium\u002Foverview","ru\u002F4.premium\u002F01.overview","i-lucide-layers",{"title":158,"path":159,"stem":160,"icon":161},"Telegram-бот","\u002Fru\u002Fpremium\u002Ftelegram-bot","ru\u002F4.premium\u002F02.telegram-bot","i-lucide-send",{"title":163,"path":164,"stem":165,"icon":166},"AI Chat","\u002Fru\u002Fpremium\u002Fai-chat","ru\u002F4.premium\u002F03.ai-chat","i-lucide-sparkles",{"id":168,"title":72,"body":169,"description":818,"extension":819,"links":820,"meta":821,"navigation":822,"path":73,"seo":823,"stem":74,"__hash__":826},"docs_ru\u002Fru\u002F2.development\u002F02.understand-anything.md",{"type":170,"value":171,"toc":808},"minimark",[172,177,188,200,204,312,318,322,325,398,405,427,431,447,450,460,466,470,478,501,505,511,657,661,664,684,687,691,694,804],[173,174,176],"h2",{"id":175},"что-это-такое","Что это такое",[178,179,180,187],"p",{},[181,182,186],"a",{"href":183,"rel":184},"https:\u002F\u002Fgithub.com\u002FLum1104\u002FUnderstand-Anything",[185],"nofollow","understand-anything"," - плагин для Claude Code, который анализирует кодовую базу и создает интерактивный граф знаний. Каждый файл распределяется по архитектурному слою, извлекаются связи между компонентами, генерируется экскурсия по проекту.",[178,189,190,194,195],{},[191,192,193],"strong",{},"Дашборд:"," ",[181,196,199],{"href":197,"rel":198},"https:\u002F\u002Ffinapp-graph.ilko.me\u002F",[185],"finapp-graph.ilko.me",[173,201,203],{"id":202},"команды","Команды",[205,206,207,220],"table",{},[208,209,210],"thead",{},[211,212,213,217],"tr",{},[214,215,216],"th",{},"Команда",[214,218,219],{},"Описание",[221,222,223,235,245,255,265,275,302],"tbody",{},[211,224,225,232],{},[226,227,228],"td",{},[229,230,231],"code",{},"\u002Funderstand",[226,233,234],{},"Запустить анализ - инкрементальный если граф есть, полный если нет",[211,236,237,242],{},[226,238,239],{},[229,240,241],{},"\u002Funderstand --full",[226,243,244],{},"Принудительная полная пересборка с нуля",[211,246,247,252],{},[226,248,249],{},[229,250,251],{},"\u002Funderstand --review",[226,253,254],{},"Запустить LLM-ревьювер на существующем графе (без повторного анализа)",[211,256,257,262],{},[226,258,259],{},[229,260,261],{},"\u002Funderstand --auto-update",[226,263,264],{},"Включить автоматическое обновление графа при каждом коммите",[211,266,267,272],{},[226,268,269],{},[229,270,271],{},"\u002Funderstand --no-auto-update",[226,273,274],{},"Отключить автоматическое обновление графа",[211,276,277,282],{},[226,278,279],{},[229,280,281],{},"\u002Funderstand --language ru",[226,283,284,285,288,289,288,292,288,295,288,298,301],{},"Генерировать весь текст на заданном языке (",[229,286,287],{},"en",", ",[229,290,291],{},"ru",[229,293,294],{},"zh",[229,296,297],{},"ja",[229,299,300],{},"ko"," и др.)",[211,303,304,309],{},[226,305,306],{},[229,307,308],{},"\u002Funderstand \u002Fпуть\u002Fк\u002Fпроекту",[226,310,311],{},"Анализировать другую директорию вместо текущей",[178,313,314,315],{},"Опции можно комбинировать: ",[229,316,317],{},"\u002Funderstand --full --language ru",[173,319,321],{"id":320},"как-это-работает","Как это работает",[178,323,324],{},"Команда проходит 7 фаз:",[205,326,327,337],{},[208,328,329],{},[211,330,331,334],{},[214,332,333],{},"Фаза",[214,335,336],{},"Что происходит",[221,338,339,347,358,366,374,382,390],{},[211,340,341,344],{},[226,342,343],{},"0",[226,345,346],{},"Pre-flight - определяет инкрементальную или полную пересборку",[211,348,349,352],{},[226,350,351],{},"0.5",[226,353,354,355],{},"Читает правила исключений из ",[229,356,357],{},".understandignore",[211,359,360,363],{},[226,361,362],{},"1",[226,364,365],{},"Сканирует все файлы проекта",[211,367,368,371],{},[226,369,370],{},"1.5",[226,372,373],{},"Группирует файлы в семантические батчи",[211,375,376,379],{},[226,377,378],{},"2",[226,380,381],{},"Анализирует каждый батч через LLM (5 параллельных субагентов)",[211,383,384,387],{},[226,385,386],{},"3-5",[226,388,389],{},"Объединяет батчи, собирает граф, проверяет",[211,391,392,395],{},[226,393,394],{},"6-7",[226,396,397],{},"Строит шаги экскурсии, записывает результат",[178,399,400,401,404],{},"Результаты сохраняются в ",[229,402,403],{},".understand-anything\u002F",":",[406,407,408,415,421],"ul",{},[409,410,411,414],"li",{},[229,412,413],{},"knowledge-graph.json"," - полный граф (узлы, рёбра, слои, экскурсия)",[409,416,417,420],{},[229,418,419],{},"meta.json"," - хеш коммита и время последнего анализа",[409,422,423,426],{},[229,424,425],{},"fingerprints.json"," - хеши файлов для инкрементальных обновлений",[173,428,430],{"id":429},"исключения","Исключения",[178,432,433,436,437,288,440,288,443,446],{},[229,434,435],{},".understand-anything\u002F.understandignore"," управляет тем, что исключается из анализа. Использует синтаксис gitignore. По умолчанию всегда исключаются ",[229,438,439],{},"node_modules\u002F",[229,441,442],{},"dist\u002F",[229,444,445],{},"*.lock",", изображения и т.д.",[178,448,449],{},"Текущие активные исключения:",[451,452,457],"pre",{"className":453,"code":455,"language":456},[454],"language-text",".playwright-mcp        # Скриншоты Playwright MCP\ndocs\u002F                  # Сайт документации (отдельный проект)\n*.test.*               # Тестовые файлы\n*.spec.*               # Spec файлы\n*.snap                 # Снапшоты\n","text",[229,458,455],{"__ignoreMap":459},"",[178,461,462,463,465],{},"Раскомментируйте или добавьте паттерны для дополнительных исключений, затем снова запустите ",[229,464,231],{},".",[173,467,469],{"id":468},"инкрементальные-обновления","Инкрементальные обновления",[178,471,472,473,475,476,404],{},"Если граф уже существует, ",[229,474,231],{}," сравнивает текущий коммит git с ",[229,477,419],{},[406,479,480,486,492],{},[409,481,482,485],{},[191,483,484],{},"Тот же коммит"," - предлагает пересобрать или пропустить",[409,487,488,491],{},[191,489,490],{},"Изменённые файлы"," - повторно анализирует только изменённые файлы и вливает в существующий граф",[409,493,494,500],{},[191,495,496,497],{},"Флаг ",[229,498,499],{},"--full"," - принудительная полная пересборка с нуля",[173,502,504],{"id":503},"обновление-дашборда","Обновление дашборда",[178,506,507,508,510],{},"После запуска ",[229,509,231],{}," нужно переразместить дашборд:",[451,512,516],{"className":513,"code":514,"language":515,"meta":459,"style":459},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. Скопировать обновлённый граф в public директорию дашборда\ncp .understand-anything\u002Fknowledge-graph.json \\\n   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\ncp .understand-anything\u002Fmeta.json \\\n   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\n\n# 2. Сборка (demo режим - граф отдаётся с того же origin)\ncd ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\nVITE_DEMO_MODE=true pnpm exec vite build --config vite.config.demo.ts --base \u002F\n\n# 3. Деплой\ncd dist && vercel deploy --prod --yes\n","bash",[229,517,518,527,542,548,558,563,570,576,586,623,628,634],{"__ignoreMap":459},[519,520,523],"span",{"class":521,"line":522},"line",1,[519,524,526],{"class":525},"sHwdD","# 1. Скопировать обновлённый граф в public директорию дашборда\n",[519,528,530,534,538],{"class":521,"line":529},2,[519,531,533],{"class":532},"sBMFI","cp",[519,535,537],{"class":536},"sfazB"," .understand-anything\u002Fknowledge-graph.json",[519,539,541],{"class":540},"sTEyZ"," \\\n",[519,543,545],{"class":521,"line":544},3,[519,546,547],{"class":536},"   ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\u002Fpublic\u002F\n",[519,549,551,553,556],{"class":521,"line":550},4,[519,552,533],{"class":532},[519,554,555],{"class":536}," .understand-anything\u002Fmeta.json",[519,557,541],{"class":540},[519,559,561],{"class":521,"line":560},5,[519,562,547],{"class":536},[519,564,566],{"class":521,"line":565},6,[519,567,569],{"emptyLinePlaceholder":568},true,"\n",[519,571,573],{"class":521,"line":572},7,[519,574,575],{"class":525},"# 2. Сборка (demo режим - граф отдаётся с того же origin)\n",[519,577,579,583],{"class":521,"line":578},8,[519,580,582],{"class":581},"s2Zo4","cd",[519,584,585],{"class":536}," ~\u002F.claude\u002Fplugins\u002Fcache\u002Funderstand-anything\u002Funderstand-anything\u002F2.7.5\u002Fpackages\u002Fdashboard\n",[519,587,589,592,596,599,602,605,608,611,614,617,620],{"class":521,"line":588},9,[519,590,591],{"class":540},"VITE_DEMO_MODE",[519,593,595],{"class":594},"sMK4o","=",[519,597,598],{"class":536},"true",[519,600,601],{"class":532}," pnpm",[519,603,604],{"class":536}," exec",[519,606,607],{"class":536}," vite",[519,609,610],{"class":536}," build",[519,612,613],{"class":536}," --config",[519,615,616],{"class":536}," vite.config.demo.ts",[519,618,619],{"class":536}," --base",[519,621,622],{"class":536}," \u002F\n",[519,624,626],{"class":521,"line":625},10,[519,627,569],{"emptyLinePlaceholder":568},[519,629,631],{"class":521,"line":630},11,[519,632,633],{"class":525},"# 3. Деплой\n",[519,635,637,639,642,645,648,651,654],{"class":521,"line":636},12,[519,638,582],{"class":581},[519,640,641],{"class":536}," dist",[519,643,644],{"class":594}," &&",[519,646,647],{"class":532}," vercel",[519,649,650],{"class":536}," deploy",[519,652,653],{"class":536}," --prod",[519,655,656],{"class":536}," --yes\n",[173,658,660],{"id":659},"возможности-дашборда","Возможности дашборда",[178,662,663],{},"В дашборде три вида:",[406,665,666,672,678],{},[409,667,668,671],{},[191,669,670],{},"Knowledge Graph"," - полный граф связей между файлами с раскраской по слоям, фильтрами по слою или типу рёбер",[409,673,674,677],{},[191,675,676],{},"Domain Graph"," - бизнес-процессы (если был запущен анализ доменов)",[409,679,680,683],{},[191,681,682],{},"Architecture Layers"," - файлы, сгруппированные по слоям с описаниями",[178,685,686],{},"Из любого узла можно открыть исходный файл прямо в интерфейсе, посмотреть его импорты и зависимые файлы, пройти экскурсию по проекту.",[173,688,690],{"id":689},"архитектурные-слои","Архитектурные слои",[178,692,693],{},"Каждый файл распределяется в один из 9 слоёв:",[205,695,696,705],{},[208,697,698],{},[211,699,700,703],{},[214,701,702],{},"Слой",[214,704,219],{},[221,706,707,717,727,744,754,764,774,784,794],{},[211,708,709,714],{},[226,710,711],{},[191,712,713],{},"Entry",[226,715,716],{},"Точки входа приложения и Nuxt конфиг",[211,718,719,724],{},[226,720,721],{},[191,722,723],{},"Config",[226,725,726],{},"Конфиги сборки, ESLint, TypeScript",[211,728,729,734],{},[226,730,731],{},[191,732,733],{},"Backend",[226,735,736,737,288,740,743],{},"Схема Supabase Postgres + RLS + правила синхронизации PowerSync (",[229,738,739],{},"app\u002Fsupabase\u002F",[229,741,742],{},"app\u002Fpowersync\u002F",")",[211,745,746,751],{},[226,747,748],{},[191,749,750],{},"Auth",[226,752,753],{},"Supabase Auth (email\u002Fпароль); двухуровневая защита маршрутов",[211,755,756,761],{},[226,757,758],{},[191,759,760],{},"Store",[226,762,763],{},"Pinia сторы (categories, wallets, trns, rates, settings)",[211,765,766,771],{},[226,767,768],{},[191,769,770],{},"Composables",[226,772,773],{},"Vue composables и утилиты",[211,775,776,781],{},[226,777,778],{},[191,779,780],{},"Components",[226,782,783],{},"Vue компоненты, сгруппированные по фичам",[211,785,786,791],{},[226,787,788],{},[191,789,790],{},"Pages",[226,792,793],{},"Nuxt страницы и лейауты",[211,795,796,801],{},[226,797,798],{},[191,799,800],{},"Types",[226,802,803],{},"Общие TypeScript типы и валидаторы",[805,806,807],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":459,"searchDepth":529,"depth":529,"links":809},[810,811,812,813,814,815,816,817],{"id":175,"depth":529,"text":176},{"id":202,"depth":529,"text":203},{"id":320,"depth":529,"text":321},{"id":429,"depth":529,"text":430},{"id":468,"depth":529,"text":469},{"id":503,"depth":529,"text":504},{"id":659,"depth":529,"text":660},{"id":689,"depth":529,"text":690},"Интерактивный граф знаний кодовой базы Finapp, сгенерированный плагином understand-anything.","md",null,{},{"icon":75},{"title":824,"description":825},"Граф знаний кодовой базы","Плагин understand-anything для Finapp - интерактивный граф знаний, архитектурные слои, связи между файлами и экскурсия по проекту.","HqeZl5oL7e8_MyU0k4PEX3defmiKOp74HfBhvqu_GxM",[828,830],{"title":16,"path":68,"stem":69,"description":829,"icon":70,"children":-1},"Начало работы с Финапкой - клонирование, настройка переменных окружения, запуск локального бэкенда и dev-сервера.",{"title":77,"path":78,"stem":79,"description":831,"icon":80,"children":-1},"Как Финапка работает офлайн как прогрессивное веб-приложение.",1782114339390]