RE:CORE Operations
Куда смотреть и что нажимать когда что-то происходит. Для команды и AI-агентов которые помогают команде.
Дашборды и алерты
| Что | URL | Когда смотреть |
|---|---|---|
| Ошибки приложений (GlitchTip) | errors.recore.su | Когда что-то падает на ПК клуба, в panel-api, или billing |
| Доступность сервисов (Uptime Kuma) | status.recore.su | Узнать что лежит сейчас |
| Метрики и графики (Grafana) | reborndev.ru/grafana | CPU/RAM/диск/DORA |
| GitLab | reborndev.ru/git | Код, MR, pipelines |
| Telegram алерты | @Pom0gi_bot в личке владельца |
Все critical/warning из системы (приходят сами) |
GET /api/dora/metrics?days=30 на panel-api:
cycle_time— медиана от MR opened до MR mergeddeploy_freq— успешных деплоев в main / деньchange_fail_rate— hotfix MR в main < 24h после деплоя / total deploys
/api/dora/event).
Server-flow (panel, billing-backend, rebornapi, recore-team-assistant-new)
- Ветка от
test:git checkout -b feature/x test - Push → MR в
test→ CI зелёный → Maintainer мержит - В
testминимум 2 часа, потом MRtest → beta - В
betaминимум 48 часов, без падений и алертов → MRbeta → main main→ auto-deploy panel.recore.su в течение ≤5 мин- БД миграции — ручная кнопка
deploy:panel:migrateв pipeline UI
Мерджить в main и beta могут только Maintainer'ы конкретного репо. Кнопка Merge серая — попроси Maintainer'а.
Desktop-flow (desktop-client, admin-panel-wpf, club-client-pc-image)
Артефакты идут в Backblaze B2 + manifest регистрируется в panel.recore.su. Auto-deploy НЕТ — после merge в main нужно вручную обновить клуб через panel UI или endpoint.
Mobile-flow (mobile-client-{ios,android}, admin-mobile-{ios,android})
48-часовой cooldown НЕ применяется — App Store и Play review сами по себе занимают 1-7 дней. Gate в CI проверяет что storeReviewStatus=approved для main.
Static-flow (investor-dashboard, reborn-admin-frontend, support-crm)
Trunk-based. Любой merge в main → smoke-test через Playwright/lighthouse → auto-deploy в nginx. Без 48ч cooldown.
Ручное обновление клуба
В panel.recore.su → карточка клуба → блок «Версии API» → кнопка «Обновить весь клуб».
NATS-команда (recore.cmd.<clubId>.<pcId>.RecheckUpdates) уходит на ПК в течение секунд. Каждый ПК проверяет /api/clients/latest?clubSlug=&pcId=, видит новую версию, скачивает payload, ставит, перезапускается.
# API-эндпоинты для скриптов:
POST /api/clubs/:id/recheck-updates body: {pcIds?: number[]}
POST /api/clubs/:id/apply-client-version body: {versionId} (закрепить и обновить)
DELETE /api/clubs/:id/apply-client-version (отвязать pin клуба)
Auto-update (opt-in)
В карточке клуба чекбокс «Авто-обновление». По умолчанию OFF.
- production-клубов (платят, не должны получать обновления без явного согласия)
- канала
stable(там промоут уже сам по себе осторожный, без auto-update)
Включить можно только на test или beta клубах. Endpoint:
PUT /api/clubs/:id/auto-update body: {enabled: true|false, windowStart?, windowEnd?}
Закрепить версию на конкретном ПК
Если нужно протестировать новую версию только на одном ПК клуба перед раскатом всем (smoke на 1 машине):
POST /api/computers/:id/version-override body: {versionId}
DELETE /api/computers/:id/version-override (снять закрепление)
Resolution приоритет в /api/clients/latest: pc-override → club-target → channel-latest. Закреплённый ПК не подхватит ни обновление клуба, ни смену канала.
Откат версии
- В UI клуба — кнопка Rollback в блоке «История применений» (откат к предыдущей записи в
version_history) - Если нет истории — переключить канал клуба обратно: например со
stableнаbetaв карточке клуба - Если совсем плохо — закрепить конкретную (заведомо рабочую) версию через per-PC override на каждом ПК клуба
Деплой panel.recore.su
Auto-deploy при push в main репозитория root/recore-platform:
- CI job
deploy:panelподключается к176.114.85.85:2222по SSH-ключуRECORE_DEPLOY_KEY git pull origin main && docker compose pull panel-api panel-web && docker compose up -d panel-api panel-web- Smoke-check
curl /api/health - Job
deploy:panel:migrate(manual gate) — для запуска БД миграций после очередного push
Деплой rebornapi (per-club)
CI публикует Docker image в GitLab Container Registry → panel сама пуллит на нужный клубный контейнер при POST /api/clubs/:id/apply-version.
Деплой мобильных приложений
CI собирает .aab (Android, signed production keystore) → upload в B2 + manifest в panel. Дальше — вручную через Google Play Console / App Store Connect.
Роли и права в GitLab
| Роль | Что может | Кто |
|---|---|---|
| Owner | Всё (включая удаление проекта) | nik45114, root |
| Maintainer | Мерджить в protected ветки своего проекта, менять CI vars | Каждый разраб в своём репо |
| Developer | Пушить в feature/*, создавать MR | Все остальные |
Backstop'ы (кто принимает MR за кого)
| За кого | Принимает MR (кроме самого автора) |
|---|---|
| Денис Скоков (admin-mobile-*) | Дима Гвоздев или Артём Корешов |
| Влад Теплов (mobile-client-*) | Дима Гвоздев или Артём Корешов |
Incident flow
- Алерт пришёл в Telegram
- Открыть errors.recore.su и status.recore.su
- Если panel.recore.su →
git revertпоследний коммит в main, push, ждатьdeploy:panel - Если desktop-client клуба → переключить канал клуба обратно или закрепить ПК на старую версию
- Если GitLab → ssh root@82.27.2.250,
docker logs agentforge-gitlab - Зафиксировать в
POST /api/dora/eventкакincident_openedиincident_resolved(для MTTR метрики)
Runbook'и
panel.recore.su отдаёт 502
ssh -i ~/.ssh/id_ed25519 -p 2222 root@176.114.85.85
docker compose -f /opt/recore-platform/docker-compose.yml ps | grep panel
docker logs recore-panel-api --tail 50
# Если БД недоступна:
docker compose restart recore-postgres
desktop-client не обновляется при нажатии «Обновить весь клуб»
- Проверь что NATS жив:
curl https://panel.recore.su/api/health→ должно содержатьnats: ok - Проверь что у клуба есть активная версия в нужном канале:
GET /api/clients/latest?clubSlug=X→ 200 с manifest - SSH на ПК клуба → проверь что desktop-client процесс работает + смотрит на нужный
updateUrl
GitLab медленно отвечает
Уже должен прийти алерт GitLabSlow. Проверь:
ssh -i ~/.ssh/freakhosting root@82.27.2.250
docker stats --no-stream agentforge-gitlab
# Если RAM > 90% или CPU стабильно > 80% — рестарт:
docker compose -f /opt/recore-platform/docker-compose.yml restart agentforge-gitlab
Pipelines красные на main
- Открой failed pipeline → посмотри какой job упал
- Если
sync:metadata— известный alpine-mirror баг, allow_failure:true в шаблоне (не блокер) - Если
build:rebornapi— проверь Linux runner:ssh root@82.27.2.250 'docker ps | grep runner' - Если
validate:rebornapitestdb missing — это инфра-проблема runner'а, см. issue в recore-platform
Что обновляется здесь
Эта страница — snapshot текущего состояния OPS-стека. Обновляется когда меняется архитектура. Source of truth: D:/2/REBORN_client/docs/superpowers/specs/2026-05-03-recore-platform-ops-design.md и actual-config'и на серверах. Если читаешь это и видишь несоответствие реальности — пиши в Telegram @nik45114.