Исправляет импорт выписок, где 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.
Независимое ревью: найден блокирующий дефект. Позиционный 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.
Повторное независимое ревью после 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 main2026-08-25 21:49:32 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Исправляет импорт выписок, где PDF-конвертер не передал время или sourceId: одинаковые строки получают стабильный fingerprint с позицией только при повторении в одном файле.
Проверки: npm run build; npm run 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.Повторное независимое ревью после
3f56810: прежний блокер устранён. Для[A] → [A, A]первый экземпляр использует совместимый с прежними данными базовый fingerprint и пропускается, второй получает fingerprint с ordinal=1 и импортируется; добавлен соответствующий интеграционный сценарий. Полный текущий diff проверен, новых блокирующих замечаний нет.npm run build --workspace=@family-budget/backendиtest:import:directionпроходят. DB-интеграционный тест ранее недоступен из-за таймаута тестовой PostgreSQL.