From a803c1d30f84272eaadcb5301944583f45e73708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 25 Jun 2026 10:47:03 +0400 Subject: [PATCH] =?UTF-8?q?v1.0.178:=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=81=20=D0=BA=20=D0=9E=D0=BF=D1=83=D1=81=D1=83=20=E2=80=94=20?= =?UTF-8?q?=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B=D1=85=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20+=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D1=83=D0=BB=D1=8F=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/opus-generator-request.md | 115 ++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 History/opus-generator-request.md diff --git a/History/opus-generator-request.md b/History/opus-generator-request.md new file mode 100644 index 0000000..477a3d0 --- /dev/null +++ b/History/opus-generator-request.md @@ -0,0 +1,115 @@ +# Запрос к 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 +- Результаты сравнения + +--- + +## Формат ответа + +Принципиальная схема (НЕ реализация): +- Что генерировать (типы, количество, вариации) +- Как генерировать (шаблоны, подстановки) +- Как симулировать (последовательности, тайминги) +- Как проверять (чек-лист верификации) +- Структура папок + +Код генератора и симулятора напишу я сам.