# 🛠️ CatLink Makefile Руководство

Makefile предоставляет набор команд для разработки, сборки и деплоя проекта CatLink.

## 📋 Обзор команд

Для просмотра всех доступных команд используйте:
```bash
make help
```

## 🚀 Быстрый старт

### Первая установка
```bash
make install
```
Устанавливает и запускает проект в первый раз.

### Запуск для разработки
```bash
make dev-bg    # Запуск в фоне
make dev       # Запуск с выводом логов
```

### Проверка статуса
```bash
make status    # Статус всех сервисов
make health    # Проверка работоспособности
```

## 🔧 Команды разработки

| Команда | Описание |
|---------|----------|
| `make dev` | Запуск в режиме разработки с логами |
| `make dev-bg` | Запуск в фоне для разработки |
| `make up` | Запуск с пересборкой (legacy) |
| `make down` | Остановка всех сервисов |
| `make stop` | Остановка всех сервисов (alias) |
| `make restart` | Перезапуск всех сервисов |

## 🏗️ Команды сборки

| Команда | Описание |
|---------|----------|
| `make build` | Сборка контейнеров без кеша |
| `make build-prod` | Сборка для продакшена |
| `make rebuild-no-cache` | Полная пересборка без кеша |
| `make update` | Обновление зависимостей и пересборка |

## 🚀 Деплой и продакшен

| Команда | Описание |
|---------|----------|
| `make deploy` | Развертывание в продакшен |
| `make ssl` | Настройка SSL с Let's Encrypt |
| `make ssl-setup` | Создание конфигурации SSL |
| `make ssl-cert` | Получение SSL сертификата |
| `make ssl-host-setup` | Локальная настройка nginx + certbot |

### Пример использования SSL
```bash
# Настройка SSL для домена
make ssl-host-setup DOMAIN=catlinks.kr EMAIL=admin@catlinks.kr
```

## 🗄️ Управление базой данных

| Команда | Описание |
|---------|----------|
| `make migrate` | Выполнить миграции |
| `make makemigrations` | Создать новые миграции |
| `make migrate-full` | makemigrations + migrate + collectstatic |
| `make superuser` | Создать суперпользователя |
| `make create-superuser-noninteractive` | Создать суперпользователя из .env |

## 🔍 Мониторинг и логи

| Команда | Описание |
|---------|----------|
| `make logs` | Просмотр всех логов |
| `make logs-web` | Логи backend |
| `make logs-frontend` | Логи frontend |
| `make monitor` | Мониторинг ресурсов |
| `make status` | Статус сервисов |
| `make health` | Проверка работоспособности |

## 🛠️ Инструменты разработки

| Команда | Описание |
|---------|----------|
| `make shell` | Django shell |
| `make shell-db` | Подключение к базе данных |
| `make test` | Запуск тестов |
| `make lint` | Проверка кода |
| `make format` | Форматирование кода |

## 💾 Бэкап и восстановление

| Команда | Описание |
|---------|----------|
| `make backup` | Создать бэкап базы данных |
| `make restore` | Восстановить из бэкапа |

### Пример использования
```bash
# Создание бэкапа
make backup

# Восстановление (интерактивно выберите файл)
make restore
```

## ⚙️ Автоматизация и помощники

| Команда | Описание |
|---------|----------|
| `make generate-env` | Сгенерировать .env файл интерактивно |
| `make scale` | Масштабирование сервисов |
| `make info` | Информация о проекте |

### Генерация .env файла
```bash
make generate-env
```
Интерактивно создает `.env` файл из `.env.example`.

## 🧹 Очистка

| Команда | Описание |
|---------|----------|
| `make clean` | Очистка системы Docker |
| `make clean-all` | ⚠️ Полная очистка (удаляет ВСЕ данные) |
| `make reset` | ⚠️ Сброс к заводским настройкам |

> ⚠️ **Внимание**: Команды `clean-all` и `reset` удаляют все данные безвозвратно!

## 📊 Полезные URL-адреса

После запуска доступны:
- **Frontend**: http://localhost:3000
- **Backend API**: http://localhost:8000
- **Django Admin**: http://localhost:8000/admin

## 💡 Примеры использования

### Стандартный workflow разработки
```bash
# Первый запуск
make install

# Ежедневная разработка
make dev-bg
make logs-web    # Просмотр логов при необходимости

# Обновление зависимостей
make update

# Работа с базой данных
make migrate-full
make superuser

# Проверка статуса
make health
```

### Подготовка к продакшену
```bash
# Финальная сборка
make build-prod

# Деплой
make deploy

# Настройка SSL
make ssl-setup
make ssl-cert
```

### Отладка проблем
```bash
# Проверка статуса
make status
make health

# Просмотр логов
make logs
make logs-web
make logs-frontend

# Полная перезагрузка
make restart

# В крайнем случае - полная пересборка
make rebuild-no-cache
```

## 🔧 Технические детали

### Требования
- Docker и Docker Compose
- Make (обычно предустановлен в Linux/macOS)
- Bash (для выполнения скриптов)

### Структура скриптов
Makefile использует скрипты из папки `scripts/`:
- `generate_env.sh` - Генерация .env файла
- `create_superuser.sh` - Создание суперпользователя
- `migrate_and_collect.sh` - Миграции и сбор статики
- `rebuild_no_cache.sh` - Пересборка без кеша
- `ssl_setup.sh` - Настройка SSL

### Переменные окружения
Многие команды используют файл `.env`. Создайте его через:
```bash
make generate-env
```

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

### Проблема: "Command not found: make"
**Решение**:
```bash
# Ubuntu/Debian
sudo apt install make

# macOS
xcode-select --install
```

### Проблема: "Permission denied"
**Решение**:
```bash
# Дайте права на выполнение скриптов
chmod +x scripts/*.sh
```

### Проблема: Контейнеры не запускаются
**Решение**:
```bash
# Проверьте статус
make status

# Попробуйте полную пересборку
make rebuild-no-cache

# Проверьте логи
make logs
```

## 📚 Дополнительная документация

- [Деплой и развертывание](./DEPLOYMENT.md)
- [Исправления и патчи](./FIXES.md)
- [Тестирование покрытия](./COVER_OVERLAY_TESTING.md)