Решение (2026-04-04)
Понятийное разделение
Повторяющееся (recurring) — автоматическое действие по расписанию без подтверждения пользователя. Бот сам создаёт транзакцию и шлёт уведомление. Пример: аренда 30,000 THB каждое 1-е число.
Запланированное (planned) — список намерений/желаний без жёсткой даты. Пример: купить толкушку. В будущем: триггер по событию (зп → бот напоминает о планах). Это отдельный issue, реализуется позже.
MVP Scope (этот issue)
- Только monthly recurrence
- Только фиксированная сумма
- Авто-создание транзакции + уведомление в Telegram, без подтверждения
- Архитектурно: recurrence_type как расширяемый enum (monthly/weekly/daily) — не прибито гвоздями
Архитектура
Новая таблица budget_recurring:
- id, name, amount, category_id, currency
- recurrence_type: TEXT (monthly | weekly | daily — расширяемо)
- day_of_month: INT (для monthly, например 1)
- next_date: DATE — следующая дата срабатывания
- enabled: BOOL
- created_at, updated_at
Worker: расширяем существующий ReminderWorker (или отдельный RecurringWorker) — каждую минуту смотрит next_date <= today, создаёт транзакцию, шлёт уведомление, сдвигает next_date на следующий период.
Skill actions:
add_recurring — создать повторяющийся платёж
list_recurring — список всех (активных + отключённых)
disable_recurring / delete_recurring
Связанные issue
Решение (2026-04-04)
Понятийное разделение
Повторяющееся (recurring) — автоматическое действие по расписанию без подтверждения пользователя. Бот сам создаёт транзакцию и шлёт уведомление. Пример: аренда 30,000 THB каждое 1-е число.
Запланированное (planned) — список намерений/желаний без жёсткой даты. Пример: купить толкушку. В будущем: триггер по событию (зп → бот напоминает о планах). Это отдельный issue, реализуется позже.
MVP Scope (этот issue)
Архитектура
Новая таблица
budget_recurring:Worker: расширяем существующий ReminderWorker (или отдельный RecurringWorker) — каждую минуту смотрит next_date <= today, создаёт транзакцию, шлёт уведомление, сдвигает next_date на следующий период.
Skill actions:
add_recurring— создать повторяющийся платёжlist_recurring— список всех (активных + отключённых)disable_recurring/delete_recurringСвязанные issue