Follow-ups from #14 #17

Open
opened 2026-10-06 00:58:11 +03:00 by aep · 0 comments
Owner

Отложенные находки Среза 2c (PR #15). Формулировки — docs/superpowers/plans/2026-10-05-slice-2c-osv-ingest-ledger.md. Маркер — суть — откуда.

Вопросы владельца (OQ в docs)

  • OQ-116 / R-17 — документ Q2–Q4, признанный нарастающим по данным Q1, получает NEEDS_CHECK; оставить или считать распознанным — финальное ревью
  • OQ-115 / T8.4 — новый файл с частью документов прежнего заменяет прежний целиком — T8
  • OQ-113 / O-3 — в seed плана счетов нет 19 субсчетов из реальных ОСВ (01.01, 66.01, 76.01, 60.АВ, 76.ОТ…) → account_id = NULL — T8 golden
  • OQ-114 / T9.7 — EntryOut без is_modified/original_* для панели правки 2d — T9
  • OQ-110 — удаление файла после появления консолидаций (FK из consolidation_document, ex_snapshot_item, financial_statement_meta); R-23 — очистка financial_statement_meta в Срезе 3 — T10
  • OQ-111 / OQ-112 — ретеншн S3 при удалении (expires_at); остатки e2e в MinIO — T10, T11

Загрузка

  • T2.3 — TABULAR_FILE_TYPES дублирует DEFAULT_FILE_TYPES — T2
  • T3.1 — docstring _lock_content; T3.2 — теоретический deadlock advisory-блокировок при встречном порядке файлов; T3.3 — except Exception вокруг put_object маскирует баги под STORAGE_UNAVAILABLE; T3.4 — responses={422: UploadResult} затирает HTTPValidationError в OpenAPI; T3.5 — domain/file_types.py зависит от FastAPI; T3.6 — нет теста на два одинаковых файла в одном запросе — T3
  • M-4 — суммарный размер multipart и число файлов не ограничены в приложении (лимит на ingress) — финальное ревью

Обмен и статусы

  • T4.3 — повторный ERROR сдвигает updated_at; T4.4 — dlq не проверяет rowcount UPDATE задания; T4.5 — тест отката не проверяет откат s3_object — T4

Маппинг

  • T5.2 — ИНН вида «ИНН/КПП …»; T5.3 — дубль row_number схлопывает id — T5
  • T6.2 — ИНН с префиксом или .0 не матчится; T6.3 — кэш индекса контрагентов при росте справочника; T6.5 — комментарий в тесте — T6
  • T7.3 — при снижении MAPPING_MAX_ATTEMPTS файлы с attempts >= max зависают в PROCESSING; T7.4 — два инстанса могут параллельно мапить одного кандидата; T7.5 — при старте без S3 цикл не запускается до рестарта; T7.8 — DocumentOut.warnings показывает предупреждения всего файла; T7.9 — golden сверял 4 из 6 сумм (закрыто golden-тестом T8); T7.10 — нечитаемое сравнение в тесте; T7.11 — решения №3/№4/№8 без тестов; T7.12 — тесты validate_result_key под integration; T7.13 — сообщение при documents: [] — T7
  • T8.2 — advisory-блокировка автозамены без теста гонки; T8.3 — пустой description при смене ключа документа между выборкой и блокировкой; T8.5 — golden сверяет level из БД; T8.7 — повтор счёта в двух листах даст ложное падение golden — T8

API и удаление

  • T9.1 — приватные _entry_values/_group_schema в фабрике; T9.2 — make_entries_from_result без counterparty_id; T9.4 — лишний PageParams в read.py; T9.5 — дубль констант; T9.6 — file_out в services/documents.py — T9
  • T10.1 — порядок документов в before_value; T10.2 — тест не сверяет user_id; T10.3 — тест «цикл игнорирует удалённый файл» не гонка; T10.4 — _wait_for_lock_waiter считает любой Lock; T10.5 — теоретический job между lock_jobs и lock_file — T10

E2E

  • T11.3 — тавтологичная проверка порядка, суммы не сверяются; T11.5 — _EngineStub без dispose; T11.6 — make e2e не проверяет инфраструктуру — T11
  • O-4 — compose-проект arm-ka запущен из удалённого compose-файла worktree; make up из другого worktree может пересоздать инфраструктуру — окружение
Отложенные находки Среза 2c (PR #15). Формулировки — `docs/superpowers/plans/2026-10-05-slice-2c-osv-ingest-ledger.md`. Маркер — суть — откуда. **Вопросы владельца (OQ в docs)** - OQ-116 / R-17 — документ Q2–Q4, признанный нарастающим по данным Q1, получает `NEEDS_CHECK`; оставить или считать распознанным — финальное ревью - OQ-115 / T8.4 — новый файл с частью документов прежнего заменяет прежний целиком — T8 - OQ-113 / O-3 — в seed плана счетов нет 19 субсчетов из реальных ОСВ (`01.01`, `66.01`, `76.01`, `60.АВ`, `76.ОТ`…) → `account_id = NULL` — T8 golden - OQ-114 / T9.7 — `EntryOut` без `is_modified`/`original_*` для панели правки 2d — T9 - OQ-110 — удаление файла после появления консолидаций (FK из `consolidation_document`, `ex_snapshot_item`, `financial_statement_meta`); R-23 — очистка `financial_statement_meta` в Срезе 3 — T10 - OQ-111 / OQ-112 — ретеншн S3 при удалении (`expires_at`); остатки e2e в MinIO — T10, T11 **Загрузка** - T2.3 — `TABULAR_FILE_TYPES` дублирует `DEFAULT_FILE_TYPES` — T2 - T3.1 — docstring `_lock_content`; T3.2 — теоретический deadlock advisory-блокировок при встречном порядке файлов; T3.3 — `except Exception` вокруг `put_object` маскирует баги под `STORAGE_UNAVAILABLE`; T3.4 — `responses={422: UploadResult}` затирает `HTTPValidationError` в OpenAPI; T3.5 — `domain/file_types.py` зависит от FastAPI; T3.6 — нет теста на два одинаковых файла в одном запросе — T3 - M-4 — суммарный размер multipart и число файлов не ограничены в приложении (лимит на ingress) — финальное ревью **Обмен и статусы** - T4.3 — повторный `ERROR` сдвигает `updated_at`; T4.4 — `dlq` не проверяет rowcount UPDATE задания; T4.5 — тест отката не проверяет откат `s3_object` — T4 **Маппинг** - T5.2 — ИНН вида «ИНН/КПП …»; T5.3 — дубль `row_number` схлопывает id — T5 - T6.2 — ИНН с префиксом или `.0` не матчится; T6.3 — кэш индекса контрагентов при росте справочника; T6.5 — комментарий в тесте — T6 - T7.3 — при снижении `MAPPING_MAX_ATTEMPTS` файлы с `attempts >= max` зависают в PROCESSING; T7.4 — два инстанса могут параллельно мапить одного кандидата; T7.5 — при старте без S3 цикл не запускается до рестарта; T7.8 — `DocumentOut.warnings` показывает предупреждения всего файла; T7.9 — golden сверял 4 из 6 сумм (закрыто golden-тестом T8); T7.10 — нечитаемое сравнение в тесте; T7.11 — решения №3/№4/№8 без тестов; T7.12 — тесты `validate_result_key` под `integration`; T7.13 — сообщение при `documents: []` — T7 - T8.2 — advisory-блокировка автозамены без теста гонки; T8.3 — пустой `description` при смене ключа документа между выборкой и блокировкой; T8.5 — golden сверяет `level` из БД; T8.7 — повтор счёта в двух листах даст ложное падение golden — T8 **API и удаление** - T9.1 — приватные `_entry_values`/`_group_schema` в фабрике; T9.2 — `make_entries_from_result` без `counterparty_id`; T9.4 — лишний `PageParams` в `read.py`; T9.5 — дубль констант; T9.6 — `file_out` в `services/documents.py` — T9 - T10.1 — порядок документов в `before_value`; T10.2 — тест не сверяет `user_id`; T10.3 — тест «цикл игнорирует удалённый файл» не гонка; T10.4 — `_wait_for_lock_waiter` считает любой Lock; T10.5 — теоретический job между `lock_jobs` и `lock_file` — T10 **E2E** - T11.3 — тавтологичная проверка порядка, суммы не сверяются; T11.5 — `_EngineStub` без `dispose`; T11.6 — `make e2e` не проверяет инфраструктуру — T11 - O-4 — compose-проект `arm-ka` запущен из удалённого compose-файла worktree; `make up` из другого worktree может пересоздать инфраструктуру — окружение
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#17
No description provided.