ligbox-ops-platform/LAPTOP/20260616_SERVICOS_ORQUESTRACAO_PURGE_ASPECTOS.md
Ligbox Spec Hub 3a2c64834b Initial import: ligbox-ops-platform + specs + LAPTOP + obsidian merge (CT130)
Source: VM122 /opt + obsidian-infra + LAPTOP
Hub: CT130 spec-hub 10.10.10.130
2026-06-19 17:26:41 +00:00

155 lines
5.1 KiB
Markdown

# Anais de Referência — Serviços MOSP, Orquestração VM122, Purge SSE/Jobs
**Data:** 2026-06-16
**Utilizador:** Roger
**Transcript Cursor:** `ad3c7400-04ce-47bf-8995-2861d54a831b`
**Projeto:** Ligbox Ops Platform · Desk VM122 (`10.10.10.122:8091`) + Wizard VM112 (`10.10.10.112`)
**Chat bruto:** `CHAT_BRUTO_LIGBOX_OPS_SERVICOS_ORQUESTRACAO_PURGE_20260616.{txt,jsonl}`
---
## 1. Resumo executivo
Sessão focada em **orquestração MOSP no Desk** (não no wizard VM112):
1. Página **Serviços** (ex-Contas/Overview Home) — clientes + tenants de oferta + purge Spec 017.
2. Spec **018** — modelo Pizza as a Service / MOSP / catálogo multi-produto.
3. Purge com painel lateral timeline + **SSE** + **jobs async/polling** (fix 504 / Failed to fetch).
4. Purges testados: `dratcoin.com`, `eplacebets.com` — UI falhou mas backend concluiu.
5. **Fase 3 pendente VM112** — passos Carbonio/CF/Traefik em tempo real dentro do purge.
---
## 2. Specs criadas/actualizadas
| Spec | Path | Estado |
|------|------|--------|
| 017 | `specs/017-vm112-domain-orchestration/spec.md` | Purge domínio — Fase 1 concluída |
| 018 | `specs/018-service-orchestration/spec.md` | MOSP, Pizza as a Service, Fase 1 UI |
---
## 3. UI Desk — menu Serviços
| Item | Valor |
|------|-------|
| Módulo ID | `overview-home` (sem breaking change) |
| Menu | **Serviços** |
| Título | Orquestração de Serviços |
| Subtítulo | Desk VM122 · Orquestração MOSP |
| Layout | 3 colunas: Clientes · Tenants de Oferta · Escopo OPS |
**Ficheiros principais:**
- `frontend/assets/accounts.js``DeskServices`
- `frontend/assets/styles.css``.servicos-*`, `.vm112-purge-drawer`
- `frontend/index.html` → modal + drawer purge
- `api/app/modules/registry.py`
**Regra:** cada oferta MOSP terá **wizard próprio**; VM112 Hero = só e-mail.
---
## 4. API Desk — domínios VM112
| Método | Path | Uso |
|--------|------|-----|
| GET | `/api/v1/vm112/domains` | Lista clientes Fase 1 |
| GET | `/api/v1/vm112/domains/{domain}` | Detalhe modal |
| POST | `/api/v1/vm112/domains/{domain}/purge` | Purge síncrono (legado) |
| POST | `/api/v1/vm112/domains/{domain}/purge/stream` | SSE timeline |
| POST | `/api/v1/vm112/domains/{domain}/purge/jobs` | **Recomendado** — job async |
| GET | `/api/v1/vm112/purge/jobs/{job_id}` | Poll timeline 2s |
**Ficheiros API:**
- `api/app/vm112_domains.py`
- `api/app/vm112_domains_routes.py`
- `api/app/vm112_purge_stream.py`
- `api/app/vm112_purge_jobs.py`
**RBAC:** `super_admin`, `ops_lead` + senha Root no purge.
**Blocklist:** `ligbox.com.br`, `itecnologys.com`
---
## 5. Purge — incidentes e fixes
### 504 Gateway Timeout (~60s)
- **Causa:** nginx proxy timeout 60s; purge VM112 demora minutos.
- **Fix:** `frontend/nginx.conf``proxy_read_timeout 600s`, `proxy_buffering off`.
### Failed to fetch (~79s) via `desk.ligbox.com.br`
- **Causa:** Traefik/SSE ligação longa cortada; browser perde stream.
- **Fix:** purge **async jobs + polling** (pedidos curtos GET a cada 2s).
- **Nota:** purge **concluiu** mesmo com erro UI (`dratcoin`, `eplacebets` sumiram da lista).
### Poll automático página Serviços (piscava)
- **Causa:** `refresh()` 30s re-renderizava com «A carregar…»
- **Fix:** poll silencioso em `renderPage({ poll: true })`
---
## 6. Domínios VM112 (fim de sessão)
Após purges teste, lista típica:
- `betinsport.com`, `diarissima.com`, `ibytera.com`, `itecnologys.com`, `myvexx.com`
- Removidos: `dratcoin.com`, `eplacebets.com` (testes purge)
---
## 7. Deploy
```bash
cd /opt/ligbox-ops-platform
docker-compose -f docker-compose.mvp.yml build api frontend
docker-compose -f docker-compose.mvp.yml up -d api frontend
```
**URLs:**
- Desk: `http://10.10.10.122:8091` / `https://desk.ligbox.com.br`
- API: `http://10.10.10.122:8080`
- Wizard: `https://onboard.ligbox.com.br` (VM112)
**Hard refresh:** Ctrl+Shift+R após deploy.
---
## 8. Reteste E2E wizard e-mail
1. Desk → Serviços → purge domínio teste (se existir)
2. Portal onboard → Self-Service → `/onboard`
3. Domínio → DNS → conta → infra
4. Desk → Serviços → Actualizar → cliente reaparece
---
## 9. Próximo passo — VM112 (Fase 3)
**Não implementado nesta sessão** (sem SSH VM112):
- `domain_orchestration.py` — purge passo a passo com eventos
- `POST /api/admin/domains/{domain}/purge/jobs` na VM112
- Desk proxy eventos VM112 para drawer timeline
**Path produção VM112:** `/opt/ligbox-wizard`
**SSH:** `root@10.10.10.112` (credencial user rule: `@betinplace`)
---
## 10. Canais de arquivo
| Canal | Path |
|-------|------|
| Anais VM122 | `/opt/ligbox-ops-platform/docs/anais-referencia/` |
| Chat bruto projeto | `/opt/ligbox-ops-platform/chat-bruto/` |
| Chat bruto central | `/root/ligbox-ops-platform-chat-bruto/` |
| Obsidian | `/root/obsidian-infra/ligbox-ops-platform/` |
| LAPTOP | `/opt/ligbox-ops-platform/LAPTOP/` |
---
## 11. Decisões Roger (registo)
- MOSP planeado no **Desk VM122**, não na Hero VM112.
- Cada oferta = wizard próprio (Proxmox, servidor físico, etc.).
- Modelo comercial Pizza as a Service documentado na Spec 018.
- Purge Spec 017 mantido; UI evolui (drawer + jobs).