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).
## Если запуск или сценарий не работает
+3 -1
View File
@@ -12,7 +12,7 @@ Storybook 10.6.0 показывает реальные представлени
## Компоненты и работа с примерами
Каталог включает 10 групп и 41 пример:
Каталог включает 12 групп и 50 примеров:
| Группа | Что показывает |
| --- | --- |
@@ -26,6 +26,8 @@ Storybook 10.6.0 показывает реальные представлени
| Обновление портфеля | Сохранённые суммы при обновлении и ошибке, локальную повторную попытку |
| Загрузка страницы счёта | Контур ожидаемых заголовка, сводки и строк |
| Структура портфеля | Валюты и типы активов, только деньги, пустую и неполную оценку, неизвестные и отрицательные значения |
| Сводка банковских карт | Расходы и возвраты, отрицательный месяц возврата, известные нули, загрузку, ошибку, сохранённые суммы и длинные точные итоги |
| Поля банковской карты | Независимую рублёвую карту и недоступные финансовые поля архива |
Каталог не перечисляет все элементы библиотеки или приложения. Отсутствие
представления в витрине не означает его отсутствия в продукте. Основы показывают
+15 -3
View File
@@ -39,10 +39,22 @@ SQLite-базе завершалось `Schema engine error` до запуска
Предыдущее описание локальной проверки от 12 сентября 2026 года также отмечало
ошибку на временной базе без обращения к пользовательской базе.
Успех unit-проверок и OpenAPI не закрывает эту границу. Принятое условие пересмотра —
Успех unit-проверок и OpenAPI не закрывает эту границу. Условие проверки —
стабильная версия Prisma с тремя последовательными успешными применениями
миграций на новых базах под Node 22. Условия безопасного локального запуска и
сохранения данных — в [локальном окружении](local-workspace.md).
миграций на новых базах под Node 22.
При реализации ручных карт Prisma 7.9.1 на Node 22.21.0 трижды подряд применил
существующие migrations к новым временным базам командой
`RUST_LOG=info DATABASE_URL=file:<новая-временная-база> npx prisma migrate deploy`
вне sandbox. Без `RUST_LOG=info` пустой `Schema engine error` воспроизводился
и вне sandbox. Поэтому подтверждён именно этот способ запуска; исправление
обычного запуска или причина зависимости от журналирования не установлены.
Он использует штатную историю migrations без `db push`, reset или ручного SQL-обхода.
Результат исходной проверки сохранён в
[Tasks ручных карт](../../specs/openspec/changes/add-manual-bank-cards/tasks.md).
Применение новой миграции, DB-инварианты и HTTP-сценарии требуют своих проверок.
Условия безопасного локального запуска и сохранения данных —
в [локальном окружении](local-workspace.md).
## Где выполнять проверки