docs: архитектурный анализ + History + gitignore (2026-06-27)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Тестовые файлы — 30 кейсов (Opus)
|
||||
|
||||
**Все документы — полноценные:** шапка, преамбула с реквизитами сторон, 2-4 раздела, таблицы услуг (8 строк), подписи.
|
||||
|
||||
## Блок A — Classify (кейсы 1–11)
|
||||
Проверка классификации: тип документа, номер, контрагент, дата.
|
||||
|
||||
| Файл | Кейс | Контрагент |
|
||||
|------|------|-----------|
|
||||
| `договор-XXX001-03700.docx` | 1 | ЗАО "ТехноПлюс" |
|
||||
| `договор-МЭС.docx` | 2 | АО "МосЭнергоСбыт" |
|
||||
| `договор-нестандарт.docx` | 3 | ЗАО "Клиент-Сервис" |
|
||||
| `допник-XXX003-01300.docx` | 4 | — (допник) |
|
||||
| `спецификация-XXX001-03700.docx` | 5 | — (спецификация) |
|
||||
| `договор-без-стороны.docx` | 6 | **null** (без контрагента) |
|
||||
| `договор-дата-прописью.docx` | 7 | ООО "Ресурс-ЦОД" |
|
||||
| `договор-две-даты.docx` | 8 | АО "ТехноДата" |
|
||||
| `договор-длинная-преамбула.docx` | 9 | ООО "Поздний Контрагент" |
|
||||
| `договор-много-номеров.docx` | 10 | ЗАО "МультиНомер" |
|
||||
| `акт-сверки.docx` | 11 | **other** (мусор) |
|
||||
|
||||
## Блок B — Group (кейсы 12–20)
|
||||
Проверка группировки: нормализация номеров, коллизии, семьи.
|
||||
|
||||
| Файлы | Кейс | Суть |
|
||||
|-------|------|------|
|
||||
| `договор-МЭС-норм` + `допник-МЭС-норм` | 12 | Разделители: `-` vs `/` vs пробел |
|
||||
| `договор-03700` + `допник-О3700` | 13 | Кириллическая О vs цифра 0 |
|
||||
| `договор-CBC` + `допник-СВС` | 14 | Латинская C vs кириллическая С |
|
||||
| `договор-ЁЖ` + `допник-ЁЖ` | 15 | Буква Ё |
|
||||
| `допник-без-родителя` | 16 | Допник без parent → unresolved |
|
||||
| `договор-GR50` + `допник-GR50` | 17 | Допник через own_number |
|
||||
| `договор-AB12` + `A-B12` + `допник-AB12` | 18 | Коллизия якорей |
|
||||
| `договор-FAM` + `спека-FAM` + `допник-1/2-FAM` | 19 | Семья из 4 документов |
|
||||
| `допник-1-XXX003-01300_2` | 20 | Суффикс в имени файла |
|
||||
|
||||
## Блок C — Compare (кейсы 21–30)
|
||||
Проверка сравнения спецификаций. **8 строк услуг, изменена только v2.**
|
||||
|
||||
| Кейс | Суть | v2 отличия от v1 |
|
||||
|------|------|-----------------|
|
||||
| 21 | Цена +1 копейка | UPDATE — строка 1 (45 000,00 → 45 000,01) |
|
||||
| 22 | Удаление услуги | DELETE — строка 3 (IP-адреса) |
|
||||
| 23 | Переименование + цена | UPDATE — строка 5 (название + цена + дата) |
|
||||
| 24 | Полная замена | FULL REPLACE — 3 новые строки |
|
||||
| 25 | ADD | ADD — 2 строки (9, 10) |
|
||||
| 26 | DELETE | DELETE — 2 строки (7, 8) |
|
||||
| 27 | Только объём | UPDATE — строка 3 (8→12 IP) |
|
||||
| 28 | Услуга-призрак | ADD — строка 9 (VPN, нет в v1) |
|
||||
| 29 | Числа с пробелами | UPDATE — строка 1 (45 000→45 500) |
|
||||
| 30 | Робастность парсера | UPDATE — строка 1 (45 000→51 000) |
|
||||
|
||||
---
|
||||
|
||||
Всего: **50 файлов** в трёх папках (`block_a/`, `block_b/`, `block_c/`).
|
||||
Сгенерированы: `testgen/gen_opus.py`.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,320 @@
|
||||
{
|
||||
"договор-XXX001-03700.docx": {
|
||||
"case": 1,
|
||||
"type": "contract",
|
||||
"own_number": "XXX001-03700",
|
||||
"counterparty": "ЗАО \"ТехноПлюс\""
|
||||
},
|
||||
"спецификация-XXX001-03700_v1.docx": {
|
||||
"case": 1,
|
||||
"type": "specification",
|
||||
"parent_number": "XXX001-03700"
|
||||
},
|
||||
"договор-МЭС.docx": {
|
||||
"case": 2,
|
||||
"type": "contract",
|
||||
"own_number": "МЭС-123/2024",
|
||||
"counterparty": "АО \"МосЭнергоСбыт\""
|
||||
},
|
||||
"спецификация-МЭС.docx": {
|
||||
"case": 2,
|
||||
"type": "specification",
|
||||
"parent_number": "МЭС-123/2024"
|
||||
},
|
||||
"договор-нестандарт.docx": {
|
||||
"case": 3,
|
||||
"type": "contract",
|
||||
"own_number": "SVC-77",
|
||||
"counterparty": "ЗАО \"Клиент-Сервис\""
|
||||
},
|
||||
"спецификация-SVC-77.docx": {
|
||||
"case": 3,
|
||||
"type": "specification",
|
||||
"parent_number": "SVC-77"
|
||||
},
|
||||
"допник-XXX003-01300.docx": {
|
||||
"case": 4,
|
||||
"type": "supplement",
|
||||
"own_number": "1",
|
||||
"parent_number": "XXX003-01300"
|
||||
},
|
||||
"договор-без-стороны.docx": {
|
||||
"case": 6,
|
||||
"type": "contract",
|
||||
"counterparty": null
|
||||
},
|
||||
"спецификация-NC-09.docx": {
|
||||
"case": 6,
|
||||
"type": "specification",
|
||||
"parent_number": "NC-09"
|
||||
},
|
||||
"договор-дата-прописью.docx": {
|
||||
"case": 7,
|
||||
"type": "contract",
|
||||
"doc_date": "2025-03-15",
|
||||
"counterparty": "ООО \"Ресурс-ЦОД\""
|
||||
},
|
||||
"спецификация-DT-15.docx": {
|
||||
"case": 7,
|
||||
"type": "specification",
|
||||
"parent_number": "DT-15"
|
||||
},
|
||||
"договор-две-даты.docx": {
|
||||
"case": 8,
|
||||
"type": "contract",
|
||||
"doc_date": "2025-04-01",
|
||||
"counterparty": "АО \"ТехноДата\""
|
||||
},
|
||||
"спецификация-TD-21.docx": {
|
||||
"case": 8,
|
||||
"type": "specification",
|
||||
"parent_number": "TD-21"
|
||||
},
|
||||
"договор-длинная-преамбула.docx": {
|
||||
"case": 9,
|
||||
"type": "contract",
|
||||
"own_number": "LATE-99",
|
||||
"counterparty": "ООО \"Поздний Контрагент\""
|
||||
},
|
||||
"спецификация-LATE-99.docx": {
|
||||
"case": 9,
|
||||
"type": "specification",
|
||||
"parent_number": "LATE-99"
|
||||
},
|
||||
"договор-много-номеров.docx": {
|
||||
"case": 10,
|
||||
"type": "contract",
|
||||
"own_number": "MN-01",
|
||||
"counterparty": "ЗАО \"МультиНомер\""
|
||||
},
|
||||
"спецификация-MN-01.docx": {
|
||||
"case": 10,
|
||||
"type": "specification",
|
||||
"parent_number": "MN-01"
|
||||
},
|
||||
"акт-сверки.docx": {
|
||||
"case": 11,
|
||||
"type": "other"
|
||||
},
|
||||
"договор-МЭС-норм.docx": {
|
||||
"case": 12,
|
||||
"own": "МЭС-123/2024",
|
||||
"counterparty": "АО \"МосЭнергоСбыт\""
|
||||
},
|
||||
"спецификация-МЭС-норм.docx": {
|
||||
"case": 12,
|
||||
"type": "specification",
|
||||
"parent_number": "МЭС-123/2024"
|
||||
},
|
||||
"допник-МЭС-норм.docx": {
|
||||
"case": 12,
|
||||
"parent": "МЭС 123/2024"
|
||||
},
|
||||
"договор-03700.docx": {
|
||||
"case": 13,
|
||||
"own": "XXX001-03700",
|
||||
"counterparty": "ЗАО \"ТехноПлюс\""
|
||||
},
|
||||
"спецификация-03700.docx": {
|
||||
"case": 13,
|
||||
"type": "specification",
|
||||
"parent_number": "XXX001-03700"
|
||||
},
|
||||
"допник-О3700.docx": {
|
||||
"case": 13,
|
||||
"parent": "XXX001-О3700"
|
||||
},
|
||||
"договор-CBC.docx": {
|
||||
"case": 14,
|
||||
"own": "CBC-10",
|
||||
"counterparty": "ООО \"СиБиСи\""
|
||||
},
|
||||
"спецификация-CBC.docx": {
|
||||
"case": 14,
|
||||
"type": "specification",
|
||||
"parent_number": "CBC-10"
|
||||
},
|
||||
"допник-СВС.docx": {
|
||||
"case": 14,
|
||||
"parent": "СВС-10"
|
||||
},
|
||||
"договор-ЁЖ.docx": {
|
||||
"case": 15,
|
||||
"own": "ЁЖ-5",
|
||||
"counterparty": "ООО \"Ёжик-Телеком\""
|
||||
},
|
||||
"спецификация-ЁЖ.docx": {
|
||||
"case": 15,
|
||||
"type": "specification",
|
||||
"parent_number": "ЁЖ-5"
|
||||
},
|
||||
"допник-ЁЖ.docx": {
|
||||
"case": 15,
|
||||
"parent": "ЁЖ-5"
|
||||
},
|
||||
"допник-без-родителя.docx": {
|
||||
"case": 16,
|
||||
"type": "supplement",
|
||||
"parent": null
|
||||
},
|
||||
"договор-GR50.docx": {
|
||||
"case": 17,
|
||||
"own": "GR-50",
|
||||
"counterparty": "ООО \"ГринРайт\""
|
||||
},
|
||||
"спецификация-GR50.docx": {
|
||||
"case": 17,
|
||||
"type": "specification",
|
||||
"parent_number": "GR-50"
|
||||
},
|
||||
"допник-GR50.docx": {
|
||||
"case": 17,
|
||||
"own": "GR-50"
|
||||
},
|
||||
"договор-AB12.docx": {
|
||||
"case": 18,
|
||||
"own": "AB-12",
|
||||
"counterparty": "ООО \"Альфа-Бета\""
|
||||
},
|
||||
"спецификация-AB12.docx": {
|
||||
"case": 18,
|
||||
"type": "specification",
|
||||
"parent_number": "AB-12"
|
||||
},
|
||||
"договор-A-B12.docx": {
|
||||
"case": 18,
|
||||
"own": "A-B12",
|
||||
"counterparty": "ООО \"А-Бет\""
|
||||
},
|
||||
"спецификация-A-B12.docx": {
|
||||
"case": 18,
|
||||
"type": "specification",
|
||||
"parent_number": "A-B12"
|
||||
},
|
||||
"допник-AB12.docx": {
|
||||
"case": 18,
|
||||
"parent": "AB12"
|
||||
},
|
||||
"договор-FAM.docx": {
|
||||
"case": 19,
|
||||
"date": "2025-01-10",
|
||||
"counterparty": "ЗАО \"Фэмили-Групп\""
|
||||
},
|
||||
"спека-FAM.docx": {
|
||||
"case": 19,
|
||||
"date": "2025-02-01"
|
||||
},
|
||||
"допник-1-FAM.docx": {
|
||||
"case": 19,
|
||||
"date": "2025-03-01"
|
||||
},
|
||||
"допник-2-FAM.docx": {
|
||||
"case": 19,
|
||||
"date": "2025-05-01"
|
||||
},
|
||||
"допник-1-XXX003-01300_2.docx": {
|
||||
"case": 20,
|
||||
"own": "1",
|
||||
"parent": "XXX003-01300"
|
||||
},
|
||||
"спека-цена-v1.docx": {
|
||||
"case": 21,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-021"
|
||||
},
|
||||
"допник-цена.docx": {
|
||||
"case": 21,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-021"
|
||||
},
|
||||
"спека-обнуление-v1.docx": {
|
||||
"case": 22,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-022"
|
||||
},
|
||||
"допник-обнуление.docx": {
|
||||
"case": 22,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-022"
|
||||
},
|
||||
"спека-переименование-v1.docx": {
|
||||
"case": 23,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-023"
|
||||
},
|
||||
"допник-переименование.docx": {
|
||||
"case": 23,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-023"
|
||||
},
|
||||
"спека-полная-v1.docx": {
|
||||
"case": 24,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-024"
|
||||
},
|
||||
"допник-новая-редакция.docx": {
|
||||
"case": 24,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-024"
|
||||
},
|
||||
"спека-добавление-v1.docx": {
|
||||
"case": 25,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-025"
|
||||
},
|
||||
"допник-добавление.docx": {
|
||||
"case": 25,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-025"
|
||||
},
|
||||
"спека-удаление-v1.docx": {
|
||||
"case": 26,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-026"
|
||||
},
|
||||
"допник-удаление.docx": {
|
||||
"case": 26,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-026"
|
||||
},
|
||||
"спека-объём-v1.docx": {
|
||||
"case": 27,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-027"
|
||||
},
|
||||
"допник-объём.docx": {
|
||||
"case": 27,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-027"
|
||||
},
|
||||
"спека-призрак-v1.docx": {
|
||||
"case": 28,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-028"
|
||||
},
|
||||
"допник-призрак.docx": {
|
||||
"case": 28,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-028"
|
||||
},
|
||||
"спека-формат-v1.docx": {
|
||||
"case": 29,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-029"
|
||||
},
|
||||
"допник-формат-чисел.docx": {
|
||||
"case": 29,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-029"
|
||||
},
|
||||
"спека-роб-v1.docx": {
|
||||
"case": 30,
|
||||
"version": 1,
|
||||
"parent_number": "CMP-030"
|
||||
},
|
||||
"допник-роб.docx": {
|
||||
"case": 30,
|
||||
"type": "supplement",
|
||||
"parent_number": "CMP-030"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user