# SailorBarBot — Инструкция по эксплуатации

**Важно!** Этот проект очень важен. Ниже — что и где находится, и что **НЕЛЬЗЯ трогать**, чтобы не сломать.

---

## 🔗 Схема связей

```
Telegram (@SailorBarBot)
        │ POST webhook
        ▼
  Nginx (sailor.bar:443)
        │ /api/ → 3001
        ▼
  Node.js (порт 3001) ←─── PostgreSQL (порт 5433)
        │                     БД: sailor_bar
        │                     Юзер: sea_connect
        ▼
  SailorBar фронтенд (React SPA, /var/www/sailor.bar/)
```

---

## ⚠️ ЧЕГО НЕ ТРОГАТЬ

### 1. PostgreSQL — НЕ МЕНЯТЬ порт, БД, пользователя!

| Параметр | Значение | Где используется |
|---|---|---|
| Порт | **5433** (НЕ 5432!) | `.env` DATABASE_URL |
| База данных | **sailor_bar** | `.env` DATABASE_URL |
| Пользователь | **sea_connect** | `.env` DATABASE_URL |
| Владелец БД | **sailor** | системный |

**Если кто-то переустановит Postgres или изменит порт — бот упадёт.**  
**Если удалить пользователя `sea_connect` — бот не сможет читать/писать посты.**

### 2. `.env` файлы — НЕ удалять, НЕ перезаписывать шаблоном

Два одинаковых файла (дублируются для подстраховки):
- `/opt/sailor-bar/.env`
- `/opt/sailor-bar/artifacts/api-server/.env`

**Если удалить/повредить `.env` — бот не запустится.**

### 3. Systemd-сервис — `sailor-bar-bot.service`

Файл: `/etc/systemd/system/sailor-bar-bot.service`
ExecStart: `/usr/bin/node /opt/sailor-bar/artifacts/api-server/dist/index.mjs`
WorkingDirectory: `/opt/sailor-bar/artifacts/api-server`
Restart: always

### 4. Nginx — НЕ удалять `/api/` прокси

Файл: `/etc/nginx/sites-available/sailor.bar`
```nginx
location /api/ {
    proxy_pass http://127.0.0.1:3001;
}
```
⚠️ `/bot` → 3000 — legacy, пока не трогать.

### 5. Исходники — `/opt/sailor-bar-source/`

TypeScript-проект. Сборка: `cd /opt/sailor-bar-source && npm run build:api`

### 6. Фронтенд — `/var/www/sailor.bar/`

React SPA. Собирается из `/opt/sailor-bar-source/artifacts/paluba/`.

---

## 🆘 Аварийная проверка

```bash
systemctl is-active sailor-bar-bot.service      # 1. Сервис жив?
ss -tlnp | grep 3001                           # 2. Порт слушает?
curl -s http://localhost:3001/api/healthz       # 3. {"status":"ok"}
curl -s -o /dev/null -w "%{http_code}" https://sailor.bar/api/healthz  # 4. 200 OK
journalctl -u sailor-bar-bot.service --no-pager -n 30 | grep -i error   # 5. Логи
```

---

## 📋 Состояние (16.05.2026)

| Компонент | Статус |
|---|---|
| Postgres | порт 5433, БД sailor_bar, 1 автор, 1 черновик |
| Бот (порт 3001) | ✅ active, webhook установлен |
| Nginx | ✅ 200 OK через HTTPS |
| Фронтенд | /var/www/sailor.bar/ |
| Старый Docker goclaw | контейнер удалён, volumes остались (не трогать) |
| Секция nginx /bot→3000 | legacy, не трогать |

---

*Если нужно что-то менять — сначала обсудить с пользователем.*