97 lines
2.8 KiB
Markdown
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 < `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` |
|