spec: finalize wealth-ledger SDD migration
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 11s
Conventional commits / commits (pull_request) Successful in 12s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 11s
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 11s
Conventional commits / commits (pull_request) Successful in 12s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 11s
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
## Why
|
||||
|
||||
WealthLedger показывает инвестиции и пассивный доход, но пользователю также
|
||||
нужен раздел личных банковских карт: сколько денег на каждой карте, какие
|
||||
операции происходили и к каким категориям относятся повседневные траты.
|
||||
|
||||
Первая итерация позволяет самостоятельно добавить карты и вести операции.
|
||||
Пользователь выбрал последовательную подготовку SDD-артефактов: сначала
|
||||
концепция и требования, затем Design, Tasks и реализация.
|
||||
|
||||
## What Changes
|
||||
|
||||
**Статус:** ответы Q1–Q9 согласованы. [Delta Specs](specs/manual-bank-cards/spec.md)
|
||||
дополнены правилами целостного ручного учёта для рассмотрения вместе с Design.
|
||||
Конкретизация требований ниже не является дословным ответом пользователя
|
||||
на каждый частный случай и не означает начала реализации.
|
||||
|
||||
### Согласованный результат
|
||||
|
||||
- Q1: каждая вручную добавленная карта имеет независимые баланс и историю.
|
||||
- Q2: баланс рассчитывается из начального остатка и внесённых операций.
|
||||
- Q3: первая версия поддерживает дебетовые карты в рублях.
|
||||
- Q4: доступны расход, пополнение, перевод между своими картами и возврат
|
||||
покупки. Перевод вводится одним действием и не считается расходом.
|
||||
- Q5: есть начальный набор категорий; пользователь может добавлять
|
||||
и переименовывать свои категории без вложенных подкатегорий.
|
||||
- Q6: журнал дополняется месячной сводкой расходов по категориям для выбранной
|
||||
карты и всех банковских карт пользователя вместе.
|
||||
- Q7: отрицательный учётный баланс допустим, в том числе до внесения
|
||||
пропущенного пополнения.
|
||||
- Q8: операции можно исправлять и удалять с пересчётом результатов;
|
||||
ненужную карту можно убрать в архив с сохранением истории.
|
||||
- Q9: возврат уменьшает расходы месяца, в котором он произошёл;
|
||||
сводка отдельно показывает расходы, возвраты и итог после возвратов.
|
||||
|
||||
### Целостность пользовательского сценария
|
||||
|
||||
Пользователь задаёт начало учёта и начальный остаток, вносит операции
|
||||
с категориями и датами, исправляет ошибки и видит согласованные баланс,
|
||||
историю и месячные сводки. Частичные возвраты связаны с исходной покупкой.
|
||||
Архив скрывает неиспользуемую карту из обычного списка, сохраняя её вклад
|
||||
в исторические сводки; для новых операций и финансовых исправлений карту
|
||||
нужно вернуть из архива.
|
||||
|
||||
Раздел банковских карт доступен после входа в WealthLedger независимо
|
||||
от подключения инвестиционного счёта. Пользовательские данные сохраняются
|
||||
при повторном входе и перезапуске приложения, остаются доступны только
|
||||
владельцу и защищены от дублирования при повторной отправке и от потери
|
||||
одновременных изменений.
|
||||
Повтор создания карты или операции после потерянного ответа сохраняет один
|
||||
результат, включая начальный остаток карты.
|
||||
|
||||
### Термины
|
||||
|
||||
**Карта:** добавленная пользователем дебетовая банковская карта в рублях,
|
||||
для которой он отдельно ведёт баланс и историю операций. Она не является
|
||||
брокерским счётом или общим счётом нескольких карт.
|
||||
|
||||
**Баланс карты:** сумма денег по данным ручного учёта, рассчитанная из начального
|
||||
остатка и внесённых операций. Она не подтверждает текущий остаток в банковском
|
||||
приложении: пропущенные движения могут привести к расхождению.
|
||||
|
||||
**Итог расходов после возвратов:** расходы выбранного месяца за вычетом
|
||||
возвратов, произошедших в этом месяце; итог может быть отрицательным.
|
||||
|
||||
После реализации определения дополнят существующий
|
||||
[глоссарий](../../../../docs/glossary.md); отдельный постоянный глоссарий
|
||||
не создаётся.
|
||||
|
||||
### Границы первой итерации
|
||||
|
||||
Не входят автоматическая загрузка данных из банков, кредитные карты, другие
|
||||
валюты, общий денежный баланс нескольких карт, объединение банковских денег
|
||||
с инвестициями, прогнозы и бюджеты. Не предусмотрены вложенные подкатегории,
|
||||
удаление категорий и безвозвратное удаление карт.
|
||||
|
||||
Произвольной операции «исправить баланс» нет: расхождение исправляется
|
||||
изменением начального остатка либо внесением или исправлением реальной
|
||||
операции. Месячная сводка всех карт показывает траты и возвраты, сохраняя
|
||||
независимый баланс каждой карты.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `specs/manual-bank-cards/spec.md`: ручное добавление и архив банковских карт,
|
||||
точный баланс по операциям, расходы и категории, пополнения, переводы,
|
||||
связанные возвраты, исправления и месячные сводки.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
Нет. Новый раздел сохраняет поведение существующих инвестиционных
|
||||
представлений и не расширяет понятие Brokerage Account банковскими картами.
|
||||
|
||||
## Impact
|
||||
|
||||
- Пользователь получает учёт банковских карт и повседневных трат с историей
|
||||
и возможностью исправить введённые данные.
|
||||
- Frontend: отдельный раздел карт, формы операций и исправлений, архив,
|
||||
категории и месячные сводки.
|
||||
- Backend: сохранение пользовательского ручного учёта, точный расчёт
|
||||
и защита целостности, приватности и одновременных изменений.
|
||||
- Specs: проверяемый контракт новой возможности через SDD.
|
||||
- Docs: описание новой предметной области и обновление глоссария при поставке.
|
||||
|
||||
Существующие [брокерские счета](../../../../docs/domains/accounts/overview.md)
|
||||
получаются через инвестиционное подключение; банковские счета исключены их
|
||||
[контрактом](../../specs/brokerage-accounts/spec.md).
|
||||
Текущий [журнал операций](../../../../docs/domains/operations/overview.md)
|
||||
описывает историю брокера для чтения и не рассчитывает остаток после операции.
|
||||
Правила нового ручного учёта определяют Delta Specs этого изменения.
|
||||
Reference in New Issue
Block a user