npm package: @mase997/ai-chat-widget
Description: Бэкенд для ИИ-ассистента, интегрируемого в аналитические дашборды. Поддерживает кнопочный интерфейс, контекстный анализ данных и умное кеширование.
Latest version: 1.0.8

# AI Dashboard Assistant (Mini App Backend)

Бэкенд для ИИ-ассистента, интегрируемого в аналитические дашборды. Поддерживает кнопочный интерфейс, контекстный анализ данных и умное кеширование.

## Технологический стек
* **Framework:** Django 4.2+, DRF
* **Auth** JWT (SimpleJWT) с контекстом Dashboard ID
* **Database:** PostgreSQL 15
* **Cache:** Redis 7 (кеширование ответов ИИ)
* **AI Engine:** Mistral AI API / Gemini 2.5 Flash
* **Proxy** Cloudflare Worker

---

## Как запустить проект:

### 1. Клонирование репозитория

```
git clone https://github.com/dzyxyx/AI_Chat_New
```

```
cd AI_Chat_New
```

### 2. Подготовка окружения:
Создайте файл `.env` в корневом каталоге проекта (рядом с `docker-compose.yml`):

```env
# Django
DJANGO_SECRET_KEY=your_secret_key_here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1,.ngrok-free.app

# Database (настройки для Docker)
DB_NAME=ai_chat_db
DB_USER=user1
DB_PASSWORD=12345
DB_HOST=db
DB_PORT=5432

# Redis
REDIS_URL=redis://redis:6379/1

# Mistral AI (https://console.mistral.ai/api-keys/)
MISTRAL_API_KEY=YOUR_API_KEY

# Cloudflare Gemini Proxy
# Важно: URL должен начинаться с https://
CLOUDFLARE_WORKER_URL=https://gemini-proxy.your-subdomain.workers.dev
```

### 3. Настройка Cloudflare Worker

- Создайте Cloudflare Worker.

- Скопируйте код из ```backend/ai_engine/ai_agents/Proxy/worker_code.js```

- В настройках воркера (Settings -> Variables) добавьте секретную переменную GEMINI_API_KEY.

- Убедитесь, что модель в коде воркера установлена на gemini-2.5-flash-preview.

Запустите docker-compose.yaml
```
docker-compose up --build
```
Бэкенд API: http://localhost:8000  
База данных (внешний порт): 5432 (используйте для подключения через DBeaver/Pycharm)
Redis: 6379
---
### 4. Публичный доступ (VS Code Ports)
Для работы Mini App используйте встроенный Port Forwarding в VS Code:
1. Перейдите во вкладку **Ports** (рядом с Терминалом).
2. Найдите порт **8000**.
3. Нажмите правой кнопкой -> **Port Visibility** -> **Public**.
4. Используйте полученный URL (Forwarded Address) как `BASE_URL`.

---

### 5. Работа с API
1. Авторизация (Exchange)  
POST /api/v1/auth/platform/

Используется при инициализации Mini App.

Request:

```JSON

{
  "platform_id": "user_123",
  "dashboard_id": "board_555"
}
```

Response: {"access": "...", "refresh": "..."}.

Токен содержит внутри себя dashboard_id, что обеспечивает безопасность данных.

2. Чат с ИИ  
POST /api/v1/chat/

Требует заголовок: Authorization: Bearer <access_token>

Request:

```JSON
{
  "request_type": ["text", "image"],
  "text": "Проанализируй данные на этой доске",
  "image": "base64_data_without_prefix",
  "configs": [],
  "force_refresh": false
}
```

3. История
GET /api/v1/history/

Возвращает историю сообщений для текущей доски (извлекается из JWT).

---

### 6. Тестирование
Для запуска автоматических тестов (включая проверку логики кэша и авторизации) выполните:

```Bash
docker-compose exec backend python manage.py test
```