139 lines
4.7 KiB
Markdown
139 lines
4.7 KiB
Markdown
# AdsAssistant — генерация и автотестирование рекламных текстов
|
||
|
||
Монорепозиторий из 3 сервисов:
|
||
|
||
1) **agents_service** (FastAPI) — агент №1 (генерация текстов) и агент №2 (анализ/ранжирование по метрикам)
|
||
2) **backend_django** (Django + DRF + JWT, SQLite) — хранение брифов/вариантов/тестов/результатов + Swagger
|
||
3) **frontend** (React/Vite) — пользовательский интерфейс для создания брифа, выбора форматов и генерации текстов
|
||
|
||
## Возможности (MVP0)
|
||
|
||
- Пользователь создаёт бриф и **сам выбирает форматы**: `social_post`, `search_ad`, `email`
|
||
- Агент №1 генерирует тексты по выбранным форматам
|
||
- Backend сохраняет варианты и отдаёт их фронтенду
|
||
- Swagger для backend: `http://localhost:8000/api/docs/`
|
||
- Swagger для agents: `http://localhost:8001/docs`
|
||
|
||
> Модуль тестирования (создание тестов, сегменты, ручной ввод результатов, анализ) уже заложен в backend,
|
||
> но UI для него можно расширять следующим шагом.
|
||
|
||
---
|
||
|
||
## Быстрый старт через Docker (рекомендуется)
|
||
|
||
### 1) Требования
|
||
- Docker Desktop (Windows/macOS) или Docker Engine + Compose (Linux)
|
||
|
||
### 2) Скачивание
|
||
Склонируйте репозиторий или распакуйте архив в папку, например `adsassistant_full_project`.
|
||
|
||
### 3) Настройка секретов GigaChat
|
||
Откройте файл: `agents_service/.env` и заполните:
|
||
|
||
```env
|
||
GIGACHAT_CLIENT_ID=...
|
||
GIGACHAT_CLIENT_SECRET=...
|
||
```
|
||
|
||
### 4) Запуск
|
||
Из корня проекта:
|
||
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
|
||
Откройте:
|
||
- Frontend: http://localhost:5174
|
||
- Backend Swagger: http://localhost:8000/api/docs/
|
||
- Agents Swagger: http://localhost:8001/docs
|
||
|
||
---
|
||
|
||
## Запуск без Docker (локальная разработка)
|
||
|
||
### 1) Agents Service (8001)
|
||
```bash
|
||
cd agents_service
|
||
python -m venv .venv
|
||
# Windows: .venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
cp .env.example .env
|
||
# заполните GIGACHAT_CLIENT_ID / GIGACHAT_CLIENT_SECRET
|
||
python -m uvicorn src.main:app --reload --port 8001
|
||
```
|
||
|
||
### 2) Django Backend (8000)
|
||
```bash
|
||
cd backend_django
|
||
python -m venv .venv
|
||
pip install -r requirements.txt
|
||
cp .env.example .env
|
||
python manage.py migrate
|
||
python manage.py runserver 0.0.0.0:8000
|
||
```
|
||
|
||
### 3) Frontend (5174)
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
cp .env.example .env
|
||
npm run dev
|
||
```
|
||
|
||
---
|
||
|
||
## Первый сценарий использования
|
||
|
||
1) Создайте пользователя:
|
||
- В Swagger backend: `POST /api/auth/register/`
|
||
2) Получите JWT:
|
||
- `POST /api/auth/token/` → `access`
|
||
3) Во фронтенде войдите с логином/паролем
|
||
4) Создайте бриф:
|
||
- заполните продукт, аудиторию, выберите форматы
|
||
5) Нажмите **«Сгенерировать тексты (Агент №1)»**
|
||
6) Посмотрите список вариантов (ID + format + payload)
|
||
|
||
---
|
||
|
||
## Полезные адреса
|
||
|
||
- Frontend: `http://localhost:5174`
|
||
- Backend API: `http://localhost:8000/api/`
|
||
- Backend Swagger: `http://localhost:8000/api/docs/`
|
||
- Django Admin: `http://localhost:8000/admin/` (можно создать суперпользователя локально: `python manage.py createsuperuser`)
|
||
- Agents Swagger: `http://localhost:8001/docs`
|
||
|
||
---
|
||
|
||
## Структура репозитория
|
||
|
||
```text
|
||
adsassistant_full_project/
|
||
├── docker-compose.yml
|
||
├── agents_service/
|
||
├── backend_django/
|
||
└── frontend/
|
||
```
|
||
|
||
---
|
||
|
||
## Примечания
|
||
|
||
- SQLite база backend сохраняется в docker volume `backend_db`.
|
||
- В Docker-сборке frontend использует `VITE_API_BASE_URL=http://localhost:8000` (см. `frontend/.env.production`).
|
||
- Для продакшена рекомендуется:
|
||
- вынести SQLite на PostgreSQL
|
||
- включить HTTPS и нормальные секреты
|
||
- добавить роль admin и отдельную админ-панель/страницы
|
||
|
||
|
||
Note: frontend/public is optional; docker build does not require it.
|
||
|
||
|
||
## JWT токены (время жизни)
|
||
|
||
В `backend_django/adsassistant_backend/adsassistant_backend/settings.py` настроено:
|
||
- ACCESS token: 1 день
|
||
- REFRESH token: 7 дней
|