Document Template
O Building Block Document Template fornece funcionalidades completas para criação, gerenciamento e renderização de templates de documentos com variáveis dinâmicas (contratos, propostas, acordos, recibos, etc.).
Visão Geral
O Document Template é um módulo tenant-scoped, ou seja, requer um token com organizationId. Ele é responsável por:
- Templates - Criação e gerenciamento de templates com Handlebars
- Versionamento - Versões imutáveis publicadas para compliance
- Renderização - Geração de documentos HTML e PDF
- Histórico - Registro de todos os documentos renderizados
Base URL
https://document-templates.stg.catalisa.app
Recursos
| Recurso | Descrição |
|---|---|
| Templates | CRUD e versionamento de templates |
| Renderização | Render HTML/PDF e preview |
Permissões
| Permissão | Descrição |
|---|---|
DOCUMENT_TEMPLATES_CREATE | Criar templates |
DOCUMENT_TEMPLATES_READ | Listar e visualizar templates |
DOCUMENT_TEMPLATES_UPDATE | Atualizar templates |
DOCUMENT_TEMPLATES_DELETE | Excluir templates (soft delete) |
DOCUMENT_TEMPLATES_PUBLISH | Publicar novas versões |
DOCUMENT_TEMPLATES_RENDER | Renderizar documentos e preview |
Status do Template
| Status | Descrição |
|---|---|
DRAFT | Rascunho - pode ser editado livremente |
PUBLISHED | Publicado - conteúdo pode ser editado para nova versão |
ARCHIVED | Arquivado - não pode ser renderizado |
Categorias
| Categoria | Descrição |
|---|---|
CONTRACT | Contratos |
PROPOSAL | Propostas comerciais |
AGREEMENT | Acordos e termos |
RECEIPT | Recibos e comprovantes |
REPORT | Relatórios |
OTHER | Outros tipos |
Tipos de Variáveis
Templates suportam variáveis tipadas para validação em tempo de renderização:
| Tipo | Descrição | Exemplo |
|---|---|---|
STRING | Texto | "João Silva" |
NUMBER | Número | 1500.50 |
BOOLEAN | Booleano | true |
DATE | Data (ISO string ou Date) | "2024-01-28" |
ARRAY | Lista | ["item1", "item2"] |
OBJECT | Objeto | { "key": "value" } |
Eventos
O módulo emite eventos para integração com outros sistemas:
| Evento | Descrição |
|---|---|
document-templates.document.rendered | Documento renderizado (HTML ou PDF) |
Payload do Evento
{
"type": "document-templates.document.rendered",
"payload": {
"renderedDocumentId": "uuid",
"templateId": "uuid",
"versionNumber": 1,
"businessId": "optional-business-context"
},
"metadata": {
"timestamp": "2024-01-28T10:00:00.000Z",
"organizationId": "uuid"
}
}
Fluxo de Trabalho
┌─────────────────────────────────────────────────────────────────┐
│ CICLO DE VIDA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. CRIAR 2. EDITAR 3. PUBLICAR │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ DRAFT │ ───▶ │ DRAFT │ ───▶ │PUBLISHED│ │
│ └─────────┘ └─────────┘ └────┬────┘ │
│ │ │
│ ▼ │
│ 4. ITERAR 5. NOVA VERSÃO │
│ ┌─────────┐ ┌─────────┐ │
│ │ EDIT │ ◀─────────────────────▶│ v1 → v2 │ │
│ └─────────┘ └─────────┘ │
│ │
│ 6. RENDERIZAR │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Template + Variáveis = HTML/PDF + Histórico │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Working Draft Pattern
Após publicar um template, você ainda pode editar seu conteúdo. As edições modificam o "working draft" (registro do template), enquanto as versões publicadas permanecem imutáveis.
Fluxo: editar → publicar → nova versão criada
Isso permite iterar sem precisar arquivar e recriar templates.
Requisitos para PDF
A renderização em PDF requer o microserviço pdf-renderer (Go + wkhtmltopdf):
# Variável de ambiente
PDF_RENDERER_URL=http://pdf-renderer:3020
# Docker
docker run -p 3020:3020 catalisaio/pdf-renderer
Sem o sidecar configurado, requisições de PDF retornam erro de validação.