Что делает
-Автоматический разбор и сравнение договоров облачного провайдера (colocation, ЦОД, аренда стоек, каналы связи, облачные ресурсы). Юрист загружает файлы — система сама определяет что есть что, группирует по контрактам и через LLM находит изменения между версиями.
+Что это
+Автоматический разбор и сравнение договоров с помощью ИИ (LLM). Загружаете договоры, допсоглашения и спецификации вперемешку — система сама разбирает что есть что, группирует по контрактам и находит все изменения между версиями. Работает на доменной модели облачного провайдера: colocation, ЦОД, аренда стоек, каналы связи, облачные ресурсы.
-Архитектура
-Два сервера:
--
-
- Lucee CFML (k8s) — только HTML-оболочка (index.cfm, 191 строка). Домен: contractor.luceek8s.dev.nubes.ru -
- Python 3.12 (VM, 5.172.178.213) — вся бизнес-логика: загрузка, парсинг, LLM-классификация, сравнение, Event Sourcing. Домен: contracts.kube5s.ru -
База данных: PostgreSQL 16 на VM (127.0.0.1:5432/baza). Конфиденциальные данные не покидают ВМ.
-LLM: gpt-oss-120b через api.aillm.ru (бесплатный доступ, HTTP/2).
+Как устроено
+Каждый документ парсится в структурированный JSON. LLM-модель (gpt-oss-120b) используется в трёх режимах: классификация (определяет тип/номер/дату/контрагента), извлечение (вытаскивает строки спецификации из базового договора), сравнение (находит изменения в допсоглашениях). Результат сравнения — операции ADD (новая услуга), UPDATE (изменение), DELETE (удалена), UNRESOLVED (не удалось сопоставить).
+Все изменения хранятся как события (Event Sourcing) — можно видеть полную историю: кто, когда, на основании какого документа. Данные не покидают сервер.
-Пайплайн обработки
--
-
- Загрузка — .docx, .doc, .pdf. DOC→DOCX через LibreOffice на VM. -
- Парсинг — python-docx (Word) и PyPDF2 (PDF). Результат: структурированный JSON (параграфы + таблицы). -
- LLM-классификация — каждый файл анализируется LLM (gpt-oss-120b): определяется тип (договор/допсоглашение/спецификация), номер, дата, контрагент. Умная выжимка текста: ~3000 символов (header + маркерные строки) для экономии токенов. -
- Авто-группировка — Python-код нормализует номера договоров и группирует документы по контрактам. Хронологический порядок по датам. -
- LLM-сравнение — для каждой группы: первый документ → извлечение спецификации (extract). Каждый следующий → сравнение с накопленной спецификацией (diff). Операции: ADD (новая услуга), UPDATE (изменение), DELETE (исключена), UNRESOLVED (не удалось сопоставить). -
Как пользоваться
-Event Sourcing
-Изменения не перезаписывают спецификацию. Каждая операция — событие в таблице spec_events. Текущее состояние — spec_current. Это даёт:
-
-
- Аудит — полная история изменений: кто, когда, на основании какого документа -
- Provenance — для каждого события хранится: ID документа-источника, версия промпта LLM, полный сырой ответ LLM -
- Откат — можно вернуться к любому предыдущему состоянию спецификации -
1. Загрузка — выберите файлы (.docx, .doc, .pdf). Можно загружать всё вперемешку: договоры, допники, спецификации. Порядок файлов не важен — классификация разберётся.
-Промпты LLM
-Хранятся в БД, версионируются. Три вида:
--
-
- extract — извлечение спецификации из первого документа (базовый договор) -
- diff — сравнение допсоглашения с текущей спецификацией -
- classify — авто-классификация: определение типа/номера/даты/контрагента документа -
2. Классификация — нажмите кнопку в появившейся панели. Система через LLM определит для каждого файла: тип документа, его номер, дату, контрагента и родительский договор. Прогресс показывается в реальном времени.
-Схема БД
-7 таблиц: documents (файлы + elements_json + поля классификации), contracts, supplements (связь документ→договор), spec_events (события), spec_current (текущая спецификация), prompts (версионные промпты), upload_chunks (временные чанки).
3. Группы — после классификации документы автоматически группируются по договорам в хронологическом порядке. Вы увидите карточки групп: «Договор №X с Контрагентом Y». Документы, которые не удалось классифицировать, попадают в отдельную секцию «Не распознано».
-Безопасность
-Все файлы и тексты договоров хранятся ТОЛЬКО на ВМ (5.172.178.213). При перезагрузке страницы все данные автоматически удаляются из БД. Промпты (код системы) сохраняются.
+4. Сравнение — для каждой группы нажмите «▶ Сравнить». Система извлечёт спецификацию из первого документа, затем сравнит каждое допсоглашение с ней. Результат — таблица изменений: что добавилось, что изменилось, что убрали.
-Стек
-Lucee 6.0 (CFML, k8s) + Python 3.12 (http.server, psycopg2, httpx, python-docx, PyPDF2) + PostgreSQL 16 + gpt-oss-120b + nginx + systemd.
+5. Промпты — в выпадающем меню «⚙ Промпты LLM» можно редактировать инструкции для ИИ: как извлекать, как сравнивать, как классифицировать. Промпты версионируются — можно откатиться к предыдущей версии.
+ +На выходе: структурированная таблица актуальной спецификации по каждому договору + полная история изменений с привязкой к документам-источникам.