klg-asutk-app/docs/LEGAL_MODULE.md
Yuriy 44b14cc4fd feat: все AI-функции переведены на Anthropic Claude API
- ai_service.py: единый AI-сервис (chat, chat_with_history, analyze_document)
- routes/ai.py: POST /api/v1/ai/chat (chat, summarize, extract_risks, classify, translate)
- config.py: ANTHROPIC_API_KEY, ANTHROPIC_MODEL
- requirements.txt: anthropic>=0.42.0
- api-client.ts: aiApi (chat, summarize, extractRisks)
- CSP: connect-src добавлен https://api.anthropic.com
- app/api/ai-chat: прокси на бэкенд /api/v1/ai/chat (Anthropic)
- legal_agents/llm_client.py: переведён на ai_service (Claude)
- AIAccessSettings: только Claude (Sonnet 4, 3 Sonnet, 3 Opus)
- k8s, .env.example: OPENAI → ANTHROPIC
- package.json: удалена зависимость openai
- Документация: OpenAI/GPT заменены на Claude/Anthropic

Провайдер: исключительно Anthropic Claude
Модель по умолчанию: claude-sonnet-4-20250514

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 15:51:59 +03:00

109 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Модуль анализа и подготовки юридических документов
Система с **мультиагентной ИИ-архитектурой** для анализа, подготовки в соответствии с нормами законодательства разных стран документов (законодательных, рекомендательных, директивных, уведомительных и т.д.), перекрёстных ссылок на цитируемые документы, правовых комментариев и судебной практики.
## Компоненты
### Модели БД
| Таблица | Описание |
|--------|----------|
| `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` — иное
### ИИ-агенты
1. **DocumentClassifierAgent** — классификация типа документа
2. **NormComplianceAgent** — проверка соответствия нормам юрисдикции
3. **CrossReferenceAgent** — поиск и добавление перекрёстных ссылок на цитируемые документы
4. **CommentEnrichmentAgent** — подбор правовых комментариев из базы
5. **JudicialPracticeAgent** — подбор судебной практики из базы
6. **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`). Тело:
```json
{
"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` или переменных окружения:
- `ANTHROPIC_API_KEY` — ключ Anthropic Claude API
- `ANTHROPIC_MODEL` — модель (по умолчанию `claude-sonnet-4-20250514`)
В `app.core.config` добавлены: `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL`.
Если LLM недоступен (нет ключа или ошибка), агенты работают в режиме заглушек (эвристики, пустые списки).
## Первичное заполнение
Юрисдикции (RU, KZ, BY, EU, US, US-CA, ICAO, EASA):
```bash
cd backend && python -m app.db.seed_legal
```
## Зависимости
- `anthropic>=0.42.0` — для вызова LLM (Anthropic Claude API).