ligbox-ops-platform/specs/012-abandoned-onboarding-lead/quickstart.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

97 lines
2.8 KiB
Markdown

# Quickstart — Spec 012 Onboarding → Lead
**VM122:** `10.10.10.122:8080` · **VM112:** `10.10.10.112:8090`
**Wizard:** https://onboard.ibytera.com
**Desk:** https://desk.ligbox.com.br
---
## 1. Comportamento actual (Fase A — em produção)
| Momento wizard | Webhook | Efeito Desk |
|----------------|---------|-------------|
| Valida domínio | `domain.validated` | Só evento funil |
| Aplica DNS | `dns.applied` | Só evento funil |
| **Criar conta agora** | `onboarding.started` | **Cria ticket** + backfill DNS/domínio |
| Conta criada | `account.created` | Nota no ticket + actualiza assunto |
| Infra OK | `infra.synced` | Nota |
| Fim | `onboarding.completed` | `crm_track=onboarding_completed` |
---
## 2. Teste rápido (script)
```bash
bash /opt/ligbox-ops-platform/scripts/verify-funnel-webhook.sh
```
Esperado na etapa `onboarding.started`:
```
ticket_created= True
ticket_id= <número>
```
---
## 3. Teste manual VM112 → Desk
```bash
# Simular «criar conta» (após domínio e DNS no wizard real)
curl -sf -X POST http://10.10.10.122:8080/api/v1/webhooks/onboard \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: ligbox-ops-dev-secret" \
-d '{
"event": "onboarding.started",
"domain": "teste.cliente.com",
"session_id": "manual-test-001",
"data": {
"email": "admin@teste.cliente.com",
"step": "create_account"
}
}' | python3 -m json.tool
```
Login Desk e confirmar ticket `[onboarding] teste.cliente.com — admin@teste.cliente.com`.
---
## 4. Abandono → Lead (Fase B — em produção)
Worker VM122 corre `POST /api/v1/crm/leads/sync` a cada **15 min** (`LEAD_SYNC_INTERVAL_SEC=900`).
Critério: **24h** (`ONBOARD_STALE_HOURS`) sem evento, etapa &lt; `completed`, ticket `open`/`escalated`, `crm_track=onboarding`.
```bash
# Listar leads
curl -sf -H "Authorization: Bearer $TOKEN" \
http://10.10.10.122:8080/api/v1/crm/leads | python3 -m json.tool
# Sync manual (worker / teste)
curl -sf -X POST "http://10.10.10.122:8080/api/v1/crm/leads/sync" \
-H "X-Ops-Internal-Token: $OPS_INTERNAL_TOKEN"
# Teste completo
bash /opt/ligbox-ops-platform/scripts/verify-crm-leads.sh
```
**Desk UI:** menu **Leads**, painel no dashboard, badge `lead` / `abandonado` nas sessões, filtro **Leads** em Tickets.
---
## 5. Operação manual (até Fase B)
1. Desk → **Sessões ativas** → filtrar `stale=true`
2. Abrir ticket ligado à sessão
3. Contactar cliente pelo `account_email` no payload
4. Assumir sessão (Spec 010) se precisar completar wizard
---
## 6. Ficheiros
| Componente | Path |
|------------|------|
| VM112 webhooks | `/opt/ibytera-mail-portal/backend/app/routers/onboarding.py` |
| VM122 ingress | `/opt/ligbox-ops-platform/api/app/main.py` |
| Spec | `specs/012-abandoned-onboarding-lead/spec.md` |