Срез 2c: DBML v5.15 (NU, email, индексы), §1.3/§1.5/§3/§9 по факту маппинга, OQ-110…117, qa-guide #17

Merged
aep merged 5 commits from feat/16-slice-2c-osv-ingest into main 2026-10-06 00:56:05 +03:00
Owner

Closes #16. Сквозная часть Среза 2c (RSHB/arm-core#15).

  • DBML v5.15 (model/data-model-v5.15.dbml, entities-v5.15.md, guide, ссылки): osv_data_type + NU (OQ-45), app_user.email в нижнем регистре (OQ-59), индексы osv_entry(parent_entry_id), osv_entry(recognition_job_id), stored_file(current_recognition_job_id) (OQ-117).
  • 05-domain-rules.md по факту реализации: §1.3 (маппинг в ядре, TOTAL не хранится, нормализация кода), §1.5 (period_check = UNKNOWN до Среза 4, is_cumulative по Q1), §3 п. 4 (резолв без policy), §9.2 (кто ставит статус файла), §9.3 (условия RECOGNIZED/NEEDS_CHECK), новый §9.5 «Автозамена и удаление файлов».
  • 03-architecture.md: цикл маппинга как третий фоновый процесс (OQ-69 закрыт). 09-delivery-plan.md: 2c по факту. dev/qa-guide.md §6.6: сценарии загрузки ОСВ и просмотра строк через API.
  • OQ: закрыты OQ-59, 67, 69, 70, 109, 117; новые OQ-110…116 (удаление после консолидаций, ретеншн при удалении, остатки e2e в MinIO, полнота плана счетов, is_modified в API строк, частичная автозамена, NEEDS_CHECK при нарастании по Q1).
  • Change slice-2c-osv-ingest (skip_specs).

Порядок merge: этот PR — до RSHB/arm-core#15.

🤖 Generated with Claude Code

https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2

Closes #16. Сквозная часть Среза 2c (RSHB/arm-core#15). - **DBML v5.15** (`model/data-model-v5.15.dbml`, `entities-v5.15.md`, guide, ссылки): `osv_data_type + NU` (OQ-45), `app_user.email` в нижнем регистре (OQ-59), индексы `osv_entry(parent_entry_id)`, `osv_entry(recognition_job_id)`, `stored_file(current_recognition_job_id)` (OQ-117). - **`05-domain-rules.md`** по факту реализации: §1.3 (маппинг в ядре, TOTAL не хранится, нормализация кода), §1.5 (`period_check = UNKNOWN` до Среза 4, `is_cumulative` по Q1), §3 п. 4 (резолв без policy), §9.2 (кто ставит статус файла), §9.3 (условия RECOGNIZED/NEEDS_CHECK), новый §9.5 «Автозамена и удаление файлов». - **`03-architecture.md`**: цикл маппинга как третий фоновый процесс (OQ-69 закрыт). **`09-delivery-plan.md`**: 2c по факту. **`dev/qa-guide.md`** §6.6: сценарии загрузки ОСВ и просмотра строк через API. - **OQ**: закрыты OQ-59, 67, 69, 70, 109, 117; новые OQ-110…116 (удаление после консолидаций, ретеншн при удалении, остатки e2e в MinIO, полнота плана счетов, `is_modified` в API строк, частичная автозамена, NEEDS_CHECK при нарастании по Q1). - Change `slice-2c-osv-ingest` (skip_specs). Порядок merge: этот PR — до RSHB/arm-core#15. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-05 20:09:35 +03:00
aep changed title from Срез 2c: DBML v5.15 (NU, email в нижнем регистре), спека сквозного change to Срез 2c: DBML v5.15 (NU, email, индексы), §1.3/§1.5/§3/§9 по факту маппинга, OQ-110…117, qa-guide 2026-10-06 00:00:57 +03:00
aep added 4 commits 2026-10-06 00:00:58 +03:00
entities-v5.15.md — копия v5.14 + «Что изменилось в v5.15» (osv_data_type NU, email в нижнем регистре, семантика
stored_file.status); 04-data-model-guide и шаблон CLAUDE.md arm-core — на v5.15; tasks.md change'а: 1.2 выполнена.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
05-domain-rules: §1.3, §1.5, §3 п. 4, §9.2–9.3, новый §9.5 (загрузка, маппинг, автозамена, подтверждение, удаление, аудит).
03-architecture: цикл маппинга, порядок блокировок, схема ключей S3. 07-open-questions: закрыты OQ-67/69/70/59/109,
новые OQ-110…116. 09-delivery-plan: Срез 2c по факту. dev/qa-guide: раздел 6.6 «Загрузка ОСВ и просмотр строк через API».
tasks.md: 2.1 выполнен.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- 07-open-questions: OQ-117 — индексы osv_entry(parent_entry_id),
  osv_entry(recognition_job_id), stored_file(current_recognition_job_id); без них
  DELETE /files/{id} делает seq scan на проверке self-FK (I-1 final review, R-24);
  нужны DBML v5.16 и миграция 0004, блокер до прода / до подсреза 2d.
- 09-delivery-plan: итог make check-full приведён к фактическому прогону
  (e2e skipped в check-full, отдельный e2e 1 passed, fixtures 13 + 1 skipped);
  решения без обсуждения №1–52 (T12.6).
- qa-guide U16: до ERROR файл остаётся UPLOADED (ack нет) (T12.7).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- data-model-v5.15.dbml: обычные индексы osv_entry (parent_entry_id), osv_entry (recognition_job_id),
  stored_file (current_recognition_job_id) с note; п. 4 changelog v5.15 — индексы для удаления файла и
  обхода дерева строк; замер: DELETE документа 1000 строк 8,6 с → 16 мс на 200 тыс. строк.
- entities-v5.15.md: строка 4 в «Что изменилось в v5.15».
- 07-open-questions: OQ-117 закрыт в v5.15 (v5.16 и миграция 0004 не понадобились).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep merged commit 2081eb0c49 into main 2026-10-06 00:56:05 +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#17
No description provided.