# Развёртывание SmartSales AI

## Содержание

1. [Системные требования](#системные-требования)
2. [Установка PHP и расширений](#установка-php-и-расширений)
3. [Установка MySQL](#установка-mysql)
4. [Установка Ollama и моделей](#установка-ollama-и-моделей)
5. [Установка SmartSales AI](#установка-smartsales-ai)
6. [Настройка веб-сервера](#настройка-веб-сервера)
7. [Настройка cron](#настройка-cron)
8. [Переменные окружения](#переменные-окружения)
9. [Решение проблем](#решение-проблем)

---

## Системные требования

| Компонент | Минимум | Рекомендуется |
|-----------|---------|---------------|
| PHP | 8.0 | 8.2+ |
| MySQL | 8.0 / MariaDB 10.4 | 8.0+ |
| ОЗУ | 2 ГБ | 4+ ГБ |
| GPU (для Ollama) | 4 ГБ VRAM | 8+ ГБ VRAM |
| Диск | 5 ГБ | 20+ ГБ |

### PHP-расширения

- PDO MySQL
- mbstring
- json
- curl (опционально)

Проверка:
```bash
php -m | grep -E "pdo_mysql|mbstring|json"
```

---

## Установка PHP и расширений

### Ubuntu/Debian

```bash
sudo apt update
sudo apt install php8.2 php8.2-mysql php8.2-mbstring php8.2-curl php8.2-json
```

### CentOS/RHEL

```bash
sudo dnf install php php-mysqlnd php-mbstring php-curl php-json
```

---

## Установка MySQL

### Ubuntu/Debian

```bash
sudo apt install mysql-server
sudo mysql_secure_installation
```

Создайте базу:
```sql
CREATE DATABASE ai_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'aichat'@'localhost' IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON ai_chat.* TO 'aichat'@'localhost';
FLUSH PRIVILEGES;
```

---

## Установка Ollama и моделей

### Установка Ollama

```bash
curl -fsSL https://ollama.com/install.sh | sh
```

### Загрузка моделей

```bash
# Основная модель (товары, продажи) — поддержка русского
ollama pull qwen2.5:3b

# Альтернатива:
ollama pull llama3.2:3b
```

### Запуск Ollama

Ollama запускается как сервис автоматически после установки. Проверка:

```bash
curl http://localhost:11434/api/tags
```

Должен вернуть JSON со списком установленных моделей.

### Настройка адреса Ollama

По умолчанию Ollama слушает `localhost:11434`. Если Ollama на отдельном сервере:

1. На сервере Ollama задайте `OLLAMA_HOST=0.0.0.0:11434` (или через systemd)
2. В `.env` укажите `OLLAMA_HOST=http://ollama-server-ip:11434`

---

## Установка SmartSales AI

### 1. Загрузите файлы

```bash
cd /var/www/aimanager
# Загрузите файлы проекта (git clone, scp, unzip)
```

### 2. Создайте `.env`

```bash
cp .env.example .env
nano .env
```

Заполните:
```env
DB_HOST=localhost
DB_NAME=ai_chat
DB_USER=aichat
DB_PASS=ваш_пароль_mysql
APP_DEBUG=false
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=qwen2.5:3b
```

### 3. Установите базу

Откройте в браузере: `http://ваш-домен/install.php`

Или через CLI:
```bash
php install.php
```

### 4. Права на файлы

```bash
chown -R www-data:www-data /var/www/aimanager
chmod -R 755 /var/www/aimanager
chmod 640 .env
```

### 5. Войдите в админку

`http://ваш-домен/admin/` → логин `admin`, пароль `admin123` → смените пароль.

### 6. Запустите миграцию (если обновляетесь)

В админке: сайдбар → «🔧 Миграция БД»

Или: `php fix_db.php`

---

## Настройка веб-сервера

### Apache

Конфигурация виртуального хоста:

```apache
<VirtualHost *:80>
    ServerName aimanager.example.com
    DocumentRoot /var/www/aimanager

    <Directory /var/www/aimanager>
        AllowOverride All
        Require all granted
    </Directory>

    # Запрет доступа к служебным файлам
    <FilesMatch "^(\.env|installed\.lock)$">
        Require all denied
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/aimanager_error.log
    CustomLog ${APACHE_LOG_DIR}/aimanager_access.log combined
</VirtualHost>
```

Включите mod_rewrite:
```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```

### Nginx

```nginx
server {
    listen 80;
    server_name aimanager.example.com;
    root /var/www/aimanager;
    index index.html index.php;

    # Запрет доступа к служебным файлам
    location ~ /\.env {
        deny all;
    }
    location ~ /installed\.lock {
        deny all;
    }

    # PHP
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Статические файлы
    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|wav|woff2?)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    location / {
        try_files $uri $uri/ =404;
    }
}
```

### HTTPS

Рекомендуется настроить HTTPS через Let's Encrypt:

```bash
sudo apt install certbot python3-certbot-apache  # или python3-certbot-nginx
sudo certbot --apache -d aimanager.example.com   # или --nginx
```

---

## Настройка cron

### Follow-up сообщения

```bash
crontab -e
```

Добавьте:
```cron
# Follow-up: каждые 3 минуты
*/3 * * * * /usr/bin/php /var/www/aimanager/follow_up.php >> /var/log/aimanager_followup.log 2>&1
```

### Очистка старых сессий (опционально)

```cron
# Очистка сессий старше 30 дней — каждый день в 3:00
0 3 * * * /usr/bin/php -r "
require '/var/www/aimanager/config.php';
\$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
\$pdo->exec('DELETE FROM chat_sessions WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY)');
"
```

---

## Переменные окружения

Все настройки задаются в файле `.env` (в корне проекта):

| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `DB_HOST` | Хост MySQL | `localhost` |
| `DB_NAME` | Имя базы данных | `ai_chat` |
| `DB_USER` | Пользователь MySQL | `root` |
| `DB_PASS` | Пароль MySQL | (заглушка) |
| `APP_DEBUG` | Режим отладки (`true`/`false`) | `false` |
| `OLLAMA_HOST` | Адрес Ollama | `http://localhost:11434` |
| `OLLAMA_MODEL` | Основная модель | `qwen2.5:3b` |

> Файл `.env` не попадает в git. Используйте `.env.example` как шаблон.

### APP_DEBUG

- `true` — ошибки PHP показываются в браузере (для разработки)
- `false` (по умолчанию) — ошибки скрыты от клиентов (для продакшена)

---

## Решение проблем

### "Database connection failed"

1. Проверьте `.env` — правильные ли `DB_HOST`, `DB_USER`, `DB_PASS`
2. Проверьте, создана ли база: `mysql -u root -p -e "SHOW DATABASES LIKE 'ai_chat'"`
3. Проверьте права пользователя MySQL

### "Не удалось подключиться к Ollama"

1. Проверьте, запущен ли Ollama: `curl http://localhost:11434/api/tags`
2. Проверьте `OLLAMA_HOST` в `.env`
3. Если Ollama на другом сервере — проверьте firewall (порт 11434)
4. Проверьте логи: `journalctl -u ollama`

### "Модель не найдена в Ollama"

1. Проверьте установленные модели: `ollama list`
2. Загрузите модель: `ollama pull qwen2.5:3b`
3. Проверьте `OLLAMA_MODEL` в `.env` — должно совпадать с именем модели

### Ответы AI медленные

- Проверьте наличие GPU: `nvidia-smi` (для NVIDIA)
- Используйте модель поменьше: `qwen2.5:3b` (3B параметров) быстрее, чем 7B+
- Проверьте загрузку: Ollama может обрабатывать один запрос за раз
- Включите кэширование (по умолчанию включено)

### Чат не появляется на сайте

1. Проверьте, подключены ли `chat.css` и `chat.js` на странице
2. Откройте консоль браузера (F12) — нет ли ошибок
3. Проверьте, что `api.php` доступен: `curl http://ваш-домен/api.php?action=settings`
4. Проверьте `CORS` настройки, если чат на другом домене

### Follow-up не работает

1. Проверьте cron: `crontab -l`
2. Запустите вручную: `php follow_up.php`
3. Проверьте логи: `cat /var/log/aimanager_followup.log`
4. Проверьте, что Ollama запущен (follow_up использует AI для генерации вопросов)