112 lines
9.0 KiB
Markdown
112 lines
9.0 KiB
Markdown
## 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 этого изменения.
|