# AI-генерация маркетинговых стратегий — Документация ## Обзор Система AI-генерации создаёт профессиональные маркетинговые стратегии на 4 недели с 16 постами, используя строгую валидацию и профессиональные промпты. ## Архитектура ``` ┌─────────────────────────────────────────────────────────────┐ │ ФРОНТЕНД (Vue 3) │ ├─────────────────────────────────────────────────────────────┤ │ AIStrategyGenerator.vue (UI компонент) │ │ ↓ │ │ strategyPromptGenerator.ts (генерация промпта) │ │ ↓ │ │ AIStrategyService.ts (сервис API + валидация) │ │ ↓ │ │ validateAIStrategy.ts (полная валидация) │ │ ↓ │ │ ai-strategy.types.ts (TypeScript интерфейсы) │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ BACKEND API │ │ POST /api/ai/strategy/generate │ │ Тело: { prompt, model, temperature, maxTokens } │ └─────────────────────────────────────────────────────────────┘ ``` ## Файлы | Файл | Назначение | |------|-----------| | `src/types/ai-strategy.types.ts` | TypeScript интерфейсы и константы | | `src/utils/validateAIStrategy.ts` | Утилита полной валидации AI-ответа | | `src/utils/strategyPromptGenerator.ts` | Генератор промпта и парсер JSON | | `src/service/AIStrategyService.ts` | Сервис работы с AI-стратегиями | | `src/components/marketing/AIStrategyGenerator.vue` | UI компонент генератора | | `src/views/pages/marketing/AIStrategyGeneratorPage.vue` | Страница генератора | ## TypeScript интерфейсы ### PostCalendarItem ```typescript interface PostCalendarItem { postIndex: number; // 0-15 publishDate: string; // "2026-04-13T09:00:00" weekNumber: 1 | 2 | 3 | 4; platform: 'Instagram' | 'TikTok'; contentType: 'фото' | 'видео'; theme: string; // Конкретная тема postText: string; // 150+ слов hashtags: string[]; // 5-8 хэштегов publishTime: '09:00' | '12:00' | '18:00' | '20:00'; imageUrl?: string; videoUrl?: string; taskStatus?: string; } ``` ### WeeklyPlan ```typescript interface WeeklyPlan { weekNumber: 1 | 2 | 3 | 4; mainThemes: string[]; // Ровно 4 темы contentRecommendations: string; // 50+ слов priorityPlatforms: string[]; } ``` ### AIStrategyResponse ```typescript interface AIStrategyResponse { selectedModel: string; scoringRationale: string; recommendedDurationWeeks: 4; recommendedPlatforms: string[]; rationale: string; // 60+ слов weeklyPlans: WeeklyPlan[]; // 4 недели postCalendar: PostCalendarItem[]; // 16 постов } ``` ## Правила валидации ### Критические ошибки (ERROR) | Правило | Проверка | |---------|---------| | **Количество постов** | Ровно 16 (4 × 4 недели) | | **Недели** | Каждая из 4 недель представлена | | **Даты** | ISO формат, правильные дни (Пн, Ср, Пт, Сб) | | **Время** | Только 09:00, 12:00, 18:00, 20:00 | | **Видео** | Ровно 4 (первый пост каждой недели) | | **Фото** | Ровно 12 (остальные посты) | | **Хэштеги** | 5-8 на пост, каждый начинается с # | | **Текст** | 150+ слов на пост | | **Темы** | Конкретные, не абстрактные | ### Предупреждения (WARNING) | Правило | Проверка | |---------|---------| | **Абстрактные темы** | Темы без конкретики | | **Стиль** | Рекомендации по улучшению | ## Использование ### 1. Через UI Перейдите на `/marketing-analysis/ai-strategy` Заполните: - Ниша бизнеса - Название бренда - Город продвижения - Модель стратегии (ENTRY/AUTHORITY/TRUST/CONVERSION) - Дата начала (опционально) ### 2. Программно ```typescript import AIStrategyService from '@/service/AIStrategyService'; const result = await AIStrategyService.generateAIStrategy({ niche: 'Кондитерская', brand: 'Sweet Dreams', city: 'Алматы', model: 'CONVERSION' }); console.log(result.strategy); // AIStrategyResponse console.log(result.validation); // ValidationResult ``` ### 3. Валидация готовй стратегии ```typescript import { validateAIStrategy } from '@/utils/validateAIStrategy'; const validation = validateAIStrategy(myStrategy); if (!validation.isValid) { console.error(validation.errors); } ``` ### 4. Экспорт ```typescript // JSON AIStrategyService.exportStrategyAsJSON(strategy, 'my-strategy'); // CSV AIStrategyService.exportCalendarAsCSV(strategy, 'my-calendar'); ``` ## Константы ```typescript STRATEGY_CONSTANTS = { TOTAL_POSTS: 16, POSTS_PER_WEEK: 4, TOTAL_WEEKS: 4, TOTAL_VIDEOS: 4, TOTAL_PHOTOS: 12, MIN_POST_WORDS: 150, MIN_HASHTAGS: 5, MAX_HASHTAGS: 8, MIN_WEEKLY_RECOMMENDATION_WORDS: 50, MIN_RATIONALE_WORDS: 60, VALID_PUBLISH_TIMES: ['09:00', '12:00', '18:00', '20:00'] } ``` ## Модели стратегий | Модель | Описание | Когда использовать | |--------|---------|-------------------| | **ENTRY** | Вход / Формирование присутствия | Новые бизнес, узнаваемость | | **AUTHORITY** | Экспертность / Компетентность | B2B, длинный цикл сделки | | **TRUST** | Усиление доверия | Высокая конкуренция | | **CONVERSION** | Прямая конверсия | Быстрые покупки, B2C | ## API Endpoints ### Генерация стратегии ``` POST /api/ai/strategy/generate Content-Type: application/json { "prompt": "...", "model": "gpt-4", "temperature": 0.7, "maxTokens": 8000 } Response: { "data": { "content": "{...JSON стратегии...}" } } ``` ## Распределение постов ### Неделя 1-4 (одинаковая структура) | Пост | День | Время | Тип | |------|------|-------|-----| | 1 | Понедельник | 09:00 | 🎥 Видео | | 2 | Среда | 12:00 | 📸 Фото | | 3 | Пятница | 18:00 | 📸 Фото | | 4 | Суббота | 20:00 | 📸 Фото | ## Пример правильного ответа AI ```json { "selectedModel": "CONVERSION", "scoringRationale": "Модель Conversion оптимальна...", "recommendedDurationWeeks": 4, "recommendedPlatforms": ["Instagram", "TikTok"], "rationale": "Instagram и TikTok являются...", "weeklyPlans": [ { "weekNumber": 1, "mainThemes": ["Кейс клиента", "Процесс работы", "Отзыв", "Экспертный"], "contentRecommendations": "На этой неделе фокусируемся...", "priorityPlatforms": ["Instagram"] } ], "postCalendar": [ { "postIndex": 0, "publishDate": "2026-04-13T09:00:00", "weekNumber": 1, "platform": "Instagram", "contentType": "видео", "theme": "Кейс: Как клиент увеличил продажи на 40%", "postText": "Хотите узнать, как наш клиент из Алматы...", "hashtags": ["#кейс", "#алматы", "#бизнес"], "publishTime": "09:00" } ] } ``` ## Troubleshooting ### Ошибка: "Невалидный JSON" AI вернул текст с markdown блоками. Функция `extractJSONFromResponse` автоматически очищает ответ. ### Ошибка валидации: "postCalendar должен содержать ровно 16 постов" AI вернул меньше или больше постов. Проверьте промпт и температуру (рекомендуется 0.7). ### Предупреждение: "Тема выглядит абстрактной" AI создал тему без конкретики. Стратегия валидна, но темы можно улучшить. ## Roadmap - [ ] Сохранение стратегии на бэкенде - [ ] Интеграция с автопостингом - [ ] Редактор постов в UI - [ ] A/B тестирование тем - [ ] Мульти-язычность ## Лицензия Внутренний проект Konturai.