Files
aiform_prod/ENVIRONMENTS.md

265 lines
7.6 KiB
Markdown
Raw Normal View History

feat: Telegram Mini App integration and UX improvements - Добавлена полная интеграция с Telegram Mini App (динамическая загрузка SDK) - Отдельный компактный дизайн для Telegram Mini App - Добавлен loader при инициализации (предотвращает мелькание SMS-авторизации) - Улучшена навигация: кнопки "Назад" и "К списку заявок" теперь сохраняют авторизацию - Telegram Mini App: кнопка "Выход" просто закрывает приложение - Telegram Mini App: заявки "В работе" скрыты из списка - Веб-версия: для заявок "В работе" добавлена кнопка "Просмотреть в Telegram" (ссылка на @klientprav_bot) - Telegram Mini App: кнопки действий в черновиках расположены вертикально - Веб-версия: убрано отображение номера телефона в приветствии - Исправлена проблема с возвратом к списку черновиков (не требует повторной SMS-авторизации) - Заблокировано удаление и редактирование заявок со статусом "В работе" - Добавлена документация по Telegram Mini App интеграции
2026-01-29 16:12:48 +03:00
# 🚀 Руководство по DEV и PROD окружениям
## 📋 Обзор
Проект поддерживает два отдельных окружения:
- **DEV** (Development) — для разработки и тестирования
- **PROD** (Production) — для продакшна
---
## 🏗️ Структура файлов
```
ticket_form/
├─ docker-compose.dev.yml ← Конфигурация для разработки
├─ docker-compose.prod.yml ← Конфигурация для продакшна
├─ .env.dev ← Переменные окружения для DEV
├─ .env.prod ← Переменные окружения для PROD
├─ .env.example ← Шаблон переменных окружения
├─ start-dev.sh ← Скрипт запуска DEV
├─ start-prod.sh ← Скрипт запуска PROD
└─ ENVIRONMENTS.md ← Эта документация
```
---
## 🛠️ Быстрый старт
### 1. Первоначальная настройка
```bash
cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form
# Создаём .env файлы из шаблона
cp .env.example .env.dev
cp .env.example .env.prod
# Редактируем .env.dev (для разработки)
nano .env.dev
# Установите: APP_ENV=development, DEBUG=true
# Редактируем .env.prod (для продакшна)
nano .env.prod
# Установите: APP_ENV=production, DEBUG=false
# Проверьте все URL и API ключи
```
### 2. Запуск DEV окружения
```bash
# Вариант 1: Используя скрипт (рекомендуется)
./start-dev.sh
# Вариант 2: Вручную
docker-compose -f docker-compose.dev.yml up -d --build
```
**Доступ:**
- Frontend: http://localhost:5175
- Backend: http://localhost:8200
- API Docs: http://localhost:8200/docs
### 3. Запуск PROD окружения
```bash
# Вариант 1: Используя скрипт (рекомендуется)
./start-prod.sh
# Вариант 2: Вручную
docker-compose -f docker-compose.prod.yml up -d --build
```
**Доступ:**
- Frontend: http://localhost:5176
- Backend: http://localhost:8200
- API Docs: http://localhost:8200/docs
---
## 🔍 Различия между DEV и PROD
| Параметр | DEV | PROD |
|----------|-----|------|
| **Порты** | 5175 (frontend), 8200 (backend) | 5176 (frontend), 8200 (backend) |
| **Контейнеры** | `*_dev` | `*_prod` |
| **PostgreSQL** | Локальный контейнер (порт 5433) | Внешний (147.45.189.234:5432) |
| **Redis** | Локальный контейнер (порт 6380) | Системный (localhost:6379) |
| **Debug** | ✅ Включен | ❌ Выключен |
| **Логи** | DEBUG уровень | INFO уровень |
| **Hot Reload** | ✅ Включен | ❌ Выключен |
| **Build** | Dev режим | Production оптимизация |
| **Healthcheck** | ❌ Нет | ✅ Есть |
---
## 📝 Управление окружениями
### Остановка
```bash
# Остановить DEV
docker-compose -f docker-compose.dev.yml down
# Остановить PROD
docker-compose -f docker-compose.prod.yml down
```
### Просмотр логов
```bash
# Логи DEV
docker-compose -f docker-compose.dev.yml logs -f
# Логи PROD
docker-compose -f docker-compose.prod.yml logs -f
# Логи конкретного сервиса
docker-compose -f docker-compose.dev.yml logs -f ticket_form_backend_dev
```
### Перезапуск
```bash
# Перезапуск DEV
docker-compose -f docker-compose.dev.yml restart
# Перезапуск PROD
docker-compose -f docker-compose.prod.yml restart
```
### Пересборка
```bash
# Пересборка DEV
docker-compose -f docker-compose.dev.yml up -d --build
# Пересборка PROD
docker-compose -f docker-compose.prod.yml up -d --build
```
---
## 🔐 Переменные окружения
### Основные переменные
| Переменная | DEV значение | PROD значение |
|------------|--------------|---------------|
| `APP_ENV` | `development` | `production` |
| `DEBUG` | `true` | `false` |
| `LOG_LEVEL` | `DEBUG` | `INFO` |
| `VITE_API_URL` | `http://localhost:8200` | `https://aiform.clientright.ru/api` |
| `NODE_ENV` | `development` | `production` |
### Базы данных
**DEV:**
- PostgreSQL: `ticket_form_postgres_dev` (контейнер, порт 5433)
- Redis: `ticket_form_redis_dev` (контейнер, порт 6380)
**PROD:**
- PostgreSQL: `147.45.189.234:5432` (внешний)
- Redis: `localhost:6379` (системный)
- MySQL: `localhost:3306` (системный)
---
## 🐛 Отладка
### Проверка статуса
```bash
# Статус DEV контейнеров
docker-compose -f docker-compose.dev.yml ps
# Статус PROD контейнеров
docker-compose -f docker-compose.prod.yml ps
# Все контейнеры проекта
docker ps | grep ticket_form
```
### Проверка подключений
```bash
# Проверка backend health
curl http://localhost:8200/health
# Проверка frontend
curl http://localhost:5175
# Проверка PostgreSQL (DEV)
docker exec -it ticket_form_postgres_dev psql -U erv_user -d erv_db_dev
# Проверка Redis (DEV)
docker exec -it ticket_form_redis_dev redis-cli -a redis_dev_pass ping
```
---
## 📦 Git репозитории
### Структура репозиториев
- **`erv-platform`** (origin) — основной репозиторий
- **`aiform_prod`** — production версия
- **`aiform_dev`** — development версия (в папке `aiform_dev/`)
### Работа с Git
```bash
# Push в основной репозиторий
git push origin main
# Push в prod репозиторий
git push aiform_prod main
# Push в оба
git push origin main && git push aiform_prod main
```
---
## ⚠️ Важные замечания
1. **Никогда не коммитьте `.env.dev` и `.env.prod`** — они в `.gitignore`
2. **Всегда проверяйте `.env.prod`** перед деплоем в продакшн
3. **DEV и PROD могут работать одновременно** на разных портах
4. **В PROD используйте внешние БД** — не создавайте локальные контейнеры
5. **Healthcheck в PROD** — проверяйте статус регулярно
---
## 🔄 Миграция с текущей структуры
Если у вас уже запущены контейнеры со старыми именами:
```bash
# Остановите старые контейнеры
docker stop ticket_form_frontend ticket_form_backend ticket_form_frontend_prod
# Удалите старые контейнеры (опционально)
docker rm ticket_form_frontend ticket_form_backend ticket_form_frontend_prod
# Запустите новые через скрипты
./start-dev.sh
./start-prod.sh
```
---
## 📞 Поддержка
При проблемах:
1. Проверьте логи: `docker-compose -f docker-compose.*.yml logs`
2. Проверьте статус: `docker-compose -f docker-compose.*.yml ps`
3. Проверьте `.env` файлы на корректность
4. Убедитесь, что порты не заняты: `netstat -tulpn | grep -E "5175|5176|8200"`
---
**Автор:** AI Assistant + Фёдор
**Дата:** 2 января 2025