From 2119790f720dc1b3e7a7c227059b9109313a996e Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Tue, 20 Oct 2026 13:04:05 +0400 Subject: [PATCH] =?UTF-8?q?=C2=A71:=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9=20xlsx=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=B7=20=D1=83=D1=87=D1=91=D1=82=D0=B0=20=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D1=80=D0=B0,=20=C2=AB=D0=9A=D0=BE=D0=BB-?= =?UTF-8?q?=D0=B2=D0=BE,=20<=D0=B5=D0=B4=D0=B8=D0=BD=D0=B8=D1=86=D0=B0>?= =?UTF-8?q?=C2=BB=20=D0=B8=20=C2=AB=D0=9A=D0=BE=D0=BB.=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BF.=C2=BB=20(tabular-parser#66,=20AURORA-1707,=20AURORA-170?= =?UTF-8?q?9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- context/05-domain-rules.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/context/05-domain-rules.md b/context/05-domain-rules.md index 5f8b216..fde46f1 100644 --- a/context/05-domain-rules.md +++ b/context/05-domain-rules.md @@ -179,7 +179,8 @@ r11 Август - Агро ООО | … ← сра «Вал» **без точки** — не метка валюты: так называется материал (счёт 10); валютная строка — «Вал.» с точкой или код валюты из словаря (**реализовано**, tabular-parser #47, AURORA-1663). «Кол-во» — строка количества, как «Кол.» и -«Количество» (там же). +«Количество» (там же); то же с единицей измерения после запятой — «Кол-во, га», «Кол-во, кг» (tabular-parser #66, +AURORA-1709). Строки «Вал.», «Кол.», «Кол-во», «В валюте» и трёхбуквенный код валюты («USD») — **строки-показатели**: не уровень группировки, а вид сумм родителя: `group_type = OTHER`, `data_type = CURRENCY | QUANTITY`, позицию в `group_schema` не @@ -196,7 +197,8 @@ AURORA-1661; прикладной сценарий валютных строк `osv_headers.yaml` — `service_columns.indicator`): на каждую строку аналитики — строка «БУ», под ней «НУ», «Кол.», «Вал.», иногда «ПР»/«ВР» (постоянные и временные разницы); текст строк-показателей в колонке текста пуст или повторяет объединённую ячейку строки БУ. Метка читается по словарю `data_types.yaml` — `indicator_column`: «БУ» — обычная строка с -`data_type = BU`; «НУ» → NU, «Кол.» → QUANTITY, «Вал.» → CURRENCY — строки-показатели (как выше); «ПР», «ВР» и метка не +`data_type = BU`; «НУ» → NU, «Кол.» и «Кол. доп.» (дополнительное количество, сч. 11; AURORA-1709) → QUANTITY, +«Вал.» → CURRENCY — строки-показатели (как выше); «ПР», «ВР» и метка не из словаря — строки-показатели с `data_type = null` (в контракте нет значений для разниц) и, для метки не из словаря, предупреждением. `row_value` строки-показателя — метка. Строки НУ хранятся как пришли (OQ-45), собственных проверок «дети = родитель» и «Итого» у них нет (прикладной сценарий НУ — аналитика AURORA-1669); тождество строки (начало + @@ -371,6 +373,10 @@ result-osv-needs-check.json`. русской локали; по содержимому кодировка не угадывается) с предупреждением «xls без кодовой страницы — строки прочитаны как cp1251»; без этого xlrd декодирует строки как latin-1 и лист ОСВ не находится. BIFF8 хранит строки в Unicode и от CODEPAGE не зависит. **Реализовано**, tabular-parser #47, AURORA-1662. +Имена частей xlsx сравниваются без учёта регистра, как в Excel: часть, которая отличается от ссылки `[Content_Types].xml` +или `*.rels` только регистром (`xl/SharedStrings.xml` при ссылке на `sharedStrings.xml` — так пишут некоторые выгрузки), +читается под именем из ссылки; без этого книга не читается (`UNREADABLE`), а лист с таким именем пропадает молча. Две +части под одну ссылку не угадываются. **Реализовано**, tabular-parser #66, AURORA-1707. **С контракта v2.0** (change `unified-statement-normalization`, §11.9) у каждого `osvDocument` есть `status` (`done`, когда контрольные суммы §1.4 листа сошлись, иначе `needs_check` — те же условия, что выше, но по листу) и `warnings[]` — перечисленные предупреждения листа структурами `{code: "OSV_…", severity: "info", message}`; строки `sheet=<имя> …` в @@ -386,7 +392,7 @@ openpyxl, после чтения — только диапазоны, кото Словари: `osv_headers.yaml` (признаки листов, группы сумм, «Дебет»/«Кредит», колонка ИНН, «Итого», метки шапки), `osv_groups.yaml` (группировка → `group_type`), `periods.yaml` (период → квартал и нарастающий итог), `data_types.yaml` -(БУ/НУ/сумма, строки «Вал.»/«Кол.»/«Кол-во», коды и написания валют). Каждая запись словаря обязана срабатывать хотя бы на одной +(БУ/НУ/сумма, строки «Вал.»/«Кол.»/«Кол-во»/«Кол-во, <единица>», метки колонки «Показатели», коды и написания валют). Каждая запись словаря обязана срабатывать хотя бы на одной фикстуре или синтетике (тест покрытия). ---