HANDOFF + log: C11 fechado · 4/4 sub-testes OK · proximo C12
Cenario 11 completo. 5 bugs descobertos+corrigidos durante a bateria (UI confusa, gotcha billing_contracts.updated_at, reverse transitions, lock sessao encerrada, label/badge pacote-aware). Reverse trava antecipada de pos-C13 pra ja (user hit pra valer). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+31
-8
@@ -1,15 +1,38 @@
|
|||||||
# HANDOFF — 2026-05-20 (C10 ✅ completo · próximo C11)
|
# HANDOFF — 2026-05-20 (C10 ✅ + C11 ✅ · próximo C12)
|
||||||
|
|
||||||
Documento de continuidade. **Quando voltar, comece lendo esta página até o fim.**
|
Documento de continuidade. **Quando voltar, comece lendo esta página até o fim.**
|
||||||
|
|
||||||
> **🎯 SE A FORÇA CAIR / SESSÃO PERDER CONTEXTO:** **C10 fechado** (todos
|
> **🎯 SE A FORÇA CAIR / SESSÃO PERDER CONTEXTO:** **C10 e C11 fechados**.
|
||||||
> os 5 sub-testes A/A2/B/C/C2 passaram). Próximo: **Cenário 11** (status
|
> Próximo: **Cenário 12** (antecipar pagamento). Pós C12: C13 (edit cobrada).
|
||||||
> change em pacote saldo — Carl Jung ou similar). Pós C11: C12 (antecipar
|
> Depois replicar em Rail + Clínica.
|
||||||
> pagamento) → C13 (edit cobrada). Depois replicar em Rail + Clínica.
|
|
||||||
|
|
||||||
> **🟢 C10 SALVO COMPLETO**. 3 commits: d6423da (pre-fix cancel original)
|
> **🟢 C10+C11 SALVOS**. Total 10 commits no dia. Reverse transition trava
|
||||||
> → 3caf579 (botão Agendada + popover fixes) → 753182c (lock sessão
|
> implementada (era pendência pós-C13 mas user hit pra valer durante C11
|
||||||
> encerrada + addendum doc). Working tree limpo, pronto pra C11.
|
> e priorizamos). billing_contracts gotcha (sem updated_at) documentado.
|
||||||
|
|
||||||
|
### C11 sub-test results
|
||||||
|
| # | Teste | DB validado |
|
||||||
|
|---|---|---|
|
||||||
|
| 11A | Realizada + markPaid PIX | sessions_used 0→1, record paid R$ 40 PIX |
|
||||||
|
| 11B | Falta + Descontar saldo | sessions_used 1→2, sem multa |
|
||||||
|
| 11C | Falta + Multa SEM consumir | sessions_used stays 2, multa pending R$ 30 |
|
||||||
|
| 11D | Cancelado + default_consume_on_miss=true | sessions_used 2→3, sem multa (>2h) |
|
||||||
|
|
||||||
|
### Bugs descobertos + corrigidos durante C11
|
||||||
|
- UI "Como cobrar?" com options "Já recebi" misturadas → refatorado pra "Já recebi?" radio Sim/Não + select condicional
|
||||||
|
- `billing_contracts` sem coluna `updated_at` → UPDATE falhava silently em Promise.allSettled (root cause do saldo não incrementar). Trocado pra awaits sequenciais com error handling explícito
|
||||||
|
- Reverse transitions deixavam multa órfã → dialog reverse implementado com radio "cancelar pending" + "devolver saldo" + warning pra paid
|
||||||
|
- Botão "Gerar cobrança" em sessão encerrada → bloqueado
|
||||||
|
- Lock total em cancelado/faltou: Editar sessão some, status mudanças disabled exceto Agendada (recovery)
|
||||||
|
- Label "A cobrar R$ X" em pacote saldo state=none → "Aguardando uso do pacote"
|
||||||
|
- Badge $ amber em pacote saldo state=none → suprimido
|
||||||
|
- billing_contract_id não amarrado em alguns flows → link universal antes dos blocos forward
|
||||||
|
- Reverse saldo decrementar: refresh sessions_used FRESH do DB antes do UPDATE (anti-race)
|
||||||
|
|
||||||
|
### Pendências mapeadas pós-C13
|
||||||
|
- **Popover snapshot**: `eventoSelecionado.value = ev` é snapshot. Fix: guardar ev.id, derivar via computed
|
||||||
|
- ~~Reverse transitions~~ ✓ implementado ahead of schedule
|
||||||
|
- **Cleanup teste**: Otto sessão 5364f631 leftover (não-critical)
|
||||||
|
|
||||||
### C10 sub-test results
|
### C10 sub-test results
|
||||||
| # | Teste | DB validado | Notas |
|
| # | Teste | DB validado | Notas |
|
||||||
|
|||||||
@@ -14,6 +14,48 @@ Chronological, append-only record of everything that's happened in this wiki.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [2026-05-20 16:00] session | C11 OK (A/B/C/D) + reverse trava + 5 bugs achados
|
||||||
|
Touched: none (codigo + HANDOFF; memoria project_billing_contracts_no_updated_at)
|
||||||
|
Detalhes:
|
||||||
|
|
||||||
|
CENARIO 11 (Status change pacote saldo) - 4/4 passaram com Andre Green:
|
||||||
|
- 11A: realizada + markPaid PIX (saldo 0->1, record paid R$ 40)
|
||||||
|
- 11B: falta + descontar (saldo 1->2, sem multa)
|
||||||
|
- 11C: falta + multa SEM consumir (saldo stays 2, multa pending R$ 30)
|
||||||
|
- 11D: cancelado >2h + default_consume_on_miss=true (saldo 2->3, sem multa)
|
||||||
|
|
||||||
|
ROOT CAUSE descoberto: billing_contracts NAO tem coluna updated_at.
|
||||||
|
Passar esse field em UPDATE falhava silently em Promise.allSettled
|
||||||
|
(ja documentado em memoria). Refatorado pra awaits sequenciais com
|
||||||
|
error handling explicito.
|
||||||
|
|
||||||
|
DIALOG UX (refator): bloco "Cobranca no pacote" antes tinha select
|
||||||
|
"Como cobrar?" com options "Ja recebi - PIX/Dinheiro" misturadas.
|
||||||
|
Confuso. Agora tem 2 sub-questions: "Ja recebi?" radio + select
|
||||||
|
condicional (sem prefixo ambiguo).
|
||||||
|
|
||||||
|
REVERSE TRANSITION TRAVA (antecipado pos-C13 pra C11): quando user
|
||||||
|
clica Agendada em sessao com artefatos (cobranca pending, paid,
|
||||||
|
ou saldo consumido em pacote), dialog reverse abre mostrando:
|
||||||
|
- Lista records pending + radio Cancelar/Manter
|
||||||
|
- Warning textual pra paid (sem auto-estorno)
|
||||||
|
- Radio devolver saldo se consumido
|
||||||
|
- Default: cancel + devolver (recovery flow)
|
||||||
|
|
||||||
|
Outros fixes acumulados:
|
||||||
|
- consumeSaldo amarra billing_contract_id (era omissao)
|
||||||
|
- link universal pre-forward (antes era so em consumeSaldo/generatePackageCharge)
|
||||||
|
- reverse decrement saldo: refetch FRESH antes do UPDATE (anti-race)
|
||||||
|
- label pacote saldo state=none: "Aguardando uso do pacote"
|
||||||
|
- badge $ amber suprimido em pacote saldo state=none
|
||||||
|
- lock total em sessao encerrada (Editar some, status disabled excepto Agendada)
|
||||||
|
|
||||||
|
DOC: addendum no HTML cenarios atualizado anteriormente cobre tudo.
|
||||||
|
Memorias: project_billing_contracts_no_updated_at (novo gotcha).
|
||||||
|
|
||||||
|
PROXIMO: Cenario 12 (antecipar pagamento) ou Cenario 13 (edit
|
||||||
|
cobrada). Depois replicar em Rail + Clinica.
|
||||||
|
|
||||||
## [2026-05-20 14:00] session | C10 OK (A/A2/B/C/C2) + lock sessao encerrada + addendum doc
|
## [2026-05-20 14:00] session | C10 OK (A/A2/B/C/C2) + lock sessao encerrada + addendum doc
|
||||||
Touched: none (codigo + HANDOFF + addendum HTML; memorias project_agenda_reverse_transitions e project_melissa_popover_snapshot)
|
Touched: none (codigo + HANDOFF + addendum HTML; memorias project_agenda_reverse_transitions e project_melissa_popover_snapshot)
|
||||||
Detalhes:
|
Detalhes:
|
||||||
|
|||||||
Reference in New Issue
Block a user