Срез 2a: контракт v1.1 (rows[].extra), §1 по факту парсера, план срезов 2a–2d, OQ-98…109 #10

Merged
aep merged 8 commits from feat/9-slice-2a-osv-parser into main 2026-10-05 19:20:12 +03:00
Owner

Refs #9. Сквозная часть Среза 2a (парсер ОСВ в RSHB/arm-tabular-parser#6).

  • Контракт результата v1.1: osvDocument.rows[].extra (нераспознанные колонки, §1.2), примеры result-osv-minimal.json (v1.1) и новый result-osv-needs-check.json; спека recognition-contract «Файл результата» → v1.1.
  • §1 05-domain-rules.md по факту реализации: карта статусов и кодов, hierarchy=<стратегия> в warnings, TOTAL в rows, буквенные субсчета (76.АВ), ИНН только из колонки ИНН, лимиты чтения xlsx и остаточные риски, сверка «сумма детей = родитель» по нетто при свёрнутом сальдо родителя (R-21, OQ-105).
  • 06-test-data.md: синтетика s01–s16, golden-снимки, xlsb; 09-delivery-plan.md: Срез 2 → 2a/2b/2c/2d, 2a по факту.
  • OQ: OQ-81 закрыт; новые OQ-98…OQ-109 (коды валют, несколько ОСВ одного счёта в книге, ИНН в тексте строки, числа «+5»/«.5», реальный xlsb, буквенные первые сегменты счетов «МЦ.04», «Валюта» в детализации варианта 2, нетто-свёртка, несколько корней, hierarchy=sums, защита чтения xlsx/лимиты памяти, размер объекта до скачивания).
  • Change slice-2a-osv-parser (skip_specs для §/OQ, дельта recognition-contract).

Порядок merge: этот PR и RSHB/arm-ka-fixtures#5 — до RSHB/arm-tabular-parser#6 (тест идентичности контракта и golden-тест зависят от них). Копия схемы v1.1 в arm-core — отдельный PR без логики после merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2

Refs #9. Сквозная часть Среза 2a (парсер ОСВ в RSHB/arm-tabular-parser#6). - **Контракт результата v1.1**: `osvDocument.rows[].extra` (нераспознанные колонки, §1.2), примеры `result-osv-minimal.json` (v1.1) и новый `result-osv-needs-check.json`; спека `recognition-contract` «Файл результата» → v1.1. - **§1 `05-domain-rules.md` по факту реализации**: карта статусов и кодов, `hierarchy=<стратегия>` в warnings, TOTAL в rows, буквенные субсчета (76.АВ), ИНН только из колонки ИНН, лимиты чтения xlsx и остаточные риски, сверка «сумма детей = родитель» по нетто при свёрнутом сальдо родителя (R-21, OQ-105). - **`06-test-data.md`**: синтетика s01–s16, golden-снимки, xlsb; **`09-delivery-plan.md`**: Срез 2 → 2a/2b/2c/2d, 2a по факту. - **OQ**: OQ-81 закрыт; новые OQ-98…OQ-109 (коды валют, несколько ОСВ одного счёта в книге, ИНН в тексте строки, числа «+5»/«.5», реальный xlsb, буквенные первые сегменты счетов «МЦ.04», «Валюта» в детализации варианта 2, нетто-свёртка, несколько корней, `hierarchy=sums`, защита чтения xlsx/лимиты памяти, размер объекта до скачивания). - Change `slice-2a-osv-parser` (skip_specs для §/OQ, дельта `recognition-contract`). Порядок merge: этот PR и RSHB/arm-ka-fixtures#5 — до RSHB/arm-tabular-parser#6 (тест идентичности контракта и golden-тест зависят от них). Копия схемы v1.1 в arm-core — отдельный PR без логики после merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-05 10:43:00 +03:00
aep added 6 commits 2026-10-05 16:22:16 +03:00
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- 05-domain-rules §1: обязательные группы (R-12), hierarchy=<имя>, TOTAL в rows, буквенные субсчета и Вал./Кол. (R-16, R-18, R-19), ИНН (R-15, R-17), сверка по нетто (R-21), R-20, пустая ОСВ, ASSUMPTION(OQ-02), новый §1.6 (статусы, коды, лимиты, словари)
- 06-test-data: синтетика s01–s16, golden (82 снимка), рукописный xlsb, пустые ОСВ, буквенные субсчета
- 09-delivery-plan: Срез 2 → 2a–2d, 2a по факту
- 07-open-questions: OQ-98…OQ-105, пометки допущений парсера у OQ-01/02/45, OQ-81 частично закрыт
- contracts/examples/result-osv-needs-check.json: ACCOUNT в group_schema, ИНН из колонки, «Вал.» без контрагента, строка TOTAL
- openspec tasks.md: 1.2, 2.1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- 05-domain-rules §1.0 п. 1: признак ОСВ в первых 30 строках листа; п. 4, §1.3: ИНН по значениям без дополнения
  нулём, дополнение при извлечении (R-24); ACCOUNT_RE с re.ASCII | re.DOTALL (M-1); §1.4: остаточные риски R-21
  (RR-1…RR-4, слепые зоны); §1.6: лимиты чтения (R-23), логирование.
- 06-test-data §3 п. 17: ИНН в тексте строки — ОСВ 76 Счастливочной за 1–3 кв. 2024 (6 + 7 + 7 строк).
- 07-open-questions: OQ-106 (Итого = первый корень), OQ-107 (hierarchy=sums), OQ-108 (defusedxml, лимиты чтения),
  OQ-109 (размер объекта S3 до скачивания); OQ-105 ссылается на риски §1.4.
- OQ-81 «частично закрыт» в 09-delivery-plan, tasks.md и proposal.md change.
- contracts/examples/result-osv-needs-check.json — как пишет парсер (копия tabular-parser байт в байт).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
05-domain-rules §1.4: слепая зона R-21 переформулирована — достаточно свёрнутого непосредственного родителя (N2);
§1 «Лимиты»: expat-скан всех XML-частей, после-чтения счёт только индексируемых диапазонов, что не ограничено.
07-open-questions OQ-108: остаточные риски (объём ячеек, sharedStrings/стили, entity expansion) и рекомендации
(лимит памяти контейнера, предпроверка dimension/счётчик ячеек, подпроцесс с RLIMIT).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep changed title from Срез 2a: контракт v1.1 (rows[].extra), декомпозиция Среза 2, §1 — спека OpenSpec to Срез 2a: контракт v1.1 (rows[].extra), §1 по факту парсера, план срезов 2a–2d, OQ-98…109 2026-10-05 16:22:30 +03:00
aep added 1 commit 2026-10-05 19:19:35 +03:00
aep merged commit e3ca2ba1c5 into main 2026-10-05 19:20:12 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-ka-docs#10
No description provided.