Files
contracts/History/opus-generator-request.md
T

116 lines
5.7 KiB
Markdown
Raw 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.
# Запрос к Opus — генератор тестовых документов + симулятор поведения
## Что за сервис (кратко)
**contracts** — загрузка договоров колокейшн/ЦОД, авто-классификация через LLM,
группировка по контрактам, сравнение версий (сверка спецификаций).
Pipeline: Загрузка (.docx/.doc/.pdf/.zip) → Парсинг → Классификация (LLM) → Группировка → Сравнение (LLM, Event Sourcing)
Фронтенд: одна страница с таблицей файлов, карточками групп, SSE-сравнением.
Бэкенд: Python http.server, PostgreSQL, LLM через api.aillm.ru (gpt-oss-120b).
## Какие файлы уже есть (3 типа, 6 шт.)
### Тип 1: Договор — `договор-XXX001-03700.docx`
Заголовок: "Договор на оказание технологических услуг"
Номер: № 03700_1
Стороны: ЗАО "XXX001" (Заказчик) + ООО "НУБЕС" (Исполнитель)
Адрес/дата: г. Москва, 01.02.2026
Секции: Термины, Предмет, Права/Обязанности, Состав/Порядок/Сроки,
Стоимость, Порядок оплаты, Взаимодействие, Сдача-приёмка, Особые условия
Таблица реквизитов (1×2 — Заказчик | Исполнитель)
### Тип 2: Допсоглашение — `допник-1-XXX003-01300_2.doc`
Заголовок: "Дополнительное Соглашение №1"
Привязка: "к Договору № 01300_2 от 20.12.2025"
Стороны: АО "XXX003" + ООО "НУБЕС"
Таблица услуг (6 колонок): №, Наименование, Цена руб. с НДС, Объем, Сумма, Дата начала
Пример: Организация L2 канала без резерва — 8 283,80 × 1 = 8 283,80, 26.03.2026
Строка итого: Итого инсталляционный платеж — 8 283,80
### Тип 3: Спецификация — `спецификация-XXX001-03700.docx`
Заголовок: "Приложение № 1 к Договору № 03700_1 от 01.02.2026"
Секция: "Спецификация и стоимость услуг"
Подсекция: "Абонентские услуги с ДАТА – ДАТА"
Общая стоимость: 769 279,53 руб.
Таблица услуг (6 колонок): №, Наименование, Цена, Объем, Сумма, Дата начала
9 строк, включая:
- Аренда стойко-места — 213 905,44 × 3 = 641 716,32
- Аренда PDU 3Ф 32А — 2 511,17 × 3 = 7 533,51
- Организация L2 канала — цена × кол-во
- IP-адреса, cross-connect, etc.
### Паттерны имён
```
договор-{КОМПАНИЯ}-{НОМЕР}.docx
допник-{N}-{КОМПАНИЯ}-{НОМЕР}.doc / .docx
спецификация-{КОМПАНИЯ}-{НОМЕР}.docx
```
КОМПАНИЯ = XXX001..XXX010, НОМЕР = 03700, 01200_3, 01300_2
N = номер допника (1, 2, 3...)
Иерархия: спецификация и допник привязаны к договору через НОМЕР.
---
## Что нужно от Опуса
### Часть 1 — Принцип генерации ~100 файлов
Нужна СХЕМА (не код):
1. Сколько контрактов, сколько файлов каждого типа
2. Как варьировать: компании, номера, даты, цены, наборы услуг
3. Ошибочные случаи:
- без номера договора
- нестандартный заголовок
- битый XML внутри docx
- пустой файл
- только таблицы / только текст
- .doc (старый формат, идёт через конвертер)
- битый PDF
- дубликаты имён
4. Как связать parent-child (договор → допник → спецификация)
5. Структура шаблонов python-docx
### Часть 2 — Симулятор поведения
Нужна СТРАТЕГИЯ:
1. Хэппи-путь: загрузка → классификация → группы → сравнение
2. Зигзаги: загрузил → удалил → перезагрузил → ещё загрузил
3. Тупые действия: дубликаты (OK/Отмена), удалить всё, смешать форматы
4. ZIP с дубликатами внутри
5. Тайминги и задержки
6. Верификация после каждого шага: число файлов, статусы, группы
### Часть 3 — Верификация
Как проверять корректность после каждого шага симулятора:
- Количество файлов в state.files
- Статусы парсинга (✓ / ✗)
- Наличие групп после classify
- Результаты сравнения
---
## Формат ответа
Принципиальная схема (НЕ реализация):
- Что генерировать (типы, количество, вариации)
- Как генерировать (шаблоны, подстановки)
- Как симулировать (последовательности, тайминги)
- Как проверять (чек-лист верификации)
- Структура папок
Код генератора и симулятора напишу я сам.