docs: refactor project docs and agents tasks
This commit is contained in:
@@ -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`;
|
||||
|
||||
Reference in New Issue
Block a user