Админка платформы + супер-логи для ИИ-оператора
Сервисы
- admin-apiadmin-ebhpu4apirunning
- admin-admin-rraq1sapprunning
Репо и домены
- Репозиторий
- github.com/ndport/admin
- Ветки
- staging: dev · prod: main
- Домены
- admin.nodeport.ru
Деплои
- runningapi-adminfeat(health): build {version, commit, builtAt} в /health (аддитивно; ADR nodeport 2026-07-17, ок Макс+Иван); v0.2.0 + CHANGELOG Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: e16c2a9a38c8c0ce9af3e0b4db0ded714b3a5bccлоги деплоя →
- runningapi-adminfeat(actions): 404 «сервис не найден» перечисляет известные appName Dokploy Диагностика первого прогона №6: кнопка в UI получила 404 при совпадающих на вид именах. Теперь ответ и супер-лог service.action_failed несут knownApps — видно, как реально называются приложения в Dokploy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: fc9eb3be695cc148254f57b4d9f8018528baa28cлоги деплоя →
- runningadminfeat(actions): кнопки redeploy/restart сервиса с подтверждением (L2-деплой, INSIGHTS №6) Страница проекта: у каждого сервиса кнопки ⟳ redeploy / ↻ restart с двухшаговым подтверждением (useActionState + server action). Успех показывает correlationId со ссылкой на логи действия; ошибка ядра — красным. Контракт CORE-API v0.2: POST /services/:service/actions. Моки имитируют успех. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 8a7de586fc0e08e329dd9c99ea4984be745229d5логи деплоя →
- runningapi-adminfeat(actions): L2-деплой — redeploy/restart сервиса через Dokploy API (INSIGHTS №6) POST /services/:service/actions {action: redeploy|restart}: redeploy = application.redeploy, restart = application.reload (эндпоинты сверены с исходниками Dokploy v0.29.1). Матчинг по appName (= имя swarm-сервиса), 503 без токена / 404 нет сервиса / 502 ошибка Dokploy. Супер-логи service.action / service.action_failed с correlationId corr_act_* и hint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 2427fa094015a909079401c198dfab61e8e1f6afлоги деплоя →
- runningapi-admindocs: чеклист деплоя app backups Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 3832e9b80f80ea614931e792552230397da67cbeлоги деплоя →
- runningapi-adminfeat: бэкапы БД стенда (INSIGHTS №9) + Telegram-кнопки аппрува (№10) backups/: cron-контейнер (отдельный Dokploy-app, Docker File path backups/Dockerfile): - backup.sh: автообнаружение postgres-контейнеров через docker.sock, pg_dumpall docker exec'ом (креды БД не нужны), gzip → Timeweb S3 (rclone inline-remote), ротация 7 дневных + 4 недельных, JSON-супер-логи (фейл = инцидент оператора) - restore-test.sh: скачивает свежий дамп, разворачивает во временном postgres, проверяет таблицы — «бэкап без restore-проверки не считается» - проверено на живых БД локально: дампы снялись, фейл аплоуда залогирован с hint telegram.ts: long-polling getUpdates (наружу ничего не открываем), inline-кнопки «Одобрить/Закрыть» под уведомлением (callback → workflow инцидентов, только от TELEGRAM_CHAT_ID), minor-дайджест раз в TELEGRAM_DIGEST_HOURS (деф. 6ч) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 02050525bf22f1bce71531b2b1d1791e3c69d064логи деплоя →
- runningapi-adminfeat(notify): Telegram-канал уведомлений оператора TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID → sendMessage; webhook остаётся fallback. Выбор канала — Иван, 2026-07-11. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 2d059777dc37bf6812d99db828e8dc2097acf62aлоги деплоя →
- runningapi-adminfeat: флаг monitored + деплои из Dokploy API (read-only) - PROJECT_META.monitored: оператор видит только зрелые проекты (admin, platform); агент фильтрует снапшот, правило №0 в OPERATOR.md - dokploy.ts: project.all → deployment.all по x-api-key (DOKPLOY_API_TOKEN), защитный парсинг структур, кэш 30с, без токена — [] - /deployments отдаёт реальные деплои с фильтрами project/service/status Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: 1d8e5d192220c06761b120772cb617efdc637522логи деплоя →
- runningadminfeat: бейдж «под наблюдением оператора» + окно 24ч в дайджесте Project.monitored в типах и моках; бейдж на списке проектов и странице проекта. Дайджест оператора считает только последние 24ч (since) — старые всплески не держат вердикт incident вечно. Контракт: monitored + деплои из Dokploy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: ad07f5480531fe2bf800a4b466e9d836700cb57dлоги деплоя →
- runningadminfeat: флаг monitored + деплои из Dokploy API (read-only) - PROJECT_META.monitored: оператор видит только зрелые проекты (admin, platform); агент фильтрует снапшот, правило №0 в OPERATOR.md - dokploy.ts: project.all → deployment.all по x-api-key (DOKPLOY_API_TOKEN), защитный парсинг структур, кэш 30с, без токена — [] - /deployments отдаёт реальные деплои с фильтрами project/service/status Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> — Commit: d1e22827a58eac2bb83e1c61473b18f70a94a7c4логи деплоя →