docs: describe manual bank card accounting

Document exact balances, corrections, archive behavior and safe migration and rollback. Update product navigation and UI catalog.
This commit is contained in:
2026-09-12 18:34:20 +03:00
parent 05bfe8df1c
commit c0dfb80617
8 changed files with 228 additions and 15 deletions
+34 -4
View File
@@ -28,8 +28,10 @@ T-Bank token вводится пользователем через интерф
**Известное ограничение:** ранее была зафиксирована ошибка `Schema engine error`
на новой временной SQLite-базе до создания схемы. Условия проверки и пересмотра —
в [ограничении сквозной проверки](verification.md#известное-ограничение-сквозной-проверки).
Пользовательская база для такого воспроизведения не нужна; полный первый запуск
на чистой базе этим свидетельством не подтверждён.
На Node 22.21.0 / Prisma 7.9.1 подтверждено три последовательных применения
миграций к новым временным базам с `RUST_LOG=info` вне sandbox. Без этой
переменной ошибка воспроизводится. Пользовательская база для воспроизведения
не нужна; успешная миграция сама по себе не подтверждает полный первый запуск.
В development доступна [локальная Swagger UI](http://localhost:3000/api/docs)
при стандартном порте API. Она показывает контракт, но не доказывает доступность
@@ -57,8 +59,36 @@ refresh-cookie получает Secure flag и требует защищённо
4. «Доходы» показывают полученные выплаты, «События» — будущие.
5. При выходе локальная сессия и её клиентский кэш очищаются.
Без T-Bank token доступны регистрация, вход и состояние отсутствующего
подключения. Это не подтверждает работу финансовых сценариев.
Без T-Bank token доступны регистрация, вход, состояние отсутствующего
подключения и [ручной банковский учёт](../domains/cards/overview.md).
Банковский сценарий не подтверждает доступность инвестиционных поставщиков.
## Сохранение данных и откат
Перед обновлением сохраняется согласованный SQLite backup; ключ шифрования
T-Bank хранится отдельно. Для работающей базы используется SQLite backup API,
который учитывает WAL. Несогласованное копирование файлов базы и WAL не является
резервной копией. Восстановление сначала проверяется на отдельном файле.
Банковская миграция добавляет таблицы, сохраняя User, Session и TbankConnection.
При необходимости отката приложения сначала прекращаются новые записи и
сохраняется актуальный снимок. Затем возвращается совместимая предыдущая версия
backend при сохранении расширенной схемы. Старый backup не восстанавливается
поверх новой истории: это удалило бы введённые банковские операции.
Совместимость проверена с исходной версией backend
`8ec172f48eefa2237dc0c16919fbb2e726b39a65`: она выполняла вход с расширенной
схемой, а новая версия после возврата читала прежние карты и операции.
Отдельно проверены перезапуск, служебные данные защиты повторов и приложение
на восстановленной SQLite-копии. Это подтверждение конкретной пары версий,
а не гарантия совместимости любого будущего изменения схемы.
Проверка воспроизводится через
[процессный сценарий](../../backend/test/bank-cards-durability.cjs)
с каталогом отдельно собранного baseline: после активации backend `.nvmrc`
выполнить `node test/bank-cards-durability.cjs <baseline-directory>`.
Сценарий создаёт собственные временные базы и вымышленные данные. Migrations
и HTTP/DB-ограничения описаны в [проверке системы](verification.md).
## Если запуск или сценарий не работает