ligbox-ops-platform/deploy/vm112-wizard/DNS-VIEWER-V4.md
Ligbox Spec Hub 1f340ef924 docs(dns): sincronizar Spec 037/035 com deploy V1–V3 e V4 pendente
Actualiza dns-viewer, exec/rollback, fichas VM112/122/123, API Console
proxy, token interno wizard e verify script para evitar drift documental.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-25 16:42:07 +00:00

90 lines
2.8 KiB
Markdown

# Spec 037 V4 — Wizard DNS Viewer
**Spec:** [dns-viewer.md](../../specs/037-dns-multi-cloudflare-orchestration/dns-viewer.md) · **Rollback:** [DNS-VIEWER-ROLLBACK.md](../../specs/037-dns-multi-cloudflare-orchestration/deploy/DNS-VIEWER-ROLLBACK.md) § VM112
Painel **read-only** no **passo DNS existente** (step 1) — **não** é menu nem página nova.
**Estado:** 📋 patches versionados no monorepo · deploy VM112 **pendente** (SSH CT130 falha: LAN permission denied, WAN timeout).
---
## Pré-requisitos
| Variável | Valor | Onde |
|----------|-------|------|
| `DESK_API_URL` | `http://10.10.10.122:8080` | env wizard backend |
| `OPS_INTERNAL_TOKEN` | igual ao Desk | env wizard + Desk `.env` |
Desk endpoint aceita `X-Ops-Internal-Token` via `require_internal_or_user` (`main.py`).
---
## Backend
```bash
# Na VM112 (paths locais após git pull / rsync monorepo)
python3 /opt/ligbox-ops-platform/deploy/vm112-wizard/onboarding-dns-viewer-v4.patch.py
systemctl restart ligbox-wizard 2>/dev/null || docker compose -f /opt/ligbox-wizard/docker-compose.yml restart backend
```
| Item | Valor |
|------|-------|
| Endpoint | `GET /api/onboarding/dns/viewer/{domain}` |
| Auth sessão | Header `X-Onboarding-Session` |
| Proxy | Desk `GET /api/v1/dns/viewer/{domain}?email_service=true` |
| Resposta | Mesma shape Desk; `edit_links=[]`; `viewer_context=wizard_onboarding` |
---
## Frontend
```bash
python3 /opt/ligbox-ops-platform/deploy/vm112-wizard/frontend-dns-viewer-v4.patch.py
cd /opt/ligbox-wizard/frontend && npm run build
# Reiniciar serviço static/nginx conforme stack VM112
```
## UI (sem nova rota)
Painel lateral abaixo das opções DNS no step 1:
- Badge modo (Ligbox / externo / OpenPanel)
- Tabela registos (max 12 linhas)
- Secção «Serão aplicados» se `planned_records`
---
## Validação
```bash
# Com sessão onboarding válida
curl -sS -H "X-Onboarding-Session: <session>" \
"http://127.0.0.1:8090/api/onboarding/dns/viewer/exemplo.com.br" | jq .mode_label,.summary
```
Browser: `onboard.ligbox.com.br` → passo DNS → painel «Apontamentos DNS (visualização)» após escolher caminho.
---
## SSH / deploy a partir do CT130
| Destino | Comando | Resultado conhecido |
|---------|---------|---------------------|
| LAN | `ssh root@10.10.10.112` | Permission denied (password `805353` não válida) |
| WAN | `ssh -p 2512 root@95.216.14.146` | Timeout a partir CT130 |
**Acção:** Roger aplica patches directamente na VM112 ou fornece credencial SSH correcta.
---
## Rollback
```bash
ssh root@10.10.10.112
cd /opt/ligbox-wizard
BACKUP=$(ls -td .backups/dns-viewer-* 2>/dev/null | head -1)
[ -n "$BACKUP" ] && cp -a "$BACKUP"/backend/. backend/
systemctl restart ligbox-wizard 2>/dev/null || docker compose restart backend
```
Ver também rollback completo em `DNS-VIEWER-ROLLBACK.md`.