5.4 KiB
Техническое Задание на доработку AI-агента для генерации отчётов в формате Markdown (.md)
Проект: Модификация существующего бэкенда для генерации отчётов.
1. Общее описание
Целью данной доработки является замена модуля генерации PDF-файлов на более простой и быстрый модуль, который будет формировать и отдавать пользователю итоговый отчёт в текстовом формате Markdown (.md).
Бэкенд по-прежнему будет выполнять многоступенчатый процесс исследования (вызов deep-research API, затем синтез отчёта через Ollama), но финальным результатом будет текстовый .md файл, а не PDF.
2. Требования к реализации
2.1. Модификация эндпоинта /api/parser/report
-
Метод:
POST -
Тело запроса (
Request Body): Остаётся без изменений (принимаетquery,lang,depthи т.д.). -
Успешный ответ (
Success Response): (Ключевое изменение)- Код:
200 OK - Заголовки:
Content-Type: text/markdown; charset=UTF-8(Важно для корректного отображения кириллицы).Content-Disposition: attachment; filename="research_report.md"(Этот заголовок заставит браузер скачать файл, а не просто показать его).
- Тело ответа: Готовый текст отчёта в формате Markdown.
- Код:
-
Ответы с ошибками (
Error Responses): Остаются без изменений (400,500и т.д.).
2.2. Изменение логики работы агента
Процесс будет выглядеть так:
- Приём и валидация запроса: Логика остаётся без изменений.
- Вызов
deep-researchAPI: Логика остаётся без изменений. Бэкенд получает "сырые"learningsиvisitedUrls. - Вызов Ollama для синтеза: Логика остаётся без изменений. Бэкенд получает от Ollama финальный, красиво структурированный отчёт в виде строки Markdown.
- ОТМЕНА: Шаг генерации PDF полностью удаляется. Сервис
ResearchPdfServiceи зависимость от библиотеки iText больше не нужны. - НОВЫЙ ШАГ: Формирование итогового
.mdфайла:- Бэкенд берёт строку Markdown, полученную от Ollama.
- К этой строке в конец добавляется раздел "Источники". Бэкенд должен программно сгенерировать этот раздел, добавив заголовок
## Источникии пронумерованный список URL-адресов изvisitedUrls.
- Отправка
.mdфайла клиенту: Бэкенд отправляет итоговую строку (отчёт + источники) как тело HTTP-ответа с заголовками, указанными в п. 2.1.
2.3. Формат итогового Markdown-файла
Итоговая строка, которая будет отправлена клиенту, должна иметь следующую структуру:
# {Заголовок, сгенерированный Ollama, или просто ваш query}
## Введение
... текст от Ollama ...
## Основная часть
... текст от Ollama ...
### Подраздел
... текст от Ollama ...
## Заключение
... текст от Ollama ...
---
## Источники
1. https://...
2. https://...
3. ...
3. Технологический стек
- Бэкенд: Java/Spring Boot (без изменений).
- HTTP-клиент:
WebClient(без изменений)
4. Нефункциональные требования
- Асинхронность: Рекомендация по асинхронной обработке запроса (через
jobIdи отдельный эндпоинт для статуса) остаётся актуальной, так как сам процесс исследования по-прежнему занимает много времени.
5. Ожидаемый результат
При отправке POST запроса на эндпоинт /api/parser/report браузер пользователя должен инициировать скачивание файла research_report.md. Этот файл должен корректно открываться в любом текстовом редакторе, поддерживающем Markdown, и содержать полный, структурированный отчёт на русском языке вместе со списком источников.