-- Importacao da doc da pagina de Templates de documentos (Fase 2) -- Gerado a partir de development/saas-docs/04-documentos-templates-melissa.json BEGIN; DO $IMPORT$ DECLARE v_doc_id uuid; BEGIN INSERT INTO public.saas_docs ( titulo, conteudo, categoria, exibir_no_faq, tipo_acesso, pagina_path, ordem, ativo, medias ) VALUES ( 'Templates de documentos', $HTML$

Templates de documentos

A página Templates de documentos (acessível pelo menu Prontuários → Templates de documentos, ou diretamente em /melissa/documentos-templates) é onde você gerencia os modelos usados pra gerar atestados, declarações, recibos, laudos e outros documentos clínicos.

1. Globais vs Tenant (Seus templates)

A lista é dividida em 2 grupos:

Todos os templates ativos do tenant (globais + seus) ficam disponíveis na hora de gerar um documento pro paciente.

2. Lista de templates

Cards em grid mostrando: nome, tipo, descrição, badge "padrão" pros globais. No card de cada template do tenant há um menu de 3 pontos com: Duplicar, Editar, Desativar. Pros globais, só Duplicar (e click no card abre a Preview).

3. Preview de template global (read-only)

Click num template padrão abre a Preview — iframe sandbox renderizando o HTML completo (cabeçalho + corpo + rodapé) com estilos de A4 simulando o PDF final. Header tem botão Duplicar pra você levar pros seus templates.

4. Criar novo template

Botão + Novo template abre o editor em modo "create". Campos:

5. Editor rich-text + variáveis

Cada bloco (cabeçalho/corpo/rodapé) tem editor WYSIWYG com formatação, listas, tabelas e inserção de imagens. Ao clicar no botão de variáveis, abre um menu com todas as variáveis disponíveis. Click numa insere {{nome_da_variavel}} no cursor.

💡 Variáveis disponíveis: {{paciente_nome}}, {{paciente_cpf}}, {{paciente_rg}}, {{paciente_email}}, {{terapeuta_nome}}, {{terapeuta_registro}} (CRP 12345/SP formatado), {{terapeuta_telefone}}, {{clinica_nome}}, {{clinica_cnpj}}, {{data_atual}}, {{data_atual_extenso}}, e — se gerado a partir de sessão — {{valor}}, {{valor_extenso}}, {{data_sessao}}. Lista completa no dropdown do editor.

6. Mobile (drawer pros templates)

Em telas <1024px a lista vira um drawer com botão "Templates" no header. Click num item fecha o drawer e mostra o preview/editor ocupando a tela toda.

7. Duplicar

Duplicar copia o template (incluindo cabeçalho, corpo, rodapé e variáveis) pra Seus templates com sufixo "(cópia)" no nome. Você edita à vontade depois.

8. Desativar (soft-delete)

Templates do tenant podem ser desativados (não excluídos). Ficam marcados com ativo = false e somem da lista padrão e do dropdown de geração — mas o registro permanece no banco, e documentos antigos gerados a partir desse template continuam acessíveis. Pra reativar, marque "incluir desativados" no filtro (futuro — atualmente só via DB).

9. Tipos de template

Cada template tem um tipo. O tipo determina automaticamente qual categoria o documento gerado terá no prontuário do paciente:

⚠️ Notas pro desenvolvedor

O componente MelissaDocumentosTemplates.vue reusa useDocumentTemplates + DocumentTemplateEditor. A lista de tipos vem do composable (TIPOS_TEMPLATE). O mapeamento tipo de template → tipo do documento gerado vive em DocumentGenerate.service.js (TEMPLATE_TYPE_TO_DOC_TYPE). RLS no banco: templates globais (is_global = true) tem leitura aberta; templates do tenant respeitam tenant_id.

$HTML$, 'Documentos', true, 'usuario', '/melissa/documentos-templates', 4, true, '[{"tipo": "imagem", "url": ""}]'::jsonb ) RETURNING id INTO v_doc_id; INSERT INTO public.saas_faq_itens (doc_id, pergunta, resposta, ordem, ativo) VALUES (v_doc_id, 'Pra que serve a página de Templates?', $FAQ$Pra você gerenciar os modelos que serão usados na hora de gerar atestados, declarações, recibos, laudos e outros documentos clínicos. Cada template tem cabeçalho, corpo e rodapé com variáveis interpoladas (nome do paciente, CRP, data, etc) — quando você usa o botão Gerar num prontuário, é um desses templates que está sendo aplicado.$FAQ$, 0, true), (v_doc_id, 'Por que não consigo editar os templates padrão (com badge "padrão")?', $FAQ$Templates marcados como globais (badge azul "padrão") vêm pré-instalados com o sistema e são compartilhados entre todos os tenants. Não dá pra editar pra preservar a versão de referência. Pra personalizar um, click em Duplicar — uma cópia vai pra Seus templates e ali você edita à vontade.$FAQ$, 1, true), (v_doc_id, 'Como uso uma variável no template?', $FAQ$No editor (cabeçalho, corpo ou rodapé), posicione o cursor onde quer a variável e clique no botão de variáveis na barra de ferramentas. Um menu lista todas as variáveis disponíveis agrupadas por categoria. Click numa variável insere {{nome_da_variavel}} no cursor. Na hora de gerar o documento, esse placeholder é substituído pelo valor real.$FAQ$, 2, true), (v_doc_id, 'Quais variáveis estão disponíveis?', $FAQ$Agrupadas por categoria — Paciente: nome, CPF, RG, data nascimento, email, telefone, endereço. Terapeuta: nome, email, telefone, registro profissional (formatado tipo "CRP 12345/SP"), tipo/número/UF do registro separados. Clínica: nome, endereço, telefone, CNPJ. Sessão: data, hora, valor, valor por extenso, forma de pagamento, modalidade. Geral: data atual, data atual por extenso. Lista completa visível no menu de variáveis do editor.$FAQ$, 3, true), (v_doc_id, 'Posso recuperar um template que eu desativei?', $FAQ$Sim, mas hoje só via banco de dados (administrador). Desativar é soft-delete: o template ganha ativo = false e some da lista. Documentos antigos gerados com ele continuam acessíveis. Em versões futuras teremos um filtro "mostrar desativados" pra reativar via UI.$FAQ$, 4, true), (v_doc_id, 'Como duplico um template padrão pra personalizar?', $FAQ$Click no card do template padrão pra abrir a Preview. No header da preview tem um botão Duplicar. Confirme — a cópia aparece em Seus templates com sufixo "(cópia)" no nome. Em seguida click em Editar nessa cópia pra ajustar texto, variáveis, cabeçalho, rodapé.$FAQ$, 5, true), (v_doc_id, 'Qual a diferença prática entre template Global e do Tenant?', $FAQ$Globais são compartilhados entre todos os tenants (vêm com o sistema) e são read-only. Templates do tenant pertencem só à sua clínica/conta e são editáveis. Ambos aparecem juntos na hora de gerar um documento — você não precisa duplicar pra usar um global, só pra personalizar. Se um global atende, use direto.$FAQ$, 6, true), (v_doc_id, 'Posso usar imagens no template (logo da clínica, assinatura digitalizada)?', $FAQ$Sim. O editor aceita inserção de imagens via toolbar. Recomendado: PNG ou JPG com tamanho moderado (logo até 200x80px, assinatura até 300x120px). Imagens muito grandes inflam o PDF gerado. Pra incluir o logo da clínica, prefira colocar no cabeçalho — assim aparece no topo de toda página do PDF.$FAQ$, 7, true), (v_doc_id, 'O cabeçalho e rodapé aparecem em todas as páginas do PDF?', $FAQ$Sim. O renderizador usa CSS @page com cabeçalho fixo no topo e rodapé fixo no rodapé de cada página gerada. Documentos curtos (1 página) você não percebe; documentos longos (laudos extensos) repetem cabeçalho/rodapé automaticamente. Útil pra manter identificação da clínica em todas as folhas.$FAQ$, 8, true), (v_doc_id, 'Como sei se um template tem variável obrigatória?', $FAQ$Hoje não há marcação "obrigatória" — todas as variáveis declaradas no template aparecem como editáveis na hora de gerar. Se uma vier vazia (porque não cadastrou no perfil/paciente/etc), o sistema mostra um hint embaixo do campo dizendo onde cadastrar (ex: "Perfil → Registro Profissional"). Você pode gerar mesmo com vazias — o placeholder fica como {{variavel}} no PDF, mas isso quase nunca é desejado.$FAQ$, 9, true), (v_doc_id, 'Tem limite de templates por tenant?', $FAQ$Não há limite hard no banco. Em planos free pode haver limite por contrato (verifique seu plano em Configurações → Plano). Recomendado manter o conjunto enxuto (10-20 templates) pra não poluir o dropdown na hora de gerar — se você não usa, desative.$FAQ$, 10, true), (v_doc_id, 'Os templates são compartilhados entre os terapeutas do mesmo tenant?', $FAQ$Sim. Todos os templates do tenant ficam disponíveis pra todos os usuários ativos do mesmo tenant (clínica). Quem cria/edita pode ser qualquer um com permissão de edição — não há "templates privados por usuário" no momento. Se precisar isolar templates por terapeuta, organize por nome (ex: "Atestado · Dra. Ana").$FAQ$, 11, true); RAISE NOTICE 'Doc criada: id=%, faq_itens=12', v_doc_id; END; $IMPORT$; COMMIT;