4.6 KiB
4.6 KiB
Категории расходов и доходов (MVP)
Базовый список категорий
Используются следующие категории для классификации транзакций:
- Продукты
- Авто
- Здоровье
- Арчи
- ЖКХ
- Дом
- Проезд
- Одежда
- Химия
- Косметика
- Инвестиции
- Развлечения
- Общепит
- Штрафы
- Налоги
- Подписки
- Перевод
- Наличные
- Подарки
- Спорт
- Отпуск
- Техника
- Поступления
Особенности:
- Категории на данном этапе одноуровневые (без подкатегорий).
- Категории используются как для фильтрации и аналитики, так и для правил авто-категоризации.
- Категория
Переводиспользуется для переводов (в т.ч. между своими счетами и на другие счета). - Категория
Инвестициипредназначена для операций, связанных с брокерским счётом/ценными бумагами. - Категория
Поступленияиспользуется для всех видов доходов (зарплата, кешбэк и др.), пока без детализации.
Таблица 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— используется ли категория.is_category_confirmed BOOLEAN NOT NULL DEFAULT FALSE— подтверждена ли категория пользователем.comment TEXT— пользовательский комментарий (например, по маркетплейсам).
Рекомендуемый 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'));
ALTER TABLE transactions
ADD COLUMN is_category_confirmed BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE transactions
ADD COLUMN comment TEXT;
Привязка к транзакциям:
- В таблице
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") и предложить изменить его позже в настройках.