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