diff --git a/Obsidian/Brain/log.md b/Obsidian/Brain/log.md index d9b34d7..63c4b19 100644 --- a/Obsidian/Brain/log.md +++ b/Obsidian/Brain/log.md @@ -1232,3 +1232,53 @@ DESIGN_ASAAS_GATEWAY.md completo. 7 arquivos novos: 2 migrations (tables+RLS) + ## [2026-05-21 morning] session | Fase 3 — Compliance CFP #5/#8/#9 Touched: none 2 migrations (profiles registration + specialties+joinM:N+RLS) + 1 seed (33 specialties) + 1 service (specialtiesService.js). #8 nome social ja estava integrado. #6 consent forms e #7 assinatura adiados — schemas (document_templates+document_signatures) existem, falta UI workflow. + +## [2026-05-21 afternoon] session | Compliance CFP #6 + #7 fechados +Touched: none (durable em development/02-auditoria/PADRONIZACAO.md + memoria padronizacao_sweep) + +Fechou Fase 1.2 Compliance basico BR do ROADMAP. 5 commits tematicos. + +#6 (consent forms) — biblioteca de templates LGPD-compliant: +- Migration 20260521000005 estende CHECK constraint de document_templates.tipo + com 'termo_lgpd' + 'autorizacao_gravacao' +- Seed seed_060 insere 2 templates globais novos (Consentimento LGPD com + Art. 18 direitos do titular + Autorizacao para Gravacao de Sessao) + + UPDATE no tcle_online amend cláusula LGPD explicita +- Biblioteca completa pos-amend: TCLE, tcle_online (telehealth), + autorizacao_menor (TCLE menores), termo_sigilo, termo_lgpd, autorizacao_ + gravacao + 9 outros tipos existentes + +#7 (assinatura eletronica no portal) — fluxo end-to-end: +- Migration 20260521000006: 3 RPCs (sign_document_by_signature_id + + sign_document_by_token + get_signable_document_by_token). IP/UA + capturados SERVER-SIDE via inet_client_addr() e current_setting + ('request.headers') — anti-spoof. Hash SHA-256 vem do cliente + pra integridade +- Migration 20260521000007: RPC list_my_signatures que cruza auth.uid() + por 3 caminhos (signatario_id, signatario_email, patient.user_id) +- DocumentSignatures.service ganha 4 wrappers: signByPortal, + signByToken, getSignableDocumentByToken, listMySignatures +- useDocumentSignatures composable novo (Tipo A blueprint) +- PortalDocumentos.vue (nova) — lista pendencias do paciente logado + com KPIs + filtro + botao "Assinar agora" que aponta pra share link +- portal.menu.js ganha item "Documentos > Para assinar" +- SharedDocumentPage.vue estendida: painel azul abaixo do preview + com aviso LGPD/CFP + checkbox aceite + selecao multi-signatario + + botoes Assinar/Recusar com loading + computa SHA-256 do PDF + baixado antes do sign +- DocumentSignatureDialog (terapeuta-side, ja existia) ganha + checkbox "Gerar link publico para assinatura" (default ON) + + select validade (24h/3d/7d/30d) + bloco emerald com URL + copy + +Fluxo end-to-end: terapeuta cria signature requests + share_link +no dialog -> copia URL -> envia via WA/email -> paciente abre +/shared/document/:token -> visualiza doc -> aceite -> assinatura +registrada via RPC sign_document_by_token (IP/UA/timestamp/hash +gravados server-side em document_signatures). + +Pos-MVP nice-to-have: notificacao automatica do paciente quando +signature criada (depende de Modulo 6 notifications WA/email +channel factory). Por ora, terapeuta envia link manualmente. + +PROXIMO: outras 5 secoes do ROADMAP Fase 1 (Asaas Fase B bloqueada, +UX §1.3, Fiscal §1.4, Qualidade §1.5). diff --git a/development/02-auditoria/PADRONIZACAO.md b/development/02-auditoria/PADRONIZACAO.md index c19f372..5476a5f 100644 --- a/development/02-auditoria/PADRONIZACAO.md +++ b/development/02-auditoria/PADRONIZACAO.md @@ -107,12 +107,12 @@ Do `project_graphify_findings_20260504`: ### Fase 3 — Gaps de MVP (Fase 1 do ROADMAP) - [🟡] **Gateway Asaas (Fase A foundation 2026-05-21)** — Design doc + 2 migrations (tables + RLS) + client service + 3 Edge Function stubs (create-payment-record, cancel-payment, sync-payment). Schema: `asaas_customers`, `asaas_payments`, `asaas_webhook_events` + 5 colunas em `payment_settings`. Fase B (implementação real) depende de credenciais + decisão modelo negócio (A/B/C). Ver `development/02-auditoria/DESIGN_ASAAS_GATEWAY.md`. -- [🟡] **Compliance CFP (#5/#8/#9 done · #6/#7 deferred · 2026-05-21)** — +- [x] **Compliance CFP (#5/#6/#7/#8/#9 todos done · 2026-05-21)** — - #5 (registro profissional): migration `20260521000003_profiles_professional_registration.sql` — adiciona `professional_registration_type` (CHECK 8 conselhos) + `_number` + `_uf`. + - #6 (consent forms editáveis): migration `20260521000005_document_templates_consent_types.sql` estende CHECK com `termo_lgpd` + `autorizacao_gravacao`. `seed_060_consent_forms_extra.sql` insere 2 templates novos (LGPD + Gravação) + UPDATE no `tcle_online` adicionando cláusula LGPD. Biblioteca completa: TCLE base, tcle_online (telehealth), autorizacao_menor, termo_sigilo, termo_lgpd, autorizacao_gravacao + UI já existente (`DocumentTemplatesPage` + `DocumentTemplateEditor`). + - #7 (assinatura eletrônica no portal): 2 migrations RPC — `20260521000006` cria `sign_document_by_signature_id` + `sign_document_by_token` + `get_signable_document_by_token` (IP/UA capturados server-side via `inet_client_addr()` + `current_setting('request.headers')`); `20260521000007` cria `list_my_signatures` (cruzamento auth.uid() por 3 caminhos). `DocumentSignatures.service` estendido. `useDocumentSignatures` composable novo. `PortalDocumentos.vue` lista pendências do paciente logado. `SharedDocumentPage.vue` estendida com painel azul de assinatura (aviso LGPD + checkbox aceite + Assinar/Recusar). `DocumentSignatureDialog` (terapeuta-side, já existia) ganha checkbox "Gerar link público" + select de validade + bloco com URL gerado/copy. - #8 (nome social): JÁ INTEGRADO — `patients.nome_social` schema existia + UI em 7 arquivos. - #9 (especialidades): `20260521000004_specialties.sql` (tabela + profile_specialties M:N + RLS) + `seed_050_specialties.sql` (33 specialties) + `src/services/specialtiesService.js`. - - **#6 consent forms DEFERRED**: schema `document_templates` existe; falta seed + UI editor + workflow. - - **#7 assinatura DEFERRED**: schema `document_signatures` existe com status flow completo; falta portal UI pra paciente. - [ ] E2E Playwright crítico (#16) - [ ] Sentry (#18)