This commit is contained in:
Ilnar
2026-03-05 06:55:42 +03:00
commit 36a7d530c1
50 changed files with 3091 additions and 0 deletions

138
README.md Normal file
View File

@@ -0,0 +1,138 @@
# 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 дней