7.0 KiB
Рефакторинг Маркетинговой Стратегии - Changelog
Дата: 11 апреля 2026
📋 Описание изменений
Полностью переработана логика генерации маркетинговой стратегии для решения проблем:
- Недостаточное количество постов (было 8, стало 16)
- Неравномерное распределение постов (пропуски 2-3 дня)
- Отсутствие связи между постами и неделями
- Непрофессиональное отображение на фронте
✅ Что изменено
1. Увеличено количество постов: 8 → 16
- Было: 8 постов за 4 недели (2 поста/неделю)
- Стало: 16 постов за 4 недели (4 поста/неделю)
- Распределение: Пн 09:00, Ср 12:00, Пт 18:00, Сб 20:00
2. Добавлено поле weekNumber
- Model:
MarketingStrategy.PostCalendarItem.weekNumber - DTO:
MarketingStrategyResponse.PostCalendarItem.weekNumber - Цель: Чёткая связь каждого поста с конкретной неделей стратегии
3. Нормализация расписания
- Новый метод:
normalizePostSchedule() - Автоматически выравнивает посты по дням недели
- Гарантирует равномерный ритм публикаций
- Сохраняет валидные даты от AI (если в пределах ±2 дней)
4. Усиленный промпт для AI
- Чёткие инструкции по распределению 16 постов
- Примеры правильного JSON с
weekNumber - Явные требования: 4 поста/неделю, Пн-Ср-Пт-Сб
- Увеличено количество видео: 2 → 4 (по 1 в неделю)
5. Улучшенная валидация
- Логирование при < 12 постах от AI
- Авто-расчёт дат если AI вернул некорректные
- Нормализация
weekNumberдля всех постов
📁 Изменённые файлы
-
MarketingStrategy.java(Model)- Добавлено поле
weekNumberвPostCalendarItem
- Добавлено поле
-
MarketingStrategyResponse.java(DTO)- Добавлено поле
weekNumberвPostCalendarItem - Добавлены геттеры/сеттеры + поля
videoUrl,videoFilename
- Добавлено поле
-
MarketingStrategyV3Service.java(Service)- Усилен
buildUserPrompt()— детальные инструкции по распределению - Переписан
populateStrategyEntity()— обработкаweekNumber - Новый метод
normalizePostSchedule()— выравнивание расписания - Новый метод
getDayOffset()— расчёт дней недели - Обновлён
buildPostCountPlan()— 16 постов вместо 12 - Увеличен лимит видео: 2 → 4
- Усилен
-
getStrategyResult()- Добавлено поле
weekNumberв ответ API
- Добавлено поле
🎯 Результат
До рефакторинга:
{
"postCalendar": [
{ "publishDate": "2026-04-10T09:00:00", "theme": "Кейс: ..." },
{ "publishDate": "2026-04-12T18:00:00", "theme": "Процесс: ..." },
{ "publishDate": "2026-04-15T12:00:00", "theme": "Отзыв: ..." }
// ... всего 8 постов, пропуски 2-3 дня
]
}
После рефакторинга:
{
"postCalendar": [
{
"postIndex": 0,
"publishDate": "2026-04-13T09:00:00",
"weekNumber": 1,
"platform": "Instagram",
"contentType": "видео",
"theme": "Кейс: Как мы увеличили продажи на 40%",
"publishTime": "09:00"
},
{
"postIndex": 1,
"publishDate": "2026-04-15T12:00:00",
"weekNumber": 1,
"platform": "Instagram",
"contentType": "фото",
"theme": "Процесс: За кадром нашей работы",
"publishTime": "12:00"
},
// ... ещё 14 постов, ровно 4 в неделю
]
}
📊 Расписание постов (пример)
| Неделя | День | Время | Тип контента |
|---|---|---|---|
| 1 | Понедельник (день 1) | 09:00 | 🎥 Видео (Кейс) |
| 1 | Среда (день 3) | 12:00 | 📸 Фото (Процесс) |
| 1 | Пятница (день 5) | 18:00 | 📸 Фото (Отзыв) |
| 1 | Суббота (день 6) | 20:00 | 📸 Фото (Экспертный) |
| 2 | Понедельник (день 8) | 09:00 | 🎥 Видео (Кейс) |
| 2 | Среда (день 10) | 12:00 | 📸 Фото (Процесс) |
| ... | ... | ... | ... |
🚀 Преимущества
✅ Профессиональный вид — равномерное расписание, как у SMM-агентств
✅ Предсказуемость — клиент знает когда будет каждый пост
✅ Связность — каждый пост привязан к неделе и теме
✅ Гибкость — AI может предлагать даты, но система нормализует
✅ Масштабируемость — легко изменить на 3 или 5 постов/неделю
⚠️ Важно для фронтенда
Теперь в ответе API появляется новое поле weekNumber у каждого поста:
interface PostCalendarItem {
postIndex: number;
publishDate: string;
weekNumber: number; // ← НОВОЕ ПОЛЕ
platform: string;
contentType: string;
theme: string;
postText: string;
hashtags: string[];
publishTime: string;
imageUrl?: string;
videoUrl?: string;
// ...
}
Рекомендуется использовать weekNumber для группировки постов на фронте!
🧪 Тестирование
После деплоя проверьте:
- Генерацию новой стратегии — должно быть 16 постов
- Распределение по неделям — по 4 поста в каждой
- Даты публикаций — Пн-Ср-Пт-Сб
- Поле
weekNumber— должно присутствовать у всех постов - Видео-посты — ровно 4 (по 1 в неделю)
📝 Компиляция
cd c:\Users\777\IdeaProjects\telecomBackend
mvnw.cmd compile -DskipTests
✅ BUILD SUCCESS — все изменения компилируются без ошибок!
Автор: AI Assistant
Дата: 11.04.2026
Версия: 2.0