| Current Path : /home/seto/888mirror.pm/ |
| Current File : /home/seto/888mirror.pm/prd.md |
Вот структурированный PRD (Product Requirements Document) для твоего проекта — с учетом всех деталей, но приведённый в понятный, реализуемый вид.
---
# 📄 PRD: Админка управления брендами + витрина (888mirror.pm)
## 1. 🎯 Общее описание
Система состоит из:
1. **Админ-панели (PHP + SQLite)**
2. **Публичной страницы (landing page)**
Цель:
* Управлять списком брендов (казино/офферы)
* Автоматически генерировать контент через OpenAI
* Показывать пользователю релевантные бренды по **стране + языку**
* Отслеживать статистику показов и кликов
---
## 2. 🧩 Архитектура
### Backend
* Язык: **чистый PHP (без фреймворков)**
* БД: **SQLite**
* API: **OpenAI API**
### Frontend
* Простой HTML (на первом этапе)
* Без JS-фреймворков (можно добавить позже)
---
## 3. 🔐 Авторизация
### Требования:
* Логин / пароль
* Сессии PHP
* Один админ (MVP)
### Таблица:
`users`
* id
* login
* password_hash
---
## 4. 🏷️ Сущность "Бренд"
### Основные поля (ручной ввод):
* id
* name
* logo (upload)
* tracking_url
* weight (int)
* is_featured (boolean)
* badge (string: "best", "new", "free"...)
* year_founded
---
### Автогенерируемые поля (OpenAI):
(мультиязычные)
* bonus
* free_spins
* games_count
* advantages
* license
* payment_methods
* payment_methods_count
* min_withdraw
* max_withdraw
* currencies
---
## 5. 🌍 Гео и языки
### Страны:
Каждый бренд имеет список стран:
`brand_countries`
* brand_id
* country_code (ru, fr, uk...)
---
### Языки:
Система поддерживает список языков:
`languages`
* id
* code (en, ru, fr...)
* name
* is_active
👉 По умолчанию: **15 языков**
* en, ru, fr, de, es, it, pt, pl, tr, uk, kk, ro, hu, nl, cs
---
### Переводы бренда:
`brand_translations`
* id
* brand_id
* language_code
* bonus
* free_spins
* games_count
* advantages
* license
* payment_methods
* payment_methods_count
* min_withdraw
* max_withdraw
* currencies
👉 Можно:
* редактировать вручную
* перегенерировать
---
## 6. 🤖 Генерация через OpenAI
### Функционал:
Кнопка: **"Сгенерировать данные"**
### Логика:
1. Вводим `brand name`
2. Отправляем prompt в OpenAI
3. Получаем:
* структурированные данные
* сразу на всех языках
4. Парсим JSON
5. Заполняем `brand_translations`
---
### Пример prompt:
```text
Generate structured data about a gambling brand.
Brand: {{NAME}}
Return JSON with fields:
- bonus
- free_spins
- games_count
- advantages
- license
- payment_methods
- payment_methods_count
- min_withdraw
- max_withdraw
- currencies
Translate into languages: en, ru, fr, de, es...
Return structured JSON.
```
---
## 7. ⭐ Ранжирование брендов
### Логика сортировки:
1. `is_featured = true` → сверху
2. Затем сортировка по:
* weight (DESC)
---
## 8. 📊 Статистика
### Таблица:
`stats`
* id
* brand_id
* country
* event_type (impression / click)
* created_at
---
### Метрики:
#### По бренду:
* Показов:
* сегодня
* 30 дней
* всего
* Кликов:
* сегодня
* 30 дней
* всего
* CTR = clicks / impressions
---
#### По странам:
* Количество показов по каждой стране
---
## 9. 🌐 Публичная страница (Landing)
### URL:
`888mirror.pm`
---
### Логика:
1. Получаем от TDS:
* country
* language
2. Фильтрация:
* если есть country → показываем бренды с этим GEO
* если нет → показываем все
3. Язык:
* если есть перевод → используем его
* если нет → fallback на **EN**
---
### Отображение (MVP):
Простой HTML список:
```
[LOGO]
NAME
Bonus: ...
Free spins: ...
Games: ...
Advantages: ...
License: ...
Payments: ...
Min/Max withdraw: ...
Currencies: ...
[CTA BUTTON → tracking_url]
```
---
### Важно:
* При показе → пишем `impression`
* При клике → редирект + `click`
---
## 10. 🧱 CRUD в админке
### Разделы:
#### 1. Бренды
* список
* создать
* редактировать
* удалить
#### 2. Генерация
* кнопка "Generate via OpenAI"
#### 3. Переводы
* редактирование по языкам
#### 4. Статистика
* таблицы + фильтры
---
## 11. 📂 Структура проекта
```
/admin
login.php
dashboard.php
brands.php
brand_edit.php
stats.php
/public
index.php
/includes
db.php
auth.php
openai.php
stats.php
/uploads
logos/
database.sqlite
```
---
## 12. ⚙️ Основные сценарии
### ➤ Добавление бренда
1. Ввод имени
2. Загрузка лого
3. Указание стран
4. Вставка tracking URL
5. Сохранение
---
### ➤ Генерация данных
1. Нажать "Generate"
2. OpenAI → JSON
3. Запись в translations
---
### ➤ Отображение пользователю
1. Определение GEO + LANG
2. Выбор брендов
3. Сортировка
4. Вывод
---
### ➤ Клик
1. Запись в stats
2. Redirect на tracking URL
---
## 13. 🚀 MVP vs Future
### MVP:
* CRUD брендов
* генерация через OpenAI
* фильтр GEO
* мультиязычность
* базовая статистика
* простой HTML
---
### Позже:
* кеширование
* A/B тесты
* антифрод кликов
* API для TDS
* UI улучшения
* автообновление данных брендов
---
## 14. ❗ Важные нюансы
* SQLite → блокировки (учесть при росте)
* OpenAI → лимиты + стоимость
* Логи → желательно добавить
* Валидация данных обязательна
---
## 15. 💡 Дополнения (рекомендую)
* Добавить `slug` для бренда
* Добавить `status` (active/inactive)
* Кэш HTML (очень важно для SEO и скорости)
* Возможность вручную менять порядок (drag/drop позже)
---
## Итог
Ты делаешь по сути:
👉 **мини-CMS для affiliate лендингов с AI-генерацией контента**
---
Если хочешь, дальше могу:
* сделать **структуру БД (SQL)**
* написать **MVP код на PHP**
* или собрать **архитектуру OpenAI промтов (очень важно тут)**