# Desk Modern UI — Processo staging (Roger)

**Data:** 2026-06-26  
**URL staging:** https://desk-staging.ligbox.com.br/?desk=1  
**URL produção:** https://desk.ligbox.com.br — **NÃO promover até checklist OK**

---

## Objetivo

Unificar no **staging**:

1. **Design novo** — topnav por zonas (Operações · Comercial · Infra · Sistema)
2. **Funcionalidades prod** — Serviços IaaS (Escopo OPS cards, blocklist, loading modal)
3. **Repo Git** — fonte única antes de cutover produção

---

## Ficheiros no repo

| Ficheiro | Papel |
|----------|--------|
| `frontend/index.staging.html` | HTML moderno (shell v2) — **só staging** |
| `frontend/index.html` | Produção — **inalterado** até cutover |
| `frontend/assets/topnav.js` | Nav zonas + context sidebar |
| `frontend/assets/desk-modern.css` | CSS chrome v0.12 (extraído staging) |
| `frontend/assets/app.staging.js` | app.js prod + hooks topnav + SSO/cutover |
| `frontend/assets/servicos.js` | Prod (Escopo OPS, blocklist) |
| `frontend/staging-snapshot/` | Snapshot VM122 25/06 (referência) |
| `deploy/desk-staging-modern/deploy-staging-only.sh` | Deploy **só** container staging |

---

## Deploy staging (comando)

```bash
chmod +x deploy/desk-staging-modern/deploy-staging-only.sh
./deploy/desk-staging-modern/deploy-staging-only.sh
```

Container alvo: `ligbox-ops-platform-staging_frontend-staging_1`  
**Nunca** usar `ligbox-ops-platform_frontend_1` neste script.

Cache bust staging: `?v=20260626staging1`

---

## Checklist antes de produção

Roger valida em **desk-staging** — só depois promover.

### Layout / nav

- [ ] Header glass + zonas visíveis
- [ ] Tab activa correcta ao mudar view
- [ ] Link **Console** abre console.ligbox.com.br
- [ ] Context sidebar (Tickets / Eventos / Matriz) funciona
- [ ] Mobile / zoom 125% sem quebra grave

### Serviços IaaS

- [ ] Lista clientes alinhada (badge 🔒 blocklist)
- [ ] Escopo OPS — cards clicáveis + Spec
- [ ] Modal purge — loading animado + purge blocklist
- [ ] Purge domínio teste (não blocklist) — job completa

### Integrações

- [ ] Login / logout
- [ ] Console handoff (`openConsolePath`)
- [ ] Agentic Ops carrega sem flash infinito
- [ ] API staging responde (`/api/health`)

### Erros conhecidos corrigidos neste merge

- [x] `consumeSsoFromUrl` / `consoleHomeUrl` ausentes no app staging antigo
- [x] `servicos.js` staging desactualizado (19/06) → usa prod

### Produção — bloqueado até

- [ ] Roger assina checklist acima
- [ ] Commit + tag `desk-modern-v0.12`
- [ ] Deploy script separado `promote-staging-to-prod.sh` (criar depois)
- [ ] Janela rollback documentada

---

## Diferença staging vs prod (actual)

| | Staging | Produção |
|---|---------|----------|
| URL | desk-staging.ligbox.com.br | desk.ligbox.com.br |
| Layout | shell v2 + topnav | sidebar legado |
| servicos.js | merge prod (20260626staging1) | align1 |
| app | app.staging.js | app.js |
| API | api-staging container | api produção |

---

## Specs relacionadas

- **019** — Console v2 / cutover Fase 4
- **018** — Serviços IaaS / Escopo OPS
- **030** — Mission Board (referência visual)
- Checkpoint 2026-06-21 — shell partilhada console.ligbox.com.br

---

## Rollback staging

```bash
# Restaurar index anterior no container staging (se backup existir)
ssh root@10.10.10.122 'docker exec ligbox-ops-platform-staging_frontend-staging_1 ls /usr/share/nginx/html/index.html*'
```

Ou rebuild: `docker-compose -f docker-compose.agentic-staging.yml build frontend-staging`

---

## Promoção produção (2026-06-26) ✅

| Item | Valor |
|------|--------|
| Versão | **v0.12.2** · cache `20260626prod1` |
| URL | https://desk.ligbox.com.br/?desk=1 |
| Commit | merge staging → `index.html` + `app.js` + `desk-modern.css` + `topnav.js` |
| Backup rollback | `index.legacy.html` · `app.legacy.js` |
| Script promote | `deploy/desk-staging-modern/promote-staging-to-prod.sh` |
| Script rollback | `deploy/desk-staging-modern/rollback-prod-to-legacy.sh` |
| README deploy | `deploy/desk-staging-modern/README.md` |

**Incluído na produção:** modals purge-history + infra-process, tickets-workspace, dns-viewer, filtro Purge eventos, Escopo OPS completo.

**Removido:** banners console-v2 inline (link Console no topnav substitui).

---

## Actualização 2026-07-02 — Agentic Ops no pacote de promote ✅

| Item | Valor |
|------|--------|
| Problema | Deploy parcial (30/06–01/07) actualizou shell Desk sem `agentic-ops.js` / `.css` |
| Sintoma | UI MVP antiga (Frota + timeline) dentro do chrome v0.13 — página “desconfigurada” |
| Correcção | Spec 030 promovido; cache `?v=20260702spec30` |
| Prevenção | `promote-staging-to-prod.sh` e `deploy-staging-only.sh` **obrigam** `agentic-ops.*` + verificação ≥1200 linhas |

**Regra:** nunca `docker cp` só `index.html` / `app.staging.js` em produção sem o par Agentic. Ver `deploy/desk-staging-modern/README.md`.

### Checklist Agentic Ops (adicionar ao promote)

- [ ] `agentic-ops.js` ≥ 1200 linhas no container
- [ ] `grep "Squad Command"` no JS em produção
- [ ] Subnav: Squad Command · Agent Management · Task Board visíveis
- [ ] Hard refresh no browser após deploy

