Files
pulse-api/docs/SAVINGS.md
Cosmo 2a50e50771 feat(savings): Add savings module with categories, transactions, recurring plans
- Categories: regular, deposits, credits, recurring, multi-user, accounts
- Transactions: deposits and withdrawals with user tracking
- Recurring plans: monthly payment obligations per user
- Stats: overdues calculation with allocation algorithm
- Excludes is_account categories from total sums
- Documentation: docs/SAVINGS.md
2026-02-16 06:48:09 +00:00

3.0 KiB
Raw Permalink Blame History

Savings Module

Модуль накоплений для Pulse App. Позволяет отслеживать накопления, вклады, кредиты и регулярные платежи.

Функционал

Категории

  • Обычные накопления — копилки с произвольными пополнениями
  • Депозиты (is_deposit) — вклады с процентной ставкой и сроком
  • Кредиты (is_credit) — отслеживание погашения кредитов
  • Регулярные (is_recurring) — категории с ежемесячными обязательствами
  • Мультипользовательские (is_multi) — общие категории для нескольких пользователей
  • Счета (is_account) — транзитные счета (исключаются из общих сумм)

Recurring Plans

Для категорий с is_recurring=true создаются планы платежей:

  • effective — дата начала действия плана
  • amount — сумма ежемесячного платежа
  • day — день месяца для платежа (1-28)
  • user_id — пользователь (для multi-категорий)

Алгоритм расчёта просрочек

  1. Определение периода: начало = MAX(category.created_at, earliest_plan.effective)
  2. Построение списка месяцев от начала до текущего
  3. Расчёт required для каждого месяца по активному плану
  4. Allocation deposits: каждый депозит сначала покрывает свой месяц, потом предыдущие
  5. Overdues: все прошлые месяцы с remaining > 0

Расчёт сумм

  • total_deposits — сумма пополнений пользователя (исключая is_account)
  • total_withdrawals — сумма снятий пользователя (исключая is_account)
  • total_balance — сумма балансов всех категорий пользователя

API Endpoints

Categories

  • GET /savings/categories — список категорий
  • POST /savings/categories — создать категорию
  • PUT /savings/categories/:id — обновить
  • DELETE /savings/categories/:id — удалить

Transactions

  • GET /savings/transactions — список транзакций
  • POST /savings/transactions — создать
  • PUT /savings/transactions/:id — обновить
  • DELETE /savings/transactions/:id — удалить

Stats

  • GET /savings/stats — статистика (балансы, monthly_payments, overdues)

Recurring Plans

  • GET /savings/categories/:id/recurring-plans — планы
  • POST /savings/categories/:id/recurring-plans — создать
  • PUT /savings/recurring-plans/:planId — обновить
  • DELETE /savings/recurring-plans/:planId — удалить