# 24/7 автономный workflow Картина: **твой Mac/iPhone даёт команду → Claude работает → всё запускается в облаке независимо от твоего устройства**. ``` ┌──────────────┐ ┌──────────────┐ │ Mac / iPhone │ │ Твой Proxmox │ │ (даёшь команду)│ │ VM (будущее) │ └───────┬──────┘ └───────┬──────┘ │ │ │ Claude Code │ Claude Code 24/7 │ (когда открыт) │ (когда поднимем VM) ▼ ▼ ┌──────────────────────────────────────┐ │ GitHub (main branch) │ └──────┬──────────────────────────┬────┘ │ push │ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ CI workflow │ │Docker workflow│ │ (backend+web │ │(api+web images│ │ +POS builds) │ │ на ghcr.io) │ └──────┬──────┘ └──────┬──────┘ │ │ │ artifacts: │ images pulled by │ web-dist, POS .exe │ stage / prod compose ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ GitHub │ │ Proxmox-VM │ │ Releases │ │ stage/prod │ │ (.exe, APK) │ │ (docker-compose)│ └──────────────┘ └──────────────┘ ``` ## Что где живёт | Компонент | Где | Когда работает | Зависит от Mac? | |---|---|---|---| | Claude Code (текущая сессия) | твой Mac | пока открыта app + Mac не спит | **Да** | | Claude Code (будущее 24/7) | Proxmox VM | всегда | Нет | | GitHub (код) | github.com | всегда | Нет | | GitHub Actions CI | github.com | срабатывает на push / cron | **Нет** | | Docker images | ghcr.io | всегда | Нет | | Тестовый стенд (stage) | Proxmox VM | всегда | Нет | | DB бэкапы | Proxmox VM → локальный диск + S3 (опц.) | cron nightly | Нет | ## Сценарии ### Ты заказал фичу → уснул 1. (Днём) запустил Claude, дал команду «сделай X», Claude работает 2. Перед сном Claude коммитит и пушит то что успел 3. GitHub Actions автоматически собирает backend+web+POS, прогоняет тесты 4. Docker-образы уходят в ghcr.io 5. (Если stage настроен) — stage автопулит образ → перезапускается → готов к тесту 6. Telegram-бот шлёт тебе «готово, проверь stage.food-market.xxx» 7. Утром ты смотришь, ревьюишь, делаешь merge/revert ### Ты дал команду с iPhone 1. Открыл Claude на iPhone, сказал «обнови UI страницы X» 2. Claude работает, пушит 3. GitHub Actions → ghcr.io → stage → Telegram → ты проверяешь прямо с iPhone ### Что-то пошло не так - Каждый коммит = одна точка отката. `git revert ` за 10 секунд. - БД: ежедневный pg_dump `.sql.gz`, 30 дней ротации, скрипт `deploy/backup.sh`. - Критические операции (миграции с удалением данных, force-push на main) — всегда спрошу тебя. ## GitHub Actions бюджет (free: 2000 мин/мес на приватный репо) | Job | Runner | Мин/запуск | Множитель | Биллинговых мин | Когда | |---|---|---|---|---|---| | backend | Linux | 3 | 1× | 3 | каждый push/PR | | web | Linux | 2 | 1× | 2 | каждый push/PR | | pos | Windows | 5 | 2× | 10 | **только на теги `v*` + ручной запуск** | | docker-api | Linux | 3 | 1× | 3 | только push в main (с изм. кода) | | docker-web | Linux | 3 | 1× | 3 | только push в main (с изм. кода) | **Оценка:** ~11 бил.мин на обычный коммит. Лимит 2000 мин ≈ 180 коммитов в месяц или 6 в день. На теге релиза +10 за POS. **Когда упрёмся (ориентир: 200+ коммитов/мес):** поднимем self-hosted runner на Proxmox-VM (Ubuntu, 2 CPU/2 GB). В workflow: `runs-on: [self-hosted, linux]` вместо `ubuntu-latest`. Безлимит по времени. ## Что нужно для полноценного 24/7 (ещё не сделано) - [x] GitHub Actions для CI (backend/web/POS) — готов `.github/workflows/ci.yml` - [x] Docker workflow — готов `.github/workflows/docker.yml` - [x] docker-compose для стенда — готов `deploy/docker-compose.yml` - [x] DB backup скрипт — готов `deploy/backup.sh` - [ ] Proxmox-VM `food-market-stage` — ждёт кредов от тебя - [ ] Proxmox-VM `claude-runner` (чтобы я не жил на твоём Mac) — ждёт кредов - [ ] SSH-ключ для деплоя в GitHub Secrets - [ ] Telegram bot + chat_id в GitHub Secrets - [ ] FTP для APK (если нужен) в GitHub Secrets - [ ] Домен + SSL для stage (опц., Cloudflare) ## Секреты: безопасно передать мне Пока твой Mac — единственное место, куда Claude Code имеет доступ. Безопасный путь: 1. Создай папку: `mkdir -p ~/.food-market-secrets && chmod 700 ~/.food-market-secrets` 2. Положи туда файлы (я буду читать только по твоей команде и не буду вставлять значения в чат): - `~/.food-market-secrets/proxmox.env` — ssh creds для Proxmox API/VM - `~/.food-market-secrets/ftp.env` — FTP для APK - `~/.food-market-secrets/telegram.env` — `BOT_TOKEN=...` + `CHAT_ID=...` 3. Пришли в чат: "Секреты в ~/.food-market-secrets/" 4. Я прочитаю, прокину в GitHub Secrets через `gh secret set`, больше нигде не сохраню. ## Настройка Mac чтобы не засыпал ночью (временно, пока нет remote runner) ```bash # Заблокировать sleep на время работы Claude (Ctrl+C чтобы отменить) caffeinate -i -d ``` Или в System Settings → Lock Screen → «Turn display off after: Never» + «Prevent automatic sleeping when the display is off». После того как поднимем `claude-runner` VM — этот обход больше не нужен.