# Spec 043 — Sincronização Cliente: Wizard → Desk → FOSS → OpenPanel → Odoo **Criado:** 2026-07-01 **Solicitado por:** Roger **Status:** ✅ **Implementação completa (Fases 1–6 código)** — aguarda teste E2E Roger na VM122 **Prioridade:** P0 (orquestração comercial Ligbox) **Sistemas:** VM112 Wizard · VM122 Desk · VM123 FOSS/Odoo/OpenPanel --- ## Resumo Esta spec **unifica e documenta** o mapeamento de dados desde o card **«Dados da empresa e cobrança»** no wizard (VM112) até aos três painéis financeiros/hosting na VM123: 1. **FOSSBilling** — cliente + pedido + activação hosting (primeiro destino API) 2. **OpenPanel** — tipo de contrato / plano / domínio hub (via bridge ou módulo FOSS) 3. **Odoo 16** — empresa (`res.partner`) e fluxo financeiro O Desk (VM122) é o **orquestrador**: recebe `company.validated`, persiste `billing_accounts`, e expõe acção staff **«Activar conta»** que dispara a sequência documentada. **Documento mestre de campos:** [contracts/activation-field-mapping.md](./contracts/activation-field-mapping.md) --- ## Specs relacionadas (leitura obrigatória) | Spec | Relação | |------|---------| | [023](../023-billing-recurrence-desk-visibility/spec.md) | Card empresa, `company.validated`, `billing_accounts`, estados | | [024](../024-openpanel-fossbilling/spec.md) | Stack VM123, FOSS+Odoo+OpenPanel | | [024 PROVISIONING_CLIENT_CARD](../024-openpanel-fossbilling/PROVISIONING_CLIENT_CARD.md) | Campos card → FOSS → OP (site CMS) | | [028](../028-openpanel-ce-ligbox-reengineering/spec.md) | Bridge `:18087`, re-engenharia CE | | [028 foss-bridge-api](../028-openpanel-ce-ligbox-reengineering/contracts/foss-bridge-api.md) | Contrato API bridge | | [035](../035-ligbox-mail-bundles-foss-openpanel/spec.md) | Bundles mail, `manager_name`, webhook `order-activated` | | [001](../001-webhook-vm112-integration/spec.md) | Webhooks VM112 → Desk | | [004](../004-onboard-funnel-events/spec.md) | Funil onboarding | | [027](../027-desk-rbac-function-matrix/spec.md) | Quem pode activar conta | | [039](../039-ligbox-ops-authorization-catalog/spec.md) | `vm123_foss.*`, `vm123_openpanel.*`, Odoo | | [040](../040-desk-design-system-v013/spec.md) | UI staff Access Control Hub | --- ## Arquitectura ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ VM112 — Wizard / Domain Admin (onboard.ligbox.com.br) │ │ Card «Dados da empresa e cobrança» + conta admin@{domínio} │ └───────────────────────────────┬─────────────────────────────────────────┘ │ webhook company.validated (+ account.created) ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ VM122 — Ligbox Ops Desk │ │ billing_accounts · ticket [billing-validation] · UI «Activar conta» │ └───────────────────────────────┬─────────────────────────────────────────┘ │ sequência staff (Spec 043) ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ FOSSBilling :8092 Bridge :18087 Odoo :8069 (cliente+order) (OpenPanel user) (res.partner) │ │ │ └─────────────────────┴─────────────────────┘ │ ▼ Wizard provision mail-bundle (VM112 Carbonio) ``` --- ## Entregáveis desta spec | Artefacto | Path | |-----------|------| | **Mapa de campos** | [contracts/activation-field-mapping.md](./contracts/activation-field-mapping.md) | | **API Desk (activate)** | [contracts/desk-activate-account-api.md](./contracts/desk-activate-account-api.md) | | **API Wizard mail-bundle** | [contracts/mail-bundle-api.md](./contracts/mail-bundle-api.md) | | **Tasks implementação** | [tasks.md](./tasks.md) | --- ## Código de referência (VM122) | Módulo | Path | |--------|------| | Billing store | `projects/ops-desk/api/app/billing_store.py` ou `legacy-app/billing_store.py` | | Webhook ingress | `projects/ops-desk/api/app/main.py` (`company.validated`) | | FOSS client | `projects/ops-desk/api/app/vm123/foss_client.py` | | Odoo client | `projects/ops-desk/api/app/vm123/odoo_client.py` | | OpenPanel client | `projects/ops-desk/api/app/vm123/openpanel_client.py` | | UI ficha cliente | `projects/ops-desk/frontend/assets/billing-ui.js` | --- ## Regras de negócio (Roger) 1. Wizard **não cobra** no card empresa — só recolhe e valida ([023](../023-billing-recurrence-desk-visibility/spec.md)). 2. **FOSS recebe primeiro** os dados do cliente (create client + order). 3. **OpenPanel** reflecte o **tipo de serviço** (`plan_name` + metadata mail). 4. **Odoo** recebe a **empresa** para gestão financeira (`res.partner`). 5. Um **gerente** por domínio: `admin@{domínio}` + `manager_name` / `manager_email`. 6. Staff activa após revisão OPS — não automático sem RBAC ([027](../027-desk-rbac-function-matrix/spec.md)). --- *Roger · Spec 043 · documentação viva — actualizar quando campos wizard ou APIs VM123 mudarem*