6.9 KiB
6.9 KiB
Техническое задание (Версия 4.0): Интеграция генерации отчётов в parser-service
Задача: Модифицировать существующий parser-service, добавив в него функционал для автоматической генерации маркетинговых отчётов.
Контекст: Мы отказываемся от создания отдельного сервиса для отчётов. Вся логика по их созданию должна быть реализована внутри parser-service, который уже имеет доступ к данным в MongoDB и к AI-аналитике.
1. Архитектура и воркфлоу
- Никаких новых сервисов. Вся логика реализуется в
parser-service. - Новый API эндпоинт: В
parser-serviceнеобходимо добавить новый REST API эндпоинт для запуска процесса генерации отчёта. - Внутренний воркфлоу:
- Новый эндпоинт (например, в
MarketItemControllerили новомReportController) получает запрос с параметрами отчёта. - Контроллер вызывает новый
ReportGenerationService(созданный внутриparser-service). ReportGenerationServiceиспользует уже существующийMarketItemRepositoryдля получения данных за указанный период.- Для генерации аннотации отчёта он обращается к существующему
OllamaAnalyticsService. - Сервис формирует документ в заданном формате (PDF или DOCX).
- Готовый файл возвращается пользователю в теле HTTP-ответа.
- Новый эндпоинт (например, в
2. API эндпоинт
POST /api/report/generate
Этот эндпоинт будет находиться в parser-service и инициировать создание отчёта.
Тело запроса (Request Body):
{
"reportTitle": "Еженедельный анализ новостного фона",
"authorName": "Имя Аналитика",
"companyName": "Название Компании Клиента",
"startDate": "2025-09-10T00:00:00",
"endDate": "2025-09-17T23:59:59",
"format": "PDF" // или "DOCX"
}
Успешный ответ:
- HTTP Статус:
200 OK - Headers:
Content-Disposition: attachment; filename="report_2025-09-17.pdf" - Body: Бинарные данные сгенерированного файла.
3. Структура и содержание отчёта
Сервис должен динамически генерировать документ, следуя этой структуре:
1. Титульный лист
- Заголовок: Из поля
reportTitleзапроса. - Автор: Из поля
authorNameзапроса. - Название компании: Из поля
companyNameзапроса. - Дата: Текущая дата генерации отчёта.
2. Содержание (Table of Contents)
- Автоматически генерируемое оглавление со ссылками на основные разделы.
3. Краткое содержание (Аннотация)
- Реализация:
- Получить все саммари (
analytics.summary) статей за выбранный период из MongoDB. - Объединить их в один большой текст.
- Отправить этот текст в Ollama с промптом:
"На основе этих кратких сводок новостей напиши общую аннотацию на 2-3 абзаца, выделяя ключевые тренды и события."
- Получить все саммари (
4. Введение
- Использовать шаблонный текст с динамическими датами.
- Пример:
"Целью данного отчёта является анализ новостного фона в сфере маркетинга и бизнеса за период с [startDate] по [endDate]. Были проанализированы публикации из ключевых источников для выявления основных трендов."
5. Основная часть
- Подраздел: Ключевые публикации
- Вывести 5-10 самых важных новостей, для каждой указав: Заголовок, Источник, Дата публикации, Сгенерированное саммари (
analytics.summary).
- Вывести 5-10 самых важных новостей, для каждой указав: Заголовок, Источник, Дата публикации, Сгенерированное саммари (
- Подраздел: Облако тегов
- Собрать все теги (
analytics.tags) и сформировать изображение "облака тегов".
- Собрать все теги (
- Подраздел: Анализ тональности
- Подсчитать количество статей с тональностью
positive,negative,neutralи представить в виде круговой диаграммы.
- Подсчитать количество статей с тональностью
- Подраздел: Упоминаемые компании и персоны
- Собрать и вывести списки наиболее часто упоминаемых компаний и персон из
analytics.entities.
- Собрать и вывести списки наиболее часто упоминаемых компаний и персон из
6. Рекомендации
- Использовать статический текст-заполнитель.
7. Список литературы
- Автоматически сгенерированный список всех проанализированных статей.
- Формат:
[Заголовок статьи]. Источник: [Название источника]. URL: [Ссылка на статью]
8. Приложения
- Добавить полную таблицу со всеми статьями за период.
4. Технологический стек
- DOCX: Apache POI
- PDF: OpenPDF или iText
- Графики и диаграммы: JFreeChart
5. Критерии выполнения
parser-serviceрасширен новым функционалом без создания отдельного сервиса.- Реализован эндпоинт
POST /api/report/generate, который принимает параметры отчёта. - Сервис успешно генерирует и возвращает файлы в форматах PDF и DOCX.
- Структура и содержание сгенерированных документов полностью соответствуют описанию в ТЗ.