24 lines
1.0 KiB
Markdown
24 lines
1.0 KiB
Markdown
# 2026-09-13 — Несколько бюджетов + is_active
|
|
|
|
## Модель
|
|
- У пользователя много строк в `budgets` (снят UNIQUE user_id)
|
|
- Поля: `name`, `is_active`, `users.selected_budget_id`
|
|
- `expenses.budget_id` — траты привязаны к конкретному бюджету
|
|
- Миграция на старте API (`migrate_schema`) для старых БД
|
|
|
|
## Семантика
|
|
- **Активный** — можно писать траты
|
|
- **Текущий (selected)** — default для /status, операций, журнала
|
|
- Неактивный отклоняет новые expenses
|
|
|
|
## API
|
|
- `GET/POST /api/me/budgets`
|
|
- `PUT /api/me/budgets/{id}`
|
|
- `PATCH /api/me/budgets/{id}/active`
|
|
- `POST /api/me/budgets/{id}/select`
|
|
- `budget_id` на expenses / budget GET
|
|
|
|
## Клиенты
|
|
- Web: страница `/budgets`, переключатель вкл/выкл и «текущий»
|
|
- Bot: `/budgets`, `/budget` создаёт новый; inline select/toggle
|