Skip to main content
Glama
WIndFate

Legal Contract Review Agent

by WIndFate

ContractGuard

License: MIT Python 3.11+ LangGraph

Анализ рисков японских договоров, созданный в качестве учебного проекта по разработке ИИ — рабочий процесс LangGraph + pgvector RAG + мультимодальный ввод + восстанавливаемый потоковый UX.

⚠️ Не является юридической услугой. Этот репозиторий никогда не использовался в коммерческих целях — статья 72 Закона об адвокатах Японии (弁護士法第72条) резервирует право на оказание платных юридических консультаций за лицензированными адвокатами. Кодовая база публикуется исключительно как технический артефакт с открытым исходным кодом. Результаты работы не являются юридическими заключениями.

中文文档 | 日本語 | License

Статус

Готовая к эксплуатации эталонная реализация с открытым исходным кодом. Весь стек — фронтенд, бэкенд, OCR, платежи, электронная почта, Postgres, Redis, отслеживание ошибок — подключен с использованием реальных интеграций и готов к развертыванию. Он просто никогда не был запущен по замыслу (статья 72 Закона об адвокатах).

Синтетический японский договор находится в docs/samples/, поэтому локальный процесс можно протестировать от начала до конца сразу после клонирования.

Related MCP server: Contract Review AI MCP

Архитектура

flowchart LR
  U[React/Vite UI<br/>text, PDF, image upload] --> API[FastAPI routers]
  API --> Q[Quote + PII + OCR budget guards]
  Q --> PAY[KOMOJU checkout<br/>reference implementation]
  PAY --> JOB[Persistent analysis job]
  JOB --> SSE[Recoverable SSE stream<br/>status + events + after_seq]
  JOB --> LG[LangGraph pipeline]
  LG --> P[parse_contract]
  P --> A[clause-by-clause risk analysis]
  A --> T[tool call: analyze_clause_risk]
  T --> RAG[(PostgreSQL pgvector<br/>331 Japanese legal articles)]
  A --> S[tool call: generate_suggestion<br/>medium/high risks only]
  S --> REP[report generation + translation]
  REP --> CACHE[(Redis 72h report cache)]
  REP --> DB[(PostgreSQL orders/reports/costs)]

Технологический стек

Слой

Стек

Фронтенд

React, Vite, TypeScript, i18next (9 языков)

Бэкенд

FastAPI, SQLAlchemy async, Alembic, APScheduler

ИИ-рабочий процесс

LangGraph + вызовы инструментов OpenAI, MCP-сервер

RAG

PostgreSQL pgvector, 331 общедоступный статут e-Gov Японии

OCR

Google Cloud Vision (DOCUMENT_TEXT_DETECTION)

Хранилище

PostgreSQL (заказы / отчеты / события), Redis (кэш 72ч + ограничение частоты запросов)

Платежи

KOMOJU checkout

Электронная почта

Resend

Наблюдаемость

Sentry + PostHog

Инфраструктура

Docker Compose (локально), Fly.io + Vercel (эталон развертывания)

Быстрый старт (локально)

Для локального запуска требуется только ключ API OpenAI.

cp .env.example .env
# Edit .env: set OPENAI_API_KEY
docker compose up --build

Затем откройте http://localhost:5173 и загрузите docs/samples/sample-contract-ja.txt.

В этом минимальном режиме:

  • ✅ Договоры в виде обычного текста и текстовые PDF-файлы (с возможностью выделения текста) работают от начала до конца.

  • ❌ OCR для изображений / сканированных PDF отключен. Чтобы включить его, добавьте GOOGLE_APPLICATION_CREDENTIALS_JSON и GOOGLE_VISION_PROJECT_ID.

  • KOMOJU / Resend автоматически обходятся в режиме разработки — никаких реальных платежей, никаких реальных писем.

Настройка для продакшена

Репозиторий подготовлен для развертывания в продакшене путем установки APP_ENV=production и предоставления учетных данных для каждой внешней службы:

Служба

Необходимые переменные окружения

OpenAI

OPENAI_API_KEY

Google Cloud Vision (OCR)

GOOGLE_APPLICATION_CREDENTIALS_JSON, GOOGLE_VISION_PROJECT_ID

KOMOJU (платежи)

KOMOJU_SECRET_KEY, KOMOJU_PUBLISHABLE_KEY, KOMOJU_WEBHOOK_SECRET

Resend (почта)

RESEND_API_KEY

Sentry

SENTRY_DSN, VITE_SENTRY_DSN

PostHog

POSTHOG_API_KEY, VITE_POSTHOG_KEY

База данных / Кэш

DATABASE_URL (управляемый Postgres + pgvector), REDIS_URL (управляемый Redis)

Приложение

FRONTEND_URL (не localhost), ADMIN_API_TOKEN

Когда APP_ENV=production, приложение отказывается запускаться, если отсутствует что-либо из вышеперечисленного или FRONTEND_URL все еще указывает на localhost. Логика строгой проверки находится в backend/config.py (validate_runtime()).

fly.toml и vercel.json описывают топологию развертывания, использовавшуюся во время разработки. В настоящее время сервис не размещен в сети.

Процесс

  1. Загрузите договор (текст, PDF или изображение). Маршрут загрузки выполняет извлечение текста, проверку PII, оценку токенов, обнаружение не-договорных документов и контроль бюджета OCR.

  2. Путь оформления заказа создает заказ. Пустые учетные данные KOMOJU активируют локальный обход в режиме разработки.

  3. /review/:orderId запускает или возобновляет постоянную задачу анализа и транслирует события прогресса, которые сохраняются после обновления страницы.

  4. LangGraph анализирует положения, анализирует каждое положение с помощью вызовов инструментов, основанных на RAG, и генерирует предложения только там, где это оправдано риском.

  5. /report/:orderId показывает сохраненный отчет, выдержки из положений, фильтры рисков и экспорт в PDF — сохраняется в течение 72 часов.

Текст договора пользователя удаляется после анализа. Векторное хранилище содержит только общедоступные статуты e-Gov; договоры пользователей никогда не векторизуются.

Демо

home review progress report

Карта репозитория

Related MCP Connectors

Related MCP Servers