# 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)  
**Liberação webmail (gate):** [contracts/webmail-release-gate.md](./contracts/webmail-release-gate.md)  
**Chat bruto:** [CHAT_BRUTO_WEBMAIL_GATE_TICKETS_SPEC043_044_20260701.txt](../../chat-bruto/CHAT_BRUTO_WEBMAIL_GATE_TICKETS_SPEC043_044_20260701.txt)

---

## 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 |
| [044](../044-foss-desk-ticket-sync/spec.md) | Sync tickets OB- ↔ Desk ↔ FOSS Support |

---

## 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)).
7. **Liberação formal webmail** pelo Gerente no Painel `/admin` (`webmail_released_at`) — ver [webmail-release-gate.md](./contracts/webmail-release-gate.md).

---

## Decisões / Histórico

| Data | Decisão |
|------|---------|
| 2026-07-01 | FOSS order + mail-bundle VM112 deployados (product_id=3) |
| 2026-07-01 | Aviso Carbonio login = informativo; acção liberar no Painel Admin (UI pendente) |
| 2026-07-01 | Spec 044 tickets FOSS↔Desk documentada |

---

*Roger · Spec 043 · documentação viva — actualizar quando campos wizard ou APIs VM123 mudarem*
