fix
This commit is contained in:
@@ -0,0 +1,279 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user