# Задание: Валидация production конфигов против реальных данных VPS

> Для выполнения: Claude Code на VPS
> Создано: December 24, 2025
> Репозиторий: ~/workspace/projects/banatie-service

## Цель

Сравнить файлы в `infrastructure/` с реальными конфигами на VPS (`/opt/banatie/`) и обновить репозиторий при расхождениях.

## Контекст

Файлы в `infrastructure/` были созданы на основе чата о деплое, но могут не полностью соответствовать реальным конфигам на VPS. Нужно синхронизировать их с production.

---

## Задачи

### 1. Сравнить docker-compose.yml

**Файл в репо:** `infrastructure/docker-compose.production.yml`
**Файл на VPS:** `/opt/banatie/docker-compose.yml`

```bash
# Посмотреть реальный файл
cat /opt/banatie/docker-compose.yml
```

**Что проверить:**
- [ ] Имена сервисов совпадают
- [ ] Networks правильные (особенно `services_proxy-network` vs `proxy-network`)
- [ ] Volumes пути совпадают
- [ ] Environment variables
- [ ] Healthcheck команды
- [ ] Build context путь

**Действие:** Если есть расхождения — обновить `infrastructure/docker-compose.production.yml`

---

### 2. Сравнить .env переменные

**Файл в репо:** `infrastructure/.env.example`
**Файл на VPS:** `/opt/banatie/.env`

```bash
# Посмотреть реальные переменные (без секретов)
cat /opt/banatie/.env
```

**Что проверить:**
- [ ] Все переменные присутствуют
- [ ] Значения по умолчанию корректны
- [ ] Нет лишних/устаревших переменных

**Действие:** Обновить `.env.example` если нужно

---

### 3. Сравнить secrets.env структуру

**Файл в репо:** `infrastructure/secrets.env.example`
**Файл на VPS:** `/opt/banatie/secrets.env`

```bash
# Посмотреть только имена переменных (БЕЗ значений!)
cat /opt/banatie/secrets.env | grep -E '^[A-Z_]+=' | cut -d'=' -f1
```

**Что проверить:**
- [ ] Все секреты перечислены в примере
- [ ] Нет лишних/устаревших секретов

**Действие:** Обновить `secrets.env.example` если нужно (только имена, не значения!)

---

### 4. Проверить init-db.sql

**Файл в репо:** `infrastructure/init-db.sql`
**Файл на VPS:** `/opt/banatie/scripts/init-db.sql`

```bash
cat /opt/banatie/scripts/init-db.sql
```

**Что проверить:**
- [ ] GRANT команды совпадают
- [ ] Имя пользователя корректное (banatie_user)

---

### 5. Проверить Caddyfile (для документации)

**Файл на VPS:** `/opt/services/configs/caddy/Caddyfile`

```bash
# Извлечь только Banatie секцию
grep -A 50 "BANATIE" /opt/services/configs/caddy/Caddyfile
```

**Что проверить:**
- [ ] Конфиг в `docs/deployment.md` соответствует реальному
- [ ] Все домены правильные

**Действие:** Обновить секцию Caddy в `docs/deployment.md` если нужно

---

### 6. Проверить deploy скрипты

**Файлы в репо:** `scripts/deploy-landing.sh`, `scripts/deploy-api.sh`

```bash
# Проверить что скрипты работают
head -20 ~/workspace/projects/banatie-service/scripts/deploy-landing.sh
head -20 ~/workspace/projects/banatie-service/scripts/deploy-api.sh
```

**Что проверить:**
- [ ] Пути корректные
- [ ] Команды docker compose правильные

---

### 7. Проверить текущий статус сервисов

```bash
# Статус контейнеров
docker ps --filter "name=banatie" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# Проверить endpoints
curl -s https://api.banatie.app/health | jq
curl -s -o /dev/null -w "%{http_code}" https://banatie.app
```

**Записать в документацию** если есть проблемы.

---

## Формат отчёта

После выполнения создай краткий отчёт:

```markdown
## Результаты валидации

### Расхождения найдены:
- [ ] docker-compose.production.yml — описание
- [ ] .env.example — описание
- [ ] ...

### Файлы обновлены:
- файл1.md
- файл2.yml

### Статус сервисов:
- Landing: OK/ERROR
- API: OK/ERROR
- MinIO: OK/ERROR
- PostgreSQL: OK/ERROR
```

---

## После выполнения

```bash
cd ~/workspace/projects/banatie-service

# Проверить изменения
git status
git diff

# Закоммитить если есть изменения
git add infrastructure/ docs/
git commit -m "fix: sync production configs with VPS reality"
git push
```

---

## Важно

1. **НЕ копировать секреты** в репозиторий — только имена переменных
2. **НЕ менять** реальные конфиги на VPS — только обновлять файлы в репо
3. При серьёзных расхождениях — сначала спросить перед изменениями
