# Документация для фронтенда: Генерация изображений для постов ## Обзор изменений В систему добавлена автоматическая генерация изображений для постов в социальных сетях. Теперь при создании маркетинговой стратегии для каждого поста автоматически генерируется уникальное изображение с помощью OpenAI DALL-E API. Изображения сохраняются в MinIO и прикрепляются к постам при публикации в Facebook. --- ## Новые поля в API ### 1. PostCalendarItem (Календарь постов) В объекте `PostCalendarItem` добавлены два новых поля для работы с изображениями: | Поле | Тип | Описание | Обязательное | | --------------- | ------ | ------------------------------------------------------------------- | ------------ | | `imageUrl` | string | Путь к изображению в MinIO (используется для получения изображения) | Нет | | `imageFilename` | string | Имя файла изображения в MinIO | Нет | **Важно:** - Поля могут быть `null`, если генерация изображения не удалась - В этом случае пост публикуется без изображения - Оба поля содержат одинаковое значение (имя файла в MinIO) ### 2. PostingTask (Задачи публикации) В объекте `PostingTask` также добавлены поля для изображений: | Поле | Тип | Описание | Обязательное | | --------------- | ------ | ----------------------------- | ------------ | | `imageUrl` | string | Путь к изображению в MinIO | Нет | | `imageFilename` | string | Имя файла изображения в MinIO | Нет | --- ## Изменения в API эндпоинтах ### GET `/api/marketing/strategy/{strategyId}` Ответ теперь включает поля изображений в каждом элементе календаря постов. #### Пример ответа ```json { "success": true, "data": { "strategyId": "507f1f77bcf86cd799439011", "analysisId": "507f1f77bcf86cd799439012", "status": "completed", "strategy": { "postCalendar": [ { "publishDate": "2024-01-15T10:00:00", "platform": "Facebook", "contentType": "пост", "theme": "Презентация нового продукта", "postText": "Мы рады представить наш новый продукт...", "hashtags": ["#новинка", "#продукт", "#маркетинг"], "publishTime": "10:00", "imageUrl": "post_image_1705312800000_1234567890.png", "imageFilename": "post_image_1705312800000_1234567890.png" } ] } } } ``` ### GET `/api/marketing/analysis/{analysisId}/strategy` Аналогично, ответ включает поля изображений в календаре постов. --- ## Получение изображений ### Способ 1: Через MinIO API (рекомендуется) Если у вас есть доступ к MinIO API, используйте `imageUrl` или `imageFilename` для получения изображения: ``` GET {minio-endpoint}/{bucket-name}/{imageFilename} ``` Где: - `minio-endpoint` - адрес вашего MinIO сервера (например, `http://92.38.48.166:9000`) - `bucket-name` - имя bucket (обычно `konturai`) - `imageFilename` - значение из поля `imageFilename` или `imageUrl` ### Способ 2: Через бэкенд API (если реализован) Если бэкенд предоставляет эндпоинт для получения изображений, используйте его: ``` GET /api/marketing/images/{imageFilename} ``` **Примечание:** На данный момент такой эндпоинт не реализован. При необходимости его можно добавить. --- ## Рекомендации по отображению ### 1. Проверка наличия изображения Всегда проверяйте наличие изображения перед отображением: ```javascript // Пример на JavaScript/TypeScript const PostCard = ({ post }) => { const hasImage = post.imageUrl && post.imageFilename; return (
{post.postText}
{hasImage ? (Изображение не сгенерировано
{post.postText}
Изображение не сгенерировано
{{ post.postText }}