4.6 KiB
4.6 KiB
Категории расходов и доходов (MVP)
Базовый список категорий
Используются следующие категории для классификации транзакций:
| Категория | type |
|---|---|
| Продукты | expense |
| Авто | expense |
| Здоровье | expense |
| Арчи | expense |
| ЖКХ | expense |
| Дом | expense |
| Проезд | expense |
| Одежда | expense |
| Химия | expense |
| Косметика | expense |
| Инвестиции | transfer |
| Развлечения | expense |
| Общепит | expense |
| Штрафы | expense |
| Налоги | expense |
| Подписки | expense |
| Перевод | transfer |
| Наличные | expense |
| Подарки | expense |
| Спорт | expense |
| Отпуск | expense |
| Техника | expense |
| Поступления | income |
Особенности:
- Категории на данном этапе одноуровневые (без подкатегорий).
- Категории используются как для фильтрации и аналитики, так и для правил авто-категоризации.
- Категория
Переводиспользуется для переводов (в т.ч. между своими счетами и на другие счета). - Категория
Инвестициипредназначена для операций, связанных с брокерским счётом/ценными бумагами. - Категория
Поступленияиспользуется для всех видов доходов (зарплата, кешбэк и др.), пока без детализации.
Таблица categories (PostgreSQL)
Для хранения категорий используется отдельная таблица categories.
Рекомендуемая структура:
id BIGSERIAL PRIMARY KEY— идентификатор категории.name TEXT NOT NULL— отображаемое имя категории (из списка выше).type TEXT NOT NULL— тип категории:"expense"— расходная категория;"income"— доходная категория;"transfer"— категории для переводов/движений между собственными счетами.
is_active BOOLEAN NOT NULL DEFAULT TRUE— используется ли категория.
Рекомендуемый DDL:
CREATE TABLE categories (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
is_active BOOLEAN NOT NULL DEFAULT TRUE
);
ALTER TABLE categories
ADD CONSTRAINT chk_categories_type
CHECK (type IN ('expense', 'income', 'transfer'));
Поля is_category_confirmed и comment относятся к таблице transactions (см. edit_and_rules.md).
Привязка к транзакциям:
- В таблице
transactionsполеcategory_idявляется внешним ключом наcategories(id). - При авто- или ручной категоризации транзакции записывается соответствующий
category_id.
Алиасы счетов
- При первом появлении нового счёта (новая комбинация
bank + account_number) после загрузки выписки SPA предлагает пользователю ввести человекочитаемый алиас: например,"Текущий","Накопительный","Брокерский". - Алиас хранится в таблице
accountsв отдельном поле, напримерalias TEXT. - В таблице истории операций на фронтенде вместо номера счёта показывается
alias(с возможностью при наведении/по клику увидеть полный номер).
Изменённая таблица accounts (добавлен алиас):
ALTER TABLE accounts
ADD COLUMN alias TEXT;
При создании нового счёта:
- Если алиас задан пользователем — сохраняем его в
accounts.alias. - Если пользователь пропустил ввод алиаса — можно задать временный (
"Счёт 1","Счёт 2") и предложить изменить его позже в настройках.