75 lines
2.6 KiB
Markdown
75 lines
2.6 KiB
Markdown
# Архитектура contracts-flask
|
|
|
|
## Компоненты
|
|
|
|
```
|
|
Браузер
|
|
│
|
|
▼
|
|
check.kube5s.ru (nginx)
|
|
│
|
|
├── /, /static/*, /templates/*
|
|
│ → Managed Flask (contractor.pythonk8s.services.ngcloud.ru)
|
|
│ Отдаёт HTML + JS. JS в браузере делает API-запросы.
|
|
│
|
|
└── /api/*, /upload, /llm-ops, /process-v2, /convert-doc, /unzip-upload
|
|
→ ВМ :8777 (convert_server.py)
|
|
Python http.server → PostgreSQL (contracts_check)
|
|
→ LLM (api.aillm.ru, gpt-oss-120b)
|
|
```
|
|
|
|
## Пайплайн
|
|
|
|
```
|
|
1. Загрузка
|
|
JS (FormData) → /upload → parse.py (pdfplumber/python-docx)
|
|
→ elements_json → documents (БД)
|
|
|
|
2. Классификация
|
|
JS → /api/classify-batch → classify.py (LLM)
|
|
→ doc_type, own_number, parent_number, counterparty, doc_date
|
|
|
|
3. Группировка
|
|
JS → /api/groups → grouping.py (детерминированная)
|
|
→ группы по контрактам (нормализация номеров)
|
|
|
|
4. Сравнение
|
|
JS → /process-v2 (SSE) → process.py → llm.py (LLM)
|
|
→ ops (ADD/UPDATE/DELETE/UNRESOLVED)
|
|
→ spec_events + spec_current (event sourcing)
|
|
|
|
5. Чат
|
|
JS → /chat → Flask → /api/spec-current (ВМ)
|
|
→ контекст строк → LLM → ответ
|
|
```
|
|
|
|
## Вход/Выход
|
|
|
|
| Этап | Вход | Выход |
|
|
|------|------|-------|
|
|
| Загрузка | .docx/.pdf/.doc/.zip (FormData) | elements_json в БД |
|
|
| Классификация | elements_json | doc_type, номер, дата, контрагент |
|
|
| Группировка | classified documents | группы по contract_number |
|
|
| Сравнение | группа документов + spec_current | ops: ADD/UPDATE/DELETE/UNRESOLVED |
|
|
| Чат | вопрос + spec_current | текст ответа |
|
|
|
|
## БД
|
|
|
|
- PostgreSQL `contracts_check` (изолирована от прода `baza`)
|
|
- Таблицы: documents, contracts, supplements, spec_current, spec_events, prompts, upload_chunks
|
|
|
|
## LLM
|
|
|
|
- gpt-oss-120b через api.aillm.ru (бесплатно)
|
|
- Используется: классификация, извлечение, сравнение, чат
|
|
|
|
## Изоляция от прода
|
|
|
|
| | Lucee (прод) | Flask (тест) |
|
|
|---|---|---|
|
|
| Домен | contracts.kube5s.ru | check.kube5s.ru |
|
|
| ВМ порт | 8766 | 8777 |
|
|
| БД | baza | contracts_check |
|
|
| Код ВМ | ~/contracts/ | ~/contracts-check/ |
|
|
| Репо ВМ | contractor/deploy/ | contracts-flask/deploy/ |
|