From 0f5d0dc80614e5e1c2e5a83b4a5f071a770a98b5 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Sep 2025 16:26:38 +0500 Subject: [PATCH] generation report --- REPORTS_README.md | 153 ++++++ src/config/api.js | 7 +- src/layout/AppMenu.vue | 22 +- src/layout/AppTopbar.vue | 4 +- src/router/index.js | 18 + src/service/ReportService.js | 185 +++++++ src/views/reports/ReportGenerator.vue | 322 +++++++++++ src/views/reports/ReportHistory.vue | 498 ++++++++++++++++++ src/views/reports/ReportManager.vue | 383 ++++++++++++++ ...е: Фронтенд-приложение для AI-платформы.md | 464 ++++++++++++++++ 10 files changed, 2046 insertions(+), 10 deletions(-) create mode 100644 REPORTS_README.md create mode 100644 src/service/ReportService.js create mode 100644 src/views/reports/ReportGenerator.vue create mode 100644 src/views/reports/ReportHistory.vue create mode 100644 src/views/reports/ReportManager.vue create mode 100644 Техническое задание: Фронтенд-приложение для AI-платформы.md diff --git a/REPORTS_README.md b/REPORTS_README.md new file mode 100644 index 0000000..9fbc6c8 --- /dev/null +++ b/REPORTS_README.md @@ -0,0 +1,153 @@ +# Функциональность отчётов + +## Обзор + +В приложение добавлена полная функциональность для работы с отчётами согласно техническому заданию. Система позволяет генерировать, просматривать и скачивать отчёты в форматах PDF и DOCX. + +## Структура файлов + +### Сервисы + +- `src/service/ReportService.js` - Основной сервис для работы с API отчётов + +### Компоненты + +- `src/views/reports/ReportManager.vue` - Главная страница управления отчётами +- `src/views/reports/ReportGenerator.vue` - Страница создания нового отчёта +- `src/views/reports/ReportHistory.vue` - Страница истории отчётов + +### Конфигурация + +- `src/config/api.js` - Обновлён с эндпоинтами для отчётов +- `src/router/index.js` - Добавлены маршруты для страниц отчётов +- `src/layout/AppMenu.vue` - Добавлен раздел "Отчёты" в меню + +## Функциональность + +### 1. Генерация отчётов + +- Создание отчётов с настраиваемыми параметрами +- Поддержка форматов PDF и DOCX +- Валидация формы с отображением ошибок +- Автоматическое скачивание сгенерированного файла + +### 2. История отчётов + +- Просмотр всех созданных отчётов +- Пагинация и сортировка +- Фильтрация по формату, дате и тексту +- Статистика по отчётам + +### 3. Скачивание отчётов + +- Скачивание отчётов из истории +- Автоматическое определение имени файла +- Обработка ошибок при скачивании + +## API Endpoints + +### Генерация отчёта + +``` +POST /api/parser/report/generate +``` + +**Параметры:** + +- `reportTitle` (string) - Заголовок отчёта +- `authorName` (string) - Имя автора +- `companyName` (string) - Название компании +- `startDate` (string) - Дата начала (ISO 8601) +- `endDate` (string) - Дата окончания (ISO 8601) +- `format` (string) - Формат файла (PDF/DOCX) + +### История отчётов + +``` +GET /api/parser/report/history?page=0&size=20&sort=createdAt,desc +``` + +**Параметры:** + +- `page` (int) - Номер страницы +- `size` (int) - Размер страницы +- `sort` (string) - Поле и направление сортировки + +### Скачивание отчёта + +``` +GET /api/parser/report/history/{id} +``` + +## Использование + +### 1. Создание отчёта + +1. Перейдите в раздел "Отчёты" → "Создать отчёт" +2. Заполните обязательные поля: + - Заголовок отчёта + - Автор + - Компания + - Период (дата начала и окончания) + - Формат файла +3. Нажмите "Сгенерировать отчёт" +4. Файл автоматически скачается + +### 2. Просмотр истории + +1. Перейдите в раздел "Отчёты" → "История отчётов" +2. Используйте фильтры для поиска нужных отчётов +3. Сортируйте по любому столбцу +4. Скачивайте отчёты кнопкой "Скачать" + +### 3. Управление отчётами + +1. Перейдите в раздел "Отчёты" → "Управление отчётами" +2. Здесь доступны все функции в одном интерфейсе + +## Технические детали + +### Валидация + +- Все обязательные поля проверяются перед отправкой +- Проверка корректности дат (дата окончания должна быть позже даты начала) +- Отображение ошибок валидации под соответствующими полями + +### Обработка ошибок + +- Обработка HTTP ошибок (400, 401, 403, 404, 500) +- Пользовательские сообщения об ошибках +- Логирование ошибок в консоль + +### UI/UX + +- Использование PrimeVue компонентов +- Адаптивный дизайн +- Индикаторы загрузки +- Toast уведомления +- Подтверждающие диалоги + +## Зависимости + +Функциональность использует существующие зависимости проекта: + +- Vue 3 +- PrimeVue 4 +- Vue Router 4 + +## Безопасность + +- Все запросы требуют авторизации (Bearer token) +- Токен извлекается из localStorage +- Обработка ошибок авторизации + +## Расширения + +Для будущих версий можно добавить: + +- Удаление отчётов +- Редактирование отчётов +- Предварительный просмотр отчётов +- Шаблоны отчётов +- Планировщик генерации отчётов +- Уведомления о готовности отчётов diff --git a/src/config/api.js b/src/config/api.js index 4ba7235..e88830f 100644 --- a/src/config/api.js +++ b/src/config/api.js @@ -21,7 +21,12 @@ export const API_CONFIG = { MONGO_HEALTH: '/api/parser/health/mongodb', SCHEDULER_HEALTH: '/api/parser/health/scheduler', SYSTEM_HEALTH: '/api/parser/health/system', - PARSERS_HEALTH: '/api/parser/health/parsers' + PARSERS_HEALTH: '/api/parser/health/parsers', + + // ReportController - Генерация и управление отчётами + REPORT_GENERATE: '/api/parser/report/generate', + REPORT_HISTORY: '/api/parser/report/history', + REPORT_DOWNLOAD: '/api/parser/report/history' } }; diff --git a/src/layout/AppMenu.vue b/src/layout/AppMenu.vue index 7e55bc3..05d11e4 100644 --- a/src/layout/AppMenu.vue +++ b/src/layout/AppMenu.vue @@ -4,13 +4,13 @@ import { ref } from 'vue'; import AppMenuItem from './AppMenuItem.vue'; const model = ref([ - { - label: 'Home', - items: [ - // { label: 'Dashboard', icon: 'pi pi-fw pi-home', to: '/' }, - { label: 'New Dashboard', icon: 'pi pi-fw pi-home', to: '/dashboard-new' } - ] - }, + // { + // label: 'Home', + // items: [ + // // { label: 'Dashboard', icon: 'pi pi-fw pi-home', to: '/' }, + // { label: 'New Dashboard', icon: 'pi pi-fw pi-home', to: '/dashboard-new' } + // ] + // }, { label: 'Новости', items: [ @@ -18,6 +18,14 @@ const model = ref([ { label: 'Статистика', icon: 'pi pi-fw pi-chart-bar', to: '/news/dashboard' } ] }, + { + label: 'Отчёты', + items: [ + { label: 'Управление отчётами', icon: 'pi pi-file-pdf', to: '/reports' }, + { label: 'Создать отчёт', icon: 'pi pi-plus-circle', to: '/reports/generator' }, + { label: 'История отчётов', icon: 'pi pi-history', to: '/reports/history' } + ] + }, { label: 'Admin', items: [ diff --git a/src/layout/AppTopbar.vue b/src/layout/AppTopbar.vue index 48f7ab8..f4eac9e 100644 --- a/src/layout/AppTopbar.vue +++ b/src/layout/AppTopbar.vue @@ -68,14 +68,14 @@ async function onLogout() {