obsidian-vault/ligbox-ops-platform/specs/012-abandoned-onboarding-lead/quickstart.md
2026-06-19 17:26:42 +00:00

2.8 KiB

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 /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

# 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.

# 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