Files
contracts-flask/History/architecture.md

2.2 KiB

Архитектура 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
  • Таблицы: documents, contracts, supplements, spec_current, spec_events, prompts, upload_chunks

LLM

  • gpt-oss-120b через api.aillm.ru (бесплатно)
  • Используется: классификация, извлечение, сравнение, чат