- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites) - Remove localhost refs: openapi, inbox page - Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI - Add stub routes: knowledge/insights, recommendations, search, log-error - Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests - Fix inbox-server: ORDER BY created_at, package.json - Remove redundant app/api/inbox/files route (rewrites handle it) - knowledge/ in gitignore (large PDFs) Co-authored-by: Cursor <cursoragent@cursor.com>
5.5 KiB
5.5 KiB
Модуль анализа и подготовки юридических документов
Система с мультиагентной ИИ-архитектурой для анализа, подготовки в соответствии с нормами законодательства разных стран документов (законодательных, рекомендательных, директивных, уведомительных и т.д.), перекрёстных ссылок на цитируемые документы, правовых комментариев и судебной практики.
Компоненты
Модели БД
| Таблица | Описание |
|---|---|
legal_jurisdictions |
Юрисдикции (RU, KZ, EU, US, ICAO, EASA и др.) |
legal_documents |
Документы: законодательные, рекомендательные, директивные, уведомительные, нормативные, договорные, судебные |
legal_cross_references |
Перекрёстные ссылки между цитируемыми документами |
legal_comments |
Правовые комментарии для использования в базе |
legal_judicial_practices |
Судебная практика (решения, определения) |
Типы документов (document_type)
legislative— законодательный (закон, кодекс)recommendatory— рекомендательныйdirective— директивныйnotification— уведомительныйregulatory— нормативно-правовой (приказы, постановления)contractual— договорнойjudicial— судебный актother— иное
ИИ-агенты
- DocumentClassifierAgent — классификация типа документа
- NormComplianceAgent — проверка соответствия нормам юрисдикции
- CrossReferenceAgent — поиск и добавление перекрёстных ссылок на цитируемые документы
- CommentEnrichmentAgent — подбор правовых комментариев из базы
- JudicialPracticeAgent — подбор судебной практики из базы
- FormattingAgent — рекомендации по структуре и оформлению по требованиям юрисдикции
Оркестратор LegalAnalysisOrchestrator запускает агентов, при необходимости сохраняет перекрёстные ссылки в БД и обновляет документ (analysis_json, compliance_notes).
API (префикс /api/v1/legal)
Юрисдикции
GET /legal/jurisdictions— списокPOST /legal/jurisdictions— создание (admin)GET /legal/jurisdictions/{id}— однаPATCH /legal/jurisdictions/{id}— обновление (admin)
Документы
GET /legal/documents?jurisdiction_id=&document_type=&limit=— списокPOST /legal/documents— созданиеGET /legal/documents/{id}— однаPATCH /legal/documents/{id}— обновлениеGET /legal/documents/{id}/cross-references?direction=outgoing|incoming— перекрёстные ссылки
Перекрёстные ссылки
POST /legal/cross-references— ручное добавление ссылки
Правовые комментарии
GET /legal/comments?jurisdiction_id=&document_id=— списокPOST /legal/comments— созданиеPATCH /legal/comments/{id}— обновление
Судебная практика
GET /legal/judicial-practices?jurisdiction_id=&document_id=— списокPOST /legal/judicial-practices— созданиеPATCH /legal/judicial-practices/{id}— обновление
ИИ-анализ
POST /legal/analyze— анализ по переданнымjurisdiction_id,title,content(и опциональноdocument_id). Тело:{ "document_id": "uuid или null", "jurisdiction_id": "uuid", "title": "Название документа", "content": "Текст или фрагмент", "skip_agents": ["classifier", "formatting"], "save_cross_references": true }POST /legal/documents/{id}/analyze?skip_agents=&save_cross_references=— анализ существующего документа по id
Настройка LLM
В .env или переменных окружения:
OPENAI_API_KEY— ключ OpenAI (или аналог)OPENAI_BASE_URL— базовый URL для локальных OpenAI-совместимых моделейLEGAL_LLM_MODEL— модель (по умолчаниюgpt-4o-mini)
В app.core.config добавлены: openai_api_key, openai_base_url, legal_llm_model.
Если LLM недоступен (нет ключа или ошибка), агенты работают в режиме заглушек (эвристики, пустые списки).
Первичное заполнение
Юрисдикции (RU, KZ, BY, EU, US, US-CA, ICAO, EASA):
cd backend && python -m app.db.seed_legal
Зависимости
openai>=1.0.0— для вызова LLM (OpenAI-совместимый API).