# 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` --- ## Быстрый старт через 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 дней