AAYMA
RU
Войти

MoneyGraph Investigator

AML-инструмент: детерминированный Python-пайплайн по трём parquet строит граф переводов, назначает 6 ролей, считает приоритет и сообщества и…

Доведённый продукт
Команда «Aman AI» 3💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Aman AI
Кейс HackAlem.ai: Финансы — Freedom
Стадия: Доведённый продукт

Задача кейса: «Граф денег»: восстановить структуру организованной группы по сети транзакций (AML)

Суть

AML-инструмент: детерминированный Python-пайплайн по трём parquet строит граф переводов, назначает 6 ролей, считает приоритет и сообщества и формирует обязательные CSV. React-интерфейс показывает граф, а опциональный AI Investigator исследует уже рассчитанные факты.

Как устроено

main.py проверяет схему и согласованность рёбер с транзакциями, строит направленный граф NetworkX и считает объёмы, степени, PageRank, betweenness, достижимость от seed и календарные признаки. Сообщества Louvain ищутся на взвешенной неориентированной проекции, затем отдельно рассчитываются role_score и priority_score и детерминированные текстовые обоснования. Экспортёр готовит project-data.json для React с react-force-graph-2d. AI-чат на OpenAI Responses API работает с инструментами расследования, а NVIDIA API может выступать критиком ответа.

Ключевые решения

  • NetworkX
  • PageRank
  • betweenness
  • Louvain
  • seed convergence
  • rule-based roles
  • grounding
  • LLM critic
  • function calling

Особенности

Детерминизм проверяется автоматически: Docker-сборка дважды запускает пайплайн и побайтово сравнивает обязательные CSV. Второй провайдер (NVIDIA) используется как критик ответа. В .codex/skills лежат скиллы под каждый модуль (role-engine, priority-engine, seed-convergence) для разработки с агентами.

Стек

Python · pandas · PyArrow · NetworkX · SciPy · FastAPI · TypeScript · React · Vite · Tailwind CSS · shadcn/Radix · Zod · react-force-graph-2d · Docker Compose · pytest · Vitest · Playwright

Модели

OpenAI Responses API · NVIDIA API (критик)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-7cf34f56-aman-ai.

README

README.md

MoneyGraph Investigator

MoneyGraph Investigator — проект команды Aman AI для кейса HackAlem AI «Граф денег». Это инструмент для AML-аналитика: он помогает понять, какие узлы в обезличенном графе переводов стоит изучить в первую очередь и на каких наблюдаемых данных основана эта рекомендация.

Проект не определяет виновность и не устанавливает связи с преступной деятельностью. Роли, приоритеты и сообщества — объяснимые гипотезы для дальнейшей проверки аналитиком.

Какую проблему решает проект

В крупном графе переводов сложно вручную увидеть точки концентрации, распределения, транзита и структурно важные связи. MoneyGraph строит направленный граф из выгрузки, рассчитывает признаки для каждого клиента, формирует список приоритетных узлов и даёт аналитику возможность проверить основания через интерактивный граф.

Целевая аудитория — аналитики финансового мониторинга и жюри хакатона, которым нужно воспроизводимо проверить расчёт и результат на предоставленном датасете.

Что реализовано

  • Воспроизводимый Python-pipeline: валидация трёх Parquet-файлов, построение направленного графа и создание обязательных CSV.
  • Шесть объяснимых функциональных ролей: consolidator, transit, distributor, terminal, coordinator, peripheral.
  • Отдельные role_score и priority_score: совпадение с ролью не смешивается с полезностью узла для проверки.
  • Расчёт входящих и исходящих наблюдаемых объёмов, степеней, PageRank, betweenness, достижимости от seed-узлов, сообществ Louvain и календарных признаков.
  • Детерминированные текстовые обоснования для каждого узла и топ-20 приоритетных кандидатов.
  • Интерактивный React-интерфейс: поиск по GID, карточка клиента, фильтры, направленные связи, локальный обход на 1–4 шага, сообщества и экспорт наблюдаемых переводов в CSV.
  • Предупреждения о границе наблюдения на глубине 4 и неполноте входящих потоков seed-узлов.
  • Опциональные FastAPI и AI Investigator для исследования уже рассчитанных фактов. Они не меняют роли, оценки, кластеры или обязательные CSV.
  • Docker Compose для запуска одной командой без локальной установки Python или Node.js.

Для включённого датасета pipeline формирует 2 248 узлов, 3 119 направленных рёбер, 4 840 транзакций, 65 сообществ и топ-20 узлов. Это характеристики конкретной выгрузки, а не показатель точности выявления нарушений.

Как работает решение

  1. Пользователь помещает в data/ три исходных Parquet-файла или использует уже включённые в репозиторий.
  2. main.py проверяет схему, GID, суммы, даты и согласованность агрегированных рёбер с транзакциями.
  3. Pipeline строит направленный граф и рассчитывает структурные, объёмные, календарные и seed-признаки.
  4. На взвешенной неориентированной проекции находятся сообщества Louvain; далее рассчитываются роли, приоритеты и обоснования.
  5. Результаты сохраняются в results/ как обязательные CSV и вспомогательные JSON-артефакты.
  6. Экспортёр готовит project-data.json из результатов и исходных узлов/рёбер, после чего React-интерфейс показывает граф и карточки.
  7. Аналитик выбирает узел из списка приоритетов или вводит GID, изучает наблюдаемые связи, численные основания, кластер и ограничения данных.
flowchart LR
  A["data/*.parquet"] --> B["Python: валидация и граф"]
  B --> C["Метрики, seed-достижимость, Louvain, календарные признаки"]
  C --> D["Роли, приоритет, evidence"]
  D --> E["results/*.csv и JSON"]
  E --> F["Экспортёр project-data.json"]
  F --> G["React-интерфейс"]
  E --> H["Опциональный FastAPI"]
  G --> I["Опциональный AI-помощник"]
  H --> I

Архитектура

КомпонентОтветственность
main.pyЗапускает детерминированный аналитический pipeline и записывает результаты.
apps/backend/moneygraph/Валидация, граф, признаки, seed-конвергенция, сообщества, роли, приоритет, evidence и продуктовые JSON.
results/Обязательные CSV, карточки узлов, направленный граф и диагностика.
apps/frontend/React-интерфейс, подготовка project-данных, просмотр графа и сервер AI-помощника.
apps/backend/moneygraph/api.pyОпциональный FastAPI, который раздаёт уже рассчитанные артефакты.
Dockerfile и docker-compose.ymlСборка pipeline и интерфейса, запуск production-сервера.

Обязательный путь не зависит от API, AI, базы данных, GPU или интернет-соединения после установки зависимостей. Docker-сборка использует интернет только для скачивания базовых образов и пакетов при первой сборке.

Технологии

ОбластьИспользуемые технологии
АналитикаPython, pandas, PyArrow, NetworkX, SciPy, NumPy
Вход и результатыParquet, UTF-8 CSV, JSON
Backend APIFastAPI, Uvicorn, Pydantic
ИнтерфейсTypeScript, React, Vite, Tailwind CSS, shadcn/Radix, Zod
Визуализацияreact-force-graph-2d, Canvas
AI, опциональноOpenAI Responses API и официальный SDK openai; NVIDIA API может выступать дополнительным критиком ответа
Проверкиpytest, Vitest, Oxlint, Playwright MCP
РазвёртываниеDocker, Docker Compose; в репозитории есть Render Blueprint, но опубликованной версии нет

Точные версии зависимостей закреплены в requirements.txt, apps/backend/requirements.txt и apps/frontend/package.json.

Данные и интеграции

Источник данных — обезличенный датасет организаторов. Требуются следующие файлы:

data/
├── nodes.parquet          # gid, depth, is_seed
├── edges.parquet          # src, dst, sum_kzt, n_tx, depth
└── transactions.parquet   # src, dst, date, sum_kzt

edges.parquet — канонический источник структуры, направлений и агрегированных объёмов. transactions.parquet используется для проверки агрегатов и календарных признаков. Описание датасета находится в starter/READ_2.md.

На границе Python, JSON и JavaScript GID передаются строками: идентификаторы могут быть больше безопасного диапазона JavaScript number.

Основной сценарий не требует внешних сервисов. OpenAI и NVIDIA используются только при явной настройке ключей в окружении сервера. Подключений к банковским системам, внешним персональным данным или внешним базам данных нет.

Установка и запуск

Быстрый запуск для жюри через Docker

Нужны Docker Engine и Docker Compose v2. В терминале перейдите в корень репозитория и выполните:

cd /путь/к/hack-7cf34f56-aman-ai
docker compose up --build -d --wait --wait-timeout 120

После успешного health check откройте http://localhost:8080.

Команда внутри образа устанавливает зависимости, дважды запускает main.py, сравнивает обязательные CSV побайтово, готовит данные интерфейса и собирает production-версию. Локальные Python, Node.js и AI-ключи не требуются. Docker Compose публикует сервис только на 127.0.0.1.

Если порт занят, задайте другой перед запуском:

MONEYGRAPH_PORT=8081 docker compose up --build -d --wait --wait-timeout 120

Тогда откройте http://localhost:8081.

Остановить приложение:

docker compose down

Извлечь обязательные CSV из работающего контейнера:

mkdir -p results
mkdir results/docker
docker compose cp moneygraph:/app/results/. results/docker/

Подробности о Docker и подготовленном Render Blueprint — в docs/deployment.md.

Локальный запуск без Docker

Нужны Python 3.12+ (кроме 3.14.1), Node.js 22.18+ и npm. Самый простой вариант:

python3 scripts/run-local.py

Скрипт создаёт .venv, устанавливает зависимости, дважды запускает pipeline, сравнивает хеши CSV, собирает интерфейс и открывает сервер на http://127.0.0.1:5173.

Для ручного запуска аналитики:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python main.py

После расчёта запустите интерфейс:

npm --prefix apps/frontend ci
npm --prefix apps/frontend run dev -- --host 127.0.0.1

Откройте http://127.0.0.1:5173. Перед dev и build экспортёр проверяет результат и готовит локальный apps/frontend/public/project-data.json.

Результаты pipeline

ФайлСодержимое
results/nodes_roles.csvGID, роль, оценка роли, кластер, приоритет и evidence для каждого узла.
results/clusters.csvСводка по сообществам.
results/top_nodes.csvРанжированный топ-20 узлов для проверки.
results/node_cards.jsonРасширенные карточки узлов для API и исследовательских инструментов.
results/graph.jsonНаправленный граф для продуктовой интеграции.
results/analytics_diagnostics.jsonДиагностические распределения и кандидаты.

Как проверить решение

Сценарий для жюри

  1. Выполните Docker-команду из раздела выше и откройте http://localhost:8080.
  2. Убедитесь, что приложение загрузилось в режиме «Данные проекта».
  3. Откройте панель приоритетов и выберите первый узел. Сверьте его GID, роль и причину с первой строкой results/top_nodes.csv из контейнера или локального results/.
  4. В карточке переключите входящие, исходящие и все связи; проверьте обход на 1–4 шага и сводку кластера.
  5. Найдите GID 100000000404740100. Это узел глубины 4: интерфейс должен показать ограничение границы наблюдения, а отсутствие видимых исходящих связей не должно трактоваться как окончательная остановка средств.
  6. Введите несуществующий GID, например 1, и проверьте понятное состояние «не найден».

Проверка детерминированности без Docker

После установки Python-зависимостей запустите:

.venv/bin/python main.py
shasum -a 256 results/nodes_roles.csv results/clusters.csv results/top_nodes.csv
.venv/bin/python main.py
shasum -a 256 results/nodes_roles.csv results/clusters.csv results/top_nodes.csv

Контрольные суммы трёх файлов после обоих запусков должны совпасть. scripts/run-local.py и Dockerfile выполняют эту проверку автоматически.

Автоматические проверки

# Backend
.venv/bin/python -m pip install -r apps/backend/requirements-dev.txt
PYTHONPATH=apps/backend .venv/bin/python -m pytest apps/backend/tests -q

# Frontend
npm --prefix apps/frontend run data:project
npm --prefix apps/frontend run lint
npm --prefix apps/frontend test
npm --prefix apps/frontend run test:agent
npm --prefix apps/frontend run build
npm --prefix apps/frontend run test:server

Для браузерной проверки требуется работающий локальный интерфейс и Chromium:

cd apps/frontend
npx playwright install chromium
QA_BASE_URL=http://localhost:8080/ npm run qa:project

Опциональные API и AI

После запуска main.py можно поднять аналитический API:

.venv/bin/python -m pip install -r apps/backend/requirements-api.txt
.venv/bin/python -m uvicorn moneygraph.api:app --app-dir apps/backend --host 127.0.0.1 --port 8000

Он отдаёт готовые результаты через /health, /api/top-nodes, /api/nodes/{gid}, /api/nodes/{gid}/subgraph, /api/clusters/{cluster_id} и /api/search. Контракт описан в docs/backend/frontend-handoff.md.

AI-помощник требует OPENAI_API_KEY в окружении процесса. По умолчанию используется модель gpt-4.1-mini, которую можно заменить переменной OPENAI_MODEL. NVIDIA-проверка включается отдельно через NVIDIA_API_KEY. Ключи не передаются в браузер и не нужны для детерминированного pipeline.

Ограничения

  • Датасет покрывает наблюдаемые операции из предоставленной выгрузки. Входящие потоки seed-узлов могут быть неполными, а разность входящего и исходящего объёма не является балансом счёта.
  • Глубина 4 — граница наблюдения. У таких узлов отсутствие исходящих рёбер не означает, что движение средств завершилось; они не получают роль terminal только на этом основании.
  • В транзакциях есть календарная дата, но нет времени суток. Можно говорить о совпадении дат или интервале в календарных днях, но не о минутах или часах между операциями.
  • У датасета нет размеченной истины для ролей. Результаты — объяснимые эвристики, поэтому проект не заявляет точность классификации или обнаружения нарушений.
  • Основной интерфейс работает в режиме project через локально подготовленный JSON. FastAPI существует, однако его HTTP-контракт пока не является основным интеграционным путём React-интерфейса.
  • AI-функции зависят от ключей и доступности провайдеров; ответы ограничены рассчитанными инструментами и требуют проверки аналитиком.
  • Для графов значительно большего размера потребуется другой графовый движок, приближённые метрики и выдача ограниченных подграфов вместо полного графа в браузер.

Размещённая версия

Подтверждённой deployed-версии и публичной ссылки в текущем репозитории нет. В проекте подготовлены Dockerfile, docker-compose.yml и render.yaml, но публикация на Render ещё не подтверждена.

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

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
19
Авторы
2
Файлы
240
Ветки
1

Авторы коммитов

Atilla 14Adilet-tech 5

История коммитов

  • 2026-09-23 17:57docker-sompose, readmeAdilet-tech
  • 2026-09-23 17:44Merge remote-tracking branch 'origin/main'Atilla
  • 2026-09-23 17:44feat: add protected deployment and browser investigation toolsAtilla
  • 2026-09-23 17:35feat: add grounded MoneyGraph AI investigation chatAdilet-tech
  • 2026-09-23 17:30fix frontendAtilla
  • 2026-09-23 17:16add openai chatbot agentAtilla
  • 2026-09-23 17:07Merge backend analytics with fullscreen frontendAtilla
  • 2026-09-23 17:01add frontend v1Atilla
Все коммиты (19)
  • 2026-09-23 16:51add frontendAtilla
  • 2026-09-23 16:50frontend v0.4Atilla
  • 2026-09-23 16:27feat: complete MoneyGraph backend and frontend API contractAdilet-tech
  • 2026-09-23 15:56frontend v0.3Atilla
  • 2026-09-23 15:12feat: implement deterministic MoneyGraph analytics pipelineAdilet-tech
  • 2026-09-23 15:10frontend v0.1Atilla
  • 2026-09-23 14:52frontend v0Atilla
  • 2026-09-23 14:28docs: define MoneyGraph UI contract and frontend workflowAtilla
  • 2026-09-23 14:12docs: add approved MoneyGraph designAdilet-tech
  • 2026-09-23 13:32add dataAtilla
  • 2026-09-23 13:28initial commitAtilla
Структура репозитория (240 файлов)
.codex/.gitkeep
.codex/skills/frontend-design/.gitkeep
.codex/skills/frontend-design/README.md
.codex/skills/frontend-design/bklit-ui/SKILL.md
.codex/skills/frontend-design/bklit-ui/rules/animation.md
.codex/skills/frontend-design/bklit-ui/rules/composition.md
.codex/skills/frontend-design/bklit-ui/rules/installation.md
.codex/skills/frontend-design/bklit-ui/rules/theming.md
.codex/skills/frontend-design/bklit-ui/rules/tooltips.md
.codex/skills/frontend-design/frontend-qa/SKILL.md
.codex/skills/frontend-design/moneygraph-frontend/SKILL.md
.codex/skills/frontend-design/shadcn/SKILL.md
.codex/skills/frontend-design/shadcn/agents/openai.yml
.codex/skills/frontend-design/shadcn/assets/shadcn-small.png
.codex/skills/frontend-design/shadcn/assets/shadcn.png
.codex/skills/frontend-design/shadcn/cli.md
.codex/skills/frontend-design/shadcn/customization.md
.codex/skills/frontend-design/shadcn/evals/evals.json
.codex/skills/frontend-design/shadcn/mcp.md
.codex/skills/frontend-design/shadcn/registry.md
.codex/skills/frontend-design/shadcn/rules/base-vs-radix.md
.codex/skills/frontend-design/shadcn/rules/chat.md
.codex/skills/frontend-design/shadcn/rules/composition.md
.codex/skills/frontend-design/shadcn/rules/forms.md
.codex/skills/frontend-design/shadcn/rules/icons.md
.codex/skills/frontend-design/shadcn/rules/styling.md
.codex/skills/moneygraph-ai-investigator/SKILL.md
.codex/skills/moneygraph-api-contract/SKILL.md
.codex/skills/moneygraph-data-validation/SKILL.md
.codex/skills/moneygraph-graph-engine/SKILL.md
.codex/skills/moneygraph-output-validation/SKILL.md
.codex/skills/moneygraph-priority-engine/SKILL.md
.codex/skills/moneygraph-role-engine/SKILL.md
.codex/skills/moneygraph-seed-convergence/SKILL.md
.dockerignore
.env.example
.gitignore
.python-version
AGENTS.md
Dockerfile
README.md
apps/.gitkeep
apps/backend/.gitkeep
apps/backend/AGENTS.md
apps/backend/explore.py
apps/backend/investigate.py
apps/backend/moneygraph/__init__.py
apps/backend/moneygraph/api.py
apps/backend/moneygraph/communities.py
apps/backend/moneygraph/critic.py
apps/backend/moneygraph/data_validation.py
apps/backend/moneygraph/diagnostics.py
apps/backend/moneygraph/evidence.py
apps/backend/moneygraph/features.py
apps/backend/moneygraph/graph_engine.py
apps/backend/moneygraph/grounding.py
apps/backend/moneygraph/investigation_tools.py
apps/backend/moneygraph/investigator.py
apps/backend/moneygraph/outputs.py
apps/backend/moneygraph/pipeline.py
apps/backend/moneygraph/priority.py
apps/backend/moneygraph/product.py
apps/backend/moneygraph/roles.py
apps/backend/moneygraph/seed_convergence.py
apps/backend/moneygraph/semantics.py
apps/backend/moneygraph/store.py
apps/backend/moneygraph/temporal.py
apps/backend/requirements-ai.txt
apps/backend/requirements-api.txt
apps/backend/requirements-dev.txt
apps/backend/requirements.txt
apps/backend/run_phases_0_4.py
apps/backend/tests/test_api.py
apps/backend/tests/test_completion.py
apps/backend/tests/test_evidence_validation.py
apps/backend/tests/test_explorer.py
apps/backend/tests/test_foundation.py
apps/backend/tests/test_investigator.py
apps/backend/tests/test_mandatory_pipeline.py
apps/frontend/.gitignore
apps/frontend/.gitkeep
apps/frontend/.oxlintrc.json
apps/frontend/README.md
apps/frontend/components.json
apps/frontend/index.html
apps/frontend/package-lock.json
apps/frontend/package.json
apps/frontend/public/demo.json
apps/frontend/public/favicon.svg
apps/frontend/scripts/agent-browser-qa.mjs
apps/frontend/scripts/agent-live-qa.mjs
apps/frontend/scripts/analyst-browser-qa.mjs
apps/frontend/scripts/api-browser-qa.mjs
apps/frontend/scripts/browser-qa.mjs
apps/frontend/scripts/csv-browser-qa.mjs
apps/frontend/scripts/export-project-data.py
apps/frontend/scripts/generate-demo.mjs
apps/frontend/scripts/graph-browser-qa.mjs
apps/frontend/scripts/graph-qa/encoding.mjs
apps/frontend/scripts/graph-qa/interactions.mjs
apps/frontend/scripts/graph-qa/settings.mjs
apps/frontend/scripts/prepare-project-data.mjs
apps/frontend/scripts/project-browser-qa.mjs
apps/frontend/scripts/test_export_project_data.py
apps/frontend/server/agent-http.mjs
apps/frontend/server/agent-http.test.mjs
apps/frontend/server/agent-security.test.mjs
apps/frontend/server/agent.d.mts
apps/frontend/server/agent.mjs
apps/frontend/server/agent.test.mjs
apps/frontend/server/investigation-tools.mjs
apps/frontend/server/investigation-tools.test.mjs
apps/frontend/server/production.mjs
apps/frontend/server/production.node-test.mjs
apps/frontend/server/standalone.mjs
apps/frontend/src/App.tsx
apps/frontend/src/components/AMLGraph.tsx
apps/frontend/src/components/agent-chat.tsx
apps/frontend/src/components/annotation-boundary.tsx
apps/frontend/src/components/csv-dashboard.tsx
apps/frontend/src/components/graph-panel.tsx
apps/frontend/src/components/graph-settings.tsx
apps/frontend/src/components/node-inspector.tsx
apps/frontend/src/components/priority-panel.tsx
apps/frontend/src/components/shared.tsx
apps/frontend/src/components/ui/accordion.tsx
apps/frontend/src/components/ui/alert.tsx
apps/frontend/src/components/ui/badge.tsx
apps/frontend/src/components/ui/bubble.tsx
apps/frontend/src/components/ui/button.tsx
apps/frontend/src/components/ui/card.tsx
apps/frontend/src/components/ui/checkbox.tsx
apps/frontend/src/components/ui/empty.tsx
apps/frontend/src/components/ui/field.tsx
apps/frontend/src/components/ui/input.tsx
apps/frontend/src/components/ui/label.tsx
apps/frontend/src/components/ui/message-scroller.tsx
apps/frontend/src/components/ui/message.tsx
apps/frontend/src/components/ui/progress.tsx
apps/frontend/src/components/ui/scroll-area.tsx
apps/frontend/src/components/ui/select.tsx
apps/frontend/src/components/ui/separator.tsx
apps/frontend/src/components/ui/sheet.tsx
apps/frontend/src/components/ui/skeleton.tsx
apps/frontend/src/components/ui/slider.tsx
apps/frontend/src/components/ui/spinner.tsx
apps/frontend/src/components/ui/switch.tsx
apps/frontend/src/components/ui/table.tsx
apps/frontend/src/components/ui/tabs.tsx
apps/frontend/src/components/ui/textarea.tsx
apps/frontend/src/components/ui/toggle-group.tsx
apps/frontend/src/components/ui/toggle.tsx
apps/frontend/src/components/ui/tooltip.tsx
apps/frontend/src/index.css
apps/frontend/src/lib/api.ts
apps/frontend/src/lib/chat.test.ts
apps/frontend/src/lib/chat.ts
apps/frontend/src/lib/contracts.test.ts
apps/frontend/src/lib/contracts.ts
apps/frontend/src/lib/csv-analytics.test.ts
apps/frontend/src/lib/csv-analytics.ts
apps/frontend/src/lib/csv.worker.ts
apps/frontend/src/lib/export.ts
apps/frontend/src/lib/flow-layout.test.ts
apps/frontend/src/lib/flow-layout.ts
apps/frontend/src/lib/format.ts
apps/frontend/src/lib/graph-adapter.test.ts
apps/frontend/src/lib/graph-adapter.ts
apps/frontend/src/lib/graph-api.test.ts
apps/frontend/src/lib/graph-demo.ts
apps/frontend/src/lib/graph-presentation.ts
apps/frontend/src/lib/graph-settings.test.ts
apps/frontend/src/lib/graph-settings.ts
apps/frontend/src/lib/use-agent-chat.ts
apps/frontend/src/lib/use-resource.ts
apps/frontend/src/lib/utils.ts
apps/frontend/src/main.tsx
apps/frontend/tsconfig.app.json
apps/frontend/tsconfig.json
apps/frontend/tsconfig.node.json
apps/frontend/vite.config.ts
apps/frontend/vitest.agent.config.ts
data/edges.parquet
data/nodes.parquet
data/transactions.parquet
docker-compose.yml
docs/aml-graph-qa.md
docs/aml-graph.md
docs/backend/agent-prompts.md
docs/backend/ai-chat-handoff.md
docs/backend/ai-investigator.md
docs/backend/analytics-contract.md
docs/backend/api-contract.md
docs/backend/checklist.md
docs/backend/completion-report.md
docs/backend/data-contract.md
docs/backend/decisions.md
docs/backend/examples/cluster.mock.json
docs/backend/examples/graph.mock.json
docs/backend/examples/node-card.mock.json
docs/backend/examples/top-nodes.mock.json
docs/backend/final-independent-review.md
docs/backend/frontend-handoff.md
docs/backend/full-review.md
docs/backend/implementation-plan.md
docs/backend/output-contract.md
docs/backend/scaling.md
docs/backend/testing-strategy.md
docs/canvas-workspace-qa.md
docs/case-requirements-audit.md
docs/deployment.md
docs/features.md
docs/frontend-qa-report.md
docs/frontend-requirements-and-pipeline.md
docs/moneygraph-investigator-design.md
docs/moneygraph-ui-design-contract.md
docs/organizer-reproducibility.md
docs/project-data-qa.md
docs/project-review-2026-09-23.md
docs/project_description.md
main.py
package-lock.json
package.json
render.yaml
requirements.txt
results/analytics_diagnostics.json
results/clusters.csv
results/diagnostics_phase_0_4.json
results/graph.json
results/node_cards.json
results/nodes_roles.csv
results/top_nodes.csv
scripts/run-local.py
starter/README.md
starter/READ_2.md
starter/out/clusters.csv
starter/out/nodes_roles.csv
starter/out/top_nodes.csv
starter/requirements.txt
starter/starter.py

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.