openspec: уточнения D-4 и сценария пустой ОСВ
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
This commit is contained in:
parent
a6fd2d0535
commit
6b37a88f26
@ -57,8 +57,8 @@ origin), «Дебет/Кредит» ищутся в следующей стро
|
|||||||
60.01`) в `account_code_raw` остаётся как в файле (контракт), нормализованный код — забота ядра; не-счёт → группа по
|
60.01`) в `account_code_raw` остаётся как в файле (контракт), нормализованный код — забота ядра; не-счёт → группа по
|
||||||
позиции (количество не-счётных предков после последнего ACCOUNT); для COUNTERPARTY `counterparty_name = row_value`,
|
позиции (количество не-счётных предков после последнего ACCOUNT); для COUNTERPARTY `counterparty_name = row_value`,
|
||||||
`counterparty_inn` из колонки ИНН (только цифры, 10/12, иначе `null`); строки «Вал.», «Кол.», трёхбуквенные коды валют →
|
`counterparty_inn` из колонки ИНН (только цифры, 10/12, иначе `null`); строки «Вал.», «Кол.», трёхбуквенные коды валют →
|
||||||
`data_type` CURRENCY/QUANTITY с наследованием сумм в `extra`? — нет: суммы остаются в шести полях, `data_type` помечает
|
`data_type` CURRENCY/QUANTITY; их суммы остаются в шести полях, `data_type` лишь помечает строку, и в инвариантах §1.4
|
||||||
строку, в инвариантах §1.4 такие строки исключаются. Последняя строка level 0 с текстом из словаря «Итого» → `TOTAL`.
|
такие строки исключаются. Последняя строка level 0 с текстом из словаря «Итого» → `TOTAL`.
|
||||||
|
|
||||||
### D-5. Числа
|
### D-5. Числа
|
||||||
`numbers.to_money(cell) -> Decimal | None`: число → `Decimal(str(value)).quantize(0.01)`; текст → убрать пробелы (в т.ч.
|
`numbers.to_money(cell) -> Decimal | None`: число → `Decimal(str(value)).quantize(0.01)`; текст → убрать пробелы (в т.ч.
|
||||||
|
|||||||
@ -152,8 +152,8 @@ balance_identity_violations, parent_sum_violations}`. Любое нарушен
|
|||||||
|
|
||||||
#### Scenario: Пустая ОСВ
|
#### Scenario: Пустая ОСВ
|
||||||
- **WHEN** разбирается `schastl/2025-Q2/…66 за 2 квартал 2025 г..xlsx` (заголовок и сразу «Итого»)
|
- **WHEN** разбирается `schastl/2025-Q2/…66 за 2 квартал 2025 г..xlsx` (заголовок и сразу «Итого»)
|
||||||
- **THEN** `status = done`, `rows` содержит только строку TOTAL (и строку счёта, если она есть), `metrics.rows = 0` или `1`
|
- **THEN** `status = done`, `rows` содержит только строку TOTAL, `metrics.rows = 0` (строки данных без TOTAL),
|
||||||
по факту файла, предупреждение «нет строк данных»
|
`checks.total_row_matches_root = true` (корня нет, суммы TOTAL пусты), предупреждение «нет строк данных»
|
||||||
|
|
||||||
### Requirement: Форматы, лимиты, время
|
### Requirement: Форматы, лимиты, время
|
||||||
Парсер SHALL читать XLSX (openpyxl, полное чтение), XLS (xlrd, `formatting_info`), XLSB (pyxlsb; outline level недоступен —
|
Парсер SHALL читать XLSX (openpyxl, полное чтение), XLS (xlrd, `formatting_info`), XLSB (pyxlsb; outline level недоступен —
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user