Исправить импорт одинаковых операций из JSON #42

Merged
admin merged 2 commits from fix/json-import-duplicates into main 2026-08-25 21:49:32 +00:00
Collaborator

Исправляет импорт выписок, где PDF-конвертер не передал время или sourceId: одинаковые строки получают стабильный fingerprint с позицией только при повторении в одном файле.

Проверки: npm run build; npm run test:import:direction. Интеграционный test:import:db не запустился из-за таймаута подключения к тестовой PostgreSQL.

Исправляет импорт выписок, где PDF-конвертер не передал время или sourceId: одинаковые строки получают стабильный fingerprint с позицией только при повторении в одном файле. Проверки: npm run build; npm run test:import:direction. Интеграционный test:import:db не запустился из-за таймаута подключения к тестовой PostgreSQL.
agent added 1 commit 2026-08-25 21:40:14 +00:00
Author
Collaborator

Независимое ревью: найден блокирующий дефект. Позиционный fingerprint применяется только если одинаковая fallback-операция повторяется в текущем файле. Поэтому после импорта файла [A] импорт пересекающегося [A, A] присвоит обоим A новые ключи с позициями (...|0, ...|1) и вставит две операции вместо пропуска уже существующей A. Это нарушает заявленную идемпотентность для пересекающихся выписок. Нужна стратегия, совместимая с уже сохранённым базовым fingerprint, и интеграционный тест сценария [A][A, A]. Сборка и test:import:direction проходят; test:import:db не запустился из-за таймаута тестовой PostgreSQL.

Независимое ревью: найден блокирующий дефект. Позиционный fingerprint применяется только если одинаковая fallback-операция повторяется в текущем файле. Поэтому после импорта файла `[A]` импорт пересекающегося `[A, A]` присвоит обоим A новые ключи с позициями (`...|0`, `...|1`) и вставит две операции вместо пропуска уже существующей A. Это нарушает заявленную идемпотентность для пересекающихся выписок. Нужна стратегия, совместимая с уже сохранённым базовым fingerprint, и интеграционный тест сценария `[A]` → `[A, A]`. Сборка и `test:import:direction` проходят; `test:import:db` не запустился из-за таймаута тестовой PostgreSQL.
agent added 1 commit 2026-08-25 21:43:50 +00:00
Author
Collaborator

Повторное независимое ревью после 3f56810: прежний блокер устранён. Для [A] → [A, A] первый экземпляр использует совместимый с прежними данными базовый fingerprint и пропускается, второй получает fingerprint с ordinal=1 и импортируется; добавлен соответствующий интеграционный сценарий. Полный текущий diff проверен, новых блокирующих замечаний нет. npm run build --workspace=@family-budget/backend и test:import:direction проходят. DB-интеграционный тест ранее недоступен из-за таймаута тестовой PostgreSQL.

Повторное независимое ревью после 3f56810: прежний блокер устранён. Для `[A] → [A, A]` первый экземпляр использует совместимый с прежними данными базовый fingerprint и пропускается, второй получает fingerprint с ordinal=1 и импортируется; добавлен соответствующий интеграционный сценарий. Полный текущий diff проверен, новых блокирующих замечаний нет. `npm run build --workspace=@family-budget/backend` и `test:import:direction` проходят. DB-интеграционный тест ранее недоступен из-за таймаута тестовой PostgreSQL.
admin merged commit a1e93a7c1f into main 2026-08-25 21:49:32 +00: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: admin/family_budget#42