docs: adds rules and agents specs

This commit is contained in:
Anton
2026-02-27 19:08:55 +03:00
commit 9551b93a09
12 changed files with 1151 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
# Агент: Frontend (React + TypeScript)
## Стек
- React + TypeScript.
- Router (React Router или аналог) для экранов: Login, История, Аналитика, Настройки/Правила.
- Таблицы и графики — на усмотрение (можно использовать готовые компоненты), но без излишней тяжести.
## Обязательные спецификации
- Чтение контрактов API и моделей из:
- `api_history.md`
- `edit_and_rules.md`
- `analytics.md`
- `auth.md`
- а также модели данных и категорий из `db.md`, `category.md`.
## Основные экраны
1. Логин
- Форма `login/password`, запрос `POST /api/auth/login`.
- При успехе — переход на Историю.
- При `401` на любых защищённых запросах — редирект на Login.
1. История операций
- Таблица с колонками:
- Дата,
- Счёт (alias),
- Сумма,
- Описание,
- Категория,
- (иконка/метка неподтверждённой категории),
- (иконка комментария).
- Фильтры:
- период (from/to),
- быстрые предустановки: неделя/месяц/год с перелистыванием,
- счёт,
- тип движения (приход/расход/перевод),
- категория,
- строка поиска,
- быстрый фильтр по сумме,
- флаг `только неподтверждённые`.
- Пагинация страницами: 10/50/100.
- Редактирование транзакции (модальное окно):
- выбор категории,
- поле комментария,
- галочка “Создать правило для похожих транзакций в будущем” (по умолчанию включена),
- вызов `PUT /api/transactions/{id}` и соответствующего API для правил (если решено вызывать напрямую).
1. Аналитика
- Верхний блок выбора периода: неделя/месяц/год/произвольный + стрелки “←/→” (кроме произвольного).
- Фильтры:
- счёт,
- флаг “только подтверждённые”.
- Блок 1: сводка (`/api/analytics/summary`).
- Блок 2: график времени (`/api/analytics/timeseries`).
- Блок 3: диаграмма/таблица по категориям (`/api/analytics/by-category`).
1. Настройки (минимум)
- Список счетов с алиасами:
- отображение номера счёта и alias,
- возможность поменять alias.
- Список категорий (только просмотр).
- Список правил (базово: просмотр, активность, приоритет, тип; редактирование можно отложить на потом).
## Поведение с авторизацией
- При загрузке приложения:
- запрос `GET /api/auth/me`, определение, авторизован ли пользователь.
- Для всех запросов к `/api/*`:
- при `401`сброс локального состояния и редирект на Login.
## Ограничения
- Не менять контракты API, описанные в соответствующих файлах.
- Настройка видимых колонок в истории должна быть предусмотрена (хотя бы на уровне структуры состояния).