Сохранять порядок транзакций при отсутствии времени в выписке #25

Closed
opened 2026-08-17 20:44:45 +00:00 by agent · 3 comments
Collaborator

Проблема

Новые банковские выписки могут содержать только дату операции. После импорта все операции этого дня получают одинаковый operationAt (00:00:00), а текущая сортировка только по дате делает их порядок нестабильным при обновлении страницы.

Решение

Сохранять позицию транзакции в исходном массиве JSON при импорте. Использовать её вторичным ключом сортировки вместо искусственно восстановленного времени.

Критерии готовности

  • порядок элементов в JSON сохраняется в БД для каждой импортированной транзакции;
  • при сортировке по дате по убыванию одинаковые даты отображаются в банковском порядке из файла;
  • при сортировке по возрастанию этот порядок корректно инвертируется;
  • есть окончательный стабильный tie-breaker, поэтому перезагрузка страницы не меняет порядок;
  • для старых транзакций выполняется безопасное детерминированное заполнение;
  • JSON-схему менять не требуется: порядок уже задан массивом transactions;
  • добавлена проверка нескольких операций с одинаковой датой и отсутствующим временем.
## Проблема Новые банковские выписки могут содержать только дату операции. После импорта все операции этого дня получают одинаковый `operationAt` (00:00:00), а текущая сортировка только по дате делает их порядок нестабильным при обновлении страницы. ## Решение Сохранять позицию транзакции в исходном массиве JSON при импорте. Использовать её вторичным ключом сортировки вместо искусственно восстановленного времени. ## Критерии готовности - порядок элементов в JSON сохраняется в БД для каждой импортированной транзакции; - при сортировке по дате по убыванию одинаковые даты отображаются в банковском порядке из файла; - при сортировке по возрастанию этот порядок корректно инвертируется; - есть окончательный стабильный tie-breaker, поэтому перезагрузка страницы не меняет порядок; - для старых транзакций выполняется безопасное детерминированное заполнение; - JSON-схему менять не требуется: порядок уже задан массивом `transactions`; - добавлена проверка нескольких операций с одинаковой датой и отсутствующим временем.
Author
Collaborator

Проверено: PR #26 не менял порядок транзакций при одинаковом operationAt. Риск остаётся актуальным, особенно для выписок/CSV только с датой; issue оставлен открытым.

Проверено: PR #26 не менял порядок транзакций при одинаковом operationAt. Риск остаётся актуальным, особенно для выписок/CSV только с датой; issue оставлен открытым.
Author
Collaborator

Актуальный статус: для операций уже появились стабильные operationId/sourceId, поэтому повторный импорт не дублирует строки даже при одинаковых датах/суммах. Но позиция в исходном массиве отдельно не сохраняется, а сортировка транзакций по operation_at не получила вторичный ключ порядка. Issue остаётся открытым.

Актуальный статус: для операций уже появились стабильные operationId/sourceId, поэтому повторный импорт не дублирует строки даже при одинаковых датах/суммах. Но позиция в исходном массиве отдельно не сохраняется, а сортировка транзакций по operation_at не получила вторичный ключ порядка. Issue остаётся открытым.
Author
Collaborator

В работу: сохраняю позицию операции в исходном массиве, добавляю стабильную сортировку для одинаковых дат и безопасный backfill старых записей.

В работу: сохраняю позицию операции в исходном массиве, добавляю стабильную сортировку для одинаковых дат и безопасный backfill старых записей.
agent closed this issue 2026-08-20 21:00:36 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/family_budget#25