docs: refactor project docs and agents tasks

This commit is contained in:
vakabunga
2026-03-02 00:30:56 +03:00
parent 9551b93a09
commit 9d12702688
14 changed files with 1146 additions and 87 deletions

View File

@@ -77,6 +77,9 @@ ALTER TABLE transactions
- `match_type` — тип (на старте `"contains"`);
- `category_id` — выбранная категория;
- `priority` — например, по умолчанию 100 для правил, созданных пользователем;
- `requires_confirmation` — если `TRUE`, транзакции, категоризированные этим правилом,
получают `is_category_confirmed = FALSE` и требуют ручного подтверждения.
По умолчанию `FALSE`. Используется для правил с неоднозначным соответствием (маркетплейсы и т.п.);
- `is_active = TRUE`.
Логика приоритета:
@@ -84,30 +87,32 @@ ALTER TABLE transactions
- Если для одной транзакции подходит несколько правил, выбирается правило
с максимальным значением `priority`.
## Особый случай: маркетплейсы
## Правила с обязательным подтверждением (`requires_confirmation`)
Проблема: по описанию вида "OZON", "WILDBERRIES" и т.п. невозможно
однозначно определить категорию (там могут быть любые товары).
Проблема: некоторые правила не могут однозначно определить категорию транзакции.
Например, по описанию "OZON", "WILDBERRIES" невозможно понять, что именно было куплено
(продукты, одежда, техника и т.п.).
Стратегия (MVP):
Механизм:
- Для маркетплейсов создаются специальные правила, которые:
- могут присваивать "предполагаемую" категорию (например, "Дом" или
любую другую, выбранную пользователем);
- при этом все транзакции, закатегоризированные таким правилом,
помечаются как `is_category_confirmed = FALSE`.
- В таблице `category_rules` используется флаг `requires_confirmation BOOLEAN NOT NULL DEFAULT FALSE`.
- Если `requires_confirmation = TRUE`:
- правило присваивает категорию (например, "Дом" или любую другую, выбранную пользователем);
- но `is_category_confirmed` у транзакции устанавливается в `FALSE`.
- Если `requires_confirmation = FALSE` (по умолчанию):
- правило присваивает категорию и `is_category_confirmed = TRUE`.
Результат:
- В истории операций такие транзакции визуально подсвечиваются
как требующие внимания пользователя.
- Транзакции, категоризированные правилами с `requires_confirmation = TRUE`,
визуально подсвечиваются в истории как требующие внимания.
- Пользователь может:
- подтвердить категорию (в этом случае `is_category_confirmed` становится `TRUE`);
- подтвердить категорию (`is_category_confirmed` становится `TRUE`);
- изменить категорию и при желании создать новое правило.
Дополнительно:
- Для маркетплейсов особенно полезно поле `comment`, куда пользователь может
- Для таких транзакций (например, маркетплейсы) полезно поле `comment`, куда пользователь может
записать, что конкретно было куплено (например, "корм для Арчи", "мебель", "одежда").
## Применение правил к прошлым транзакциям
@@ -119,10 +124,13 @@ ALTER TABLE transactions
При активации этой опции backend:
- находит все транзакции, подходящие под данное правило;
- находит все транзакции, подходящие под данное правило,
у которых `category_id IS NULL` или `is_category_confirmed = FALSE`;
- проставляет им `category_id`;
- устанавливает `is_category_confirmed = FALSE` (категория считается предварительной).
Транзакции с `is_category_confirmed = TRUE` не затрагиваются — пользовательские подтверждения неприкосновенны.
Пользователь может затем:
- отфильтровать операции по `onlyUnconfirmed = true` через `/api/transactions`;