ligbox-ops-platform/specs/037-dns-multi-cloudflare-orchestration/deploy/DNS-VIEWER-EXEC-20260625.md
Ligbox Spec Hub 038fb8f7ce feat(dns): Spec 037 DNS Viewer — Desk, Console e patches Wizard V4
Entrega read-only de apontamentos DNS (Cloudflare, OpenPanel BIND, público)
no Desk e Console /admin/dominio, com spec, scripts de rollback e patches
VM112 para painel lateral no passo DNS do onboarding (deploy wizard pendente).

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

110 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DNS Viewer V1 — Execução e versionamento
**Responsável:** Cursor Agent · **Aprovado por:** Roger
**Data:** 2026-06-25
**Spec:** [dns-viewer.md](../dns-viewer.md) · Rollback: [DNS-VIEWER-ROLLBACK.md](./DNS-VIEWER-ROLLBACK.md)
---
## Escopo desta execução
| Fase | Incluída agora | Entregável |
|------|----------------|------------|
| V0 | ✅ baseline | `cloudflare_dns.py` + modal Desk (já existe) |
| V1 | 📋 próximo deploy | API `GET /api/v1/dns/viewer/{domain}` |
| V1b | 📋 | `dns-viewer.js` + migrar modal Desk |
| V2V4 | ⏳ futuro | OpenPanel, Console, Wizard |
---
## Checklist pré-deploy (obrigatório)
```bash
# CT130 — tag git (usar SSHPASS se preflight/rollback a partir do Spec Hub)
cd /opt/ligbox-spec-hub/repos/ligbox-ops-platform
git tag -a dns-viewer-pre-v1-$(date +%Y%m%d) -m "Antes DNS Viewer V1"
# VM122 — backup (CT130: export SSHPASS=805353)
export SSHPASS='805353' # opcional — só se SSH key falhar
bash specs/037-dns-multi-cloudflare-orchestration/deploy/scripts/preflight-dns-viewer.sh \
--host root@10.10.10.122
```
---
## Ficheiros versionados (monorepo)
| Ficheiro | Fase | Notas |
|----------|------|-------|
| `projects/ops-desk/api/app/cloudflare_dns.py` | V0 | Não remover — provider CF |
| `projects/ops-desk/api/app/dns_viewer.py` | V1 | **Novo** orquestrador |
| `projects/ops-desk/api/app/openpanel_dns.py` | V2 | Novo — opcional |
| `projects/ops-desk/api/app/main.py` | V1 | Rota viewer + flag |
| `projects/ops-desk/api/app/permissions.py` | V1 | `can_read_dns_viewer` |
| `projects/ops-desk/frontend/assets/dns-viewer.js` | V1b | **Novo** componente |
| `projects/ops-desk/frontend/assets/app.js` | V1b | Integrar viewer |
| `projects/ops-desk/frontend/index.html` | V1b | Cache bust `?v=` |
| `projects/wizard/backend/app/services/dns_viewer.py` | V4 | Wizard variant |
---
## Deploy VM122 (após implementação V1/V1b)
```bash
# CT130 ou laptop com rsync
REPO=/opt/ligbox-spec-hub/repos/ligbox-ops-platform
rsync -av --delete \
"$REPO/projects/ops-desk/api/app/" \
root@10.10.10.122:/opt/ligbox-ops-platform/api/app/
rsync -av \
"$REPO/projects/ops-desk/frontend/assets/" \
root@10.10.10.122:/opt/ligbox-ops-platform/frontend/assets/
ssh root@10.10.10.122 'cd /opt/ligbox-ops-platform && \
grep -q DNS_VIEWER_ENABLED .env || echo DNS_VIEWER_ENABLED=1 >> .env && \
docker compose -f docker-compose.mvp.yml build api frontend && \
docker compose -f docker-compose.mvp.yml up -d api frontend'
```
---
## Validação pós-deploy
```bash
bash specs/037-dns-multi-cloudflare-orchestration/deploy/scripts/verify-dns-viewer.sh \
--host 10.10.10.122
# Manual UI
# Desk → Overview → tenant VM112 → domínio → secção DNS unificada
# Browser devtools: zero SyntaxError em app.js / dns-viewer.js
```
---
## Rollback
Ver **[DNS-VIEWER-ROLLBACK.md](./DNS-VIEWER-ROLLBACK.md)** — ordem recomendada:
1. `DNS_VIEWER_ENABLED=0` (30 segundos)
2. Rollback frontend se UI partida
3. Rollback API se 500
4. `git revert` CT130 se necessário
---
## Registo de versões (preencher após cada deploy)
| Data | Tag git | VM122 backup dir | Commit | Notas |
|------|---------|------------------|--------|-------|
| 2026-06-25 | `dns-viewer-pre-v1-20260625` | `.backups/dns-viewer-20260625-161839` | `7e4920a` | Pré-deploy |
| 2026-06-25 | — | tag Docker `post-dns-viewer-v1-20260625` | _(working tree)_ | **V1+V1b deploy OK** · verify PASSED |
---
## Pendente V2+
- OpenPanel BIND provider
- Console `console.ligbox.com.br/admin/dominio`
- Wizard `GET /api/onboarding/dns/viewer/{domain}`
- Formalizar `dns.viewer.read` em Spec 027