43 lines
1.8 KiB
Markdown
43 lines
1.8 KiB
Markdown
# ClientFlow v4.2 — revisão operacional e UI
|
|
|
|
Esta revisão mantém a arquitetura da v4.2, mas corrige pontos de estabilidade e torna a UI mais operacional.
|
|
|
|
## Correções aplicadas
|
|
|
|
- `OUTBOX_DRY_RUN=true` deixou de marcar itens como `sent`; agora passa o item para `dry_run`.
|
|
- Integrações com `*_OUTBOX_ENABLED=false` deixam de ficar apenas em `skipped` silencioso; agora ficam `blocked` com erro claro.
|
|
- A idempotência de `jasmin.create_quotation` passou a ser determinística por oportunidade: `jasmin:quotation:{opportunity_id}`.
|
|
- `integration_outbox` ganhou estados visíveis e reprocessáveis: `pending`, `processing`, `sent`, `failed`, `blocked`, `dry_run`, `ignored`, `cancelled`.
|
|
- O schema base passa a garantir colunas de controlo da outbox (`locked_at`, `lock_owner`, `ignored_at`) mesmo em instalações novas.
|
|
- Webhooks Chatwoot exigem `CLIENTFLOW_WEBHOOK_SECRET` em `ENV=prod`, `production` ou `staging`.
|
|
- Admin UI e API interna podem ser protegidas com `CLIENTFLOW_ADMIN_TOKEN`.
|
|
|
|
## Melhorias UI
|
|
|
|
- Página da oportunidade ganhou painel **Integrações da oportunidade** com contadores:
|
|
- pendentes;
|
|
- falhadas;
|
|
- bloqueadas;
|
|
- dry-run.
|
|
- A oportunidade passa a mostrar ações Jasmin/Packlink/Chatwoot/Mautic ligadas à oportunidade, com último erro e reprocessamento.
|
|
- `/outbox` ganhou filtros para os novos estados operacionais.
|
|
- Badges visuais foram atualizados para `processing`, `blocked`, `dry_run` e `cancelled`.
|
|
|
|
## Validação
|
|
|
|
Executado:
|
|
|
|
```bash
|
|
python -m compileall app scripts tests
|
|
pytest -q
|
|
```
|
|
|
|
Resultado: `12 passed`.
|
|
|
|
## Ainda recomendado para próxima ronda
|
|
|
|
- Substituir o token simples por login/sessão + CSRF nos POSTs.
|
|
- Refatorar `admin_dashboard.py`, que continua demasiado grande.
|
|
- Confirmar endpoints reais de PDF Jasmin no tenant de produção.
|
|
- Criar testes funcionais com Postgres de teste e mocks para Jasmin/Packlink.
|