From 7c69f2e778582158f700cb73368e4ee14925fb87 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Tue, 13 Oct 2026 15:31:08 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B8=D0=BD=D1=82=D0=B5=D1=82=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0:=20s28=20=E2=80=94=20=D0=98=D0=9D=D0=9D=20=D1=81?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B2=D0=B5=D1=80=D0=BD=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D1=81=D1=83=D0=BC=D0=BC=D0=BE=D0=B9=20(tabular-parser#35)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- osv/synthetic/README.md | 1 + osv/synthetic/s28_inn_bad_checksum.xlsx | Bin 0 -> 5760 bytes 2 files changed, 1 insertion(+) create mode 100644 osv/synthetic/s28_inn_bad_checksum.xlsx diff --git a/osv/synthetic/README.md b/osv/synthetic/README.md index 7da3fce..cda6941 100644 --- a/osv/synthetic/README.md +++ b/osv/synthetic/README.md @@ -52,6 +52,7 @@ cd tabular-parser/api | `s25_inn_below_child_sums.xlsx` | строка ИНН — ребёнок наименования, с суммами (как «Контрагенты.ИНН» в 1С, но без подсказки в шапке) | то же | | `s26_inn_below_sibling_sums.xlsx` | ИНН строкой **под** наименованием, сосед, с суммами | ИНН — своему контрагенту, `done` | | `s27_inn_below_sibling_blank.xlsx` | ИНН строкой под наименованием, сосед, без сумм (дефект main: ИНН уходил следующему контрагенту) | ИНН — своему контрагенту; направление — по блоку 60.02, кончающемуся строкой ИНН; `done` | +| `s28_inn_bad_checksum.xlsx` | раскладка `s20` («над, не в дереве, без сумм»), но у ООО Альфа строка ИНН `7701234567` с неверной контрольной суммой (#35) | строка остаётся обычной, у Альфы ИНН нет, предупреждение «похожа на ИНН … контрольная сумма не сходится», `needs_check`; остальные контрагенты — со своими ИНН (направление «над» — по блоку 60.02) | `s17`–`s19` — регрессия извлечения ИНН из текста (issue #9). `s14`–`s16` добавлены тестом покрытия словарей `tabular-parser` (`rules/*.yaml`, решение R-22): каждая запись словаря `s20`–`s27` — восемь раскладок строки ИНН рядом с контрагентом (issue tabular-parser#35); ИНН с верной контрольной суммой — без подсказки в шапке другие не склеиваются. должна сработать на реальных или синтетических файлах; эти файлы закрывают записи, которых нет в реальных ОСВ. diff --git a/osv/synthetic/s28_inn_bad_checksum.xlsx b/osv/synthetic/s28_inn_bad_checksum.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..379826468f31feebdd59229be344b3e475cfb37f GIT binary patch literal 5760 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