diff --git a/Obsidian/Brain/log.md b/Obsidian/Brain/log.md index c313dbc..a7303a3 100644 --- a/Obsidian/Brain/log.md +++ b/Obsidian/Brain/log.md @@ -1429,3 +1429,51 @@ closure. Pendente: Fase C (adapter Rail) + Fase D (adapter Clinica) + doc ajuda. + +## [2026-05-21 deep night] session | agenda Fases C + D — Rail+Clinica adotam billing core +Touched: none + +Replicacao Rail/Clinica fechada via composable reusavel +useAgendaStatusChange (Tipo A wrapper sobre agendaBilling.service). + +3 commits: + +1) Fase C (034c2c0): useAgendaStatusChange composable novo + + AgendaTerapeutaPage onUpdateSeriesEvent refatorado pra usar + applyStatusChange (load context + dialog se preciso + apply + decisoes). AgendaStatusChangeConfirmDialog plugado no template. + + Antes: Rail fazia so update(id, { status }) cru. Zero das + features C7-C13. + + Depois: Rail tem feature parity com Melissa pra status change. + Multa por falta, taxa cancelamento tardio, consumir saldo, + gerar cobranca pacote saldo, reverse transition trava. + +2) Fase D (6807b44): AgendaClinicaPage espelha Fase C usando o + mesmo composable. Diferencas adaptadas (updateClinic + createClinic + recebem tenantId arg explicito). + +3) Pendente residual: + - Indicadores visuais (3 canais: barra esquerda verde / badge $ + amber / neutro) ainda nao replicados no Rail/Clinica — sao + custom event classNames do FullCalendar, requerem _payment + StateMap. + - Antecipar/Revogar/Trocar metodo no popover do Rail — Rail + nao tem popover separado, usa AgendaEventDialog direto; + precisa refactor maior pra acomodar. + - Doc ajuda completa. + +ESTADO: agenda Fase 4 residual 70% fechada. C7-C13 core flow +(status change com billing) agora cobre os 3 layouts. UI fina +(popover antecipar, indicadores visuais) fica pra iter incremental +sob demanda. + +TOTAL DA SESSAO (24/05 - 25/05, ~24 commits): +- CFP #6/#7 (Compliance Fase 1.2 ✅) +- #14 Recibo profissional PDF +- §1.3 UX 3/4 (#10 #11 #13) +- C12 UX iter (Trocar metodo + filtro cancelled) +- Agenda decomposicao A+B1+B2: -991L em useMelissaAgenda (~33%) +- Agenda Fases C+D: Rail+Clinica adotam billing core +- useAgendaStatusChange composable novo diff --git a/development/02-auditoria/PADRONIZACAO.md b/development/02-auditoria/PADRONIZACAO.md index 7ec84cf..73c26e3 100644 --- a/development/02-auditoria/PADRONIZACAO.md +++ b/development/02-auditoria/PADRONIZACAO.md @@ -123,13 +123,22 @@ Do `project_graphify_findings_20260504`: - [ ] E2E Playwright crítico (#16) - [ ] Sentry (#18) -### Fase 4 — Agenda residual (por último) +### Fase 4 — Agenda residual -- [ ] Popover snapshot stale → `ev.id` + computed -- [ ] Reverse transition confirm dialogs (realizado paid, faltou multa, pacote saldo) -- [ ] Replicação Rail (AgendaTerapeutaPage) + Clínica (AgendaClinicaPage) -- [ ] C12 antecipar — iterar UX -- [ ] Doc de ajuda completa +- [x] **Popover snapshot stale** (commit `f83315b` durante C11) — watch em `MelissaLayout` cobre virtual→materializada. +- [x] **Reverse transition confirm dialogs** (commit `5684297` durante C11) — `ctx.reverseArtifacts` + dialog. +- [x] **Decomposição agenda (Fases A+B1+B2 · 2026-05-21)** — `useMelissaAgenda.js` saiu de 3033L → 2042L (-991L, ~33%). 3 utils + 1 service novo (`agendaBilling.service`). + - Fase A: `features/agenda/utils/{eventoTipo,dbFields,timeHelpers,colors}.js` + - Fase B1 (commit `e7e3d1b`): service ganha `computeSeriePrice`, `generateOccurrenceDates`, `loadStatusChangeContext`, `needsStatusConfirmDialog`. + - Fase B2 (commit `049dd91`): service ganha `applyStatusDecisions`, `createPackageContract`, `materializeAndChargePerSession`. +- [x] **Replicação Rail + Clínica (Fases C+D · 2026-05-21)** — + - Composable novo `useAgendaStatusChange` (Tipo A wrapper) reusável em qualquer page. + - Fase C (commit `034c2c0`): `AgendaTerapeutaPage.onUpdateSeriesEvent` refatorado + `AgendaStatusChangeConfirmDialog` plugado. Antes era `update(id, {status})` cru; agora cobre multa + pacote saldo + reverse. + - Fase D (commit `6807b44`): `AgendaClinicaPage` espelha Fase C com adaptações (`updateClinic`+`createClinic` recebem `tenantId` arg). +- [x] **C12 antecipar UX iter** (commits `9c518a2` + `b7f3c23`) — "Trocar método" pattern (UPDATE em vez de cancel cycle) + filtro cancelled no dialog Lançamentos. +- [ ] **Indicadores visuais 3 canais** (barra esquerda verde / badge $ amber / neutro) — replicar no Rail/Clínica. Custom event classNames do FullCalendar, requer `_paymentStateMap` bulk-load igual ao Melissa. +- [ ] **Popover Rail antecipar/revogar/trocar método** — Rail não tem popover separado (usa AgendaEventDialog direto), precisa refactor maior pra acomodar. +- [ ] **Doc de ajuda completa** — user enviará prompt específico. ---