Pular para o conteúdo principal

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

RecursoDescrição
TemplatesCRUD e versionamento de templates
RenderizaçãoRender HTML/PDF e preview

Permissões

PermissãoDescrição
DOCUMENT_TEMPLATES_CREATECriar templates
DOCUMENT_TEMPLATES_READListar e visualizar templates
DOCUMENT_TEMPLATES_UPDATEAtualizar templates
DOCUMENT_TEMPLATES_DELETEExcluir templates (soft delete)
DOCUMENT_TEMPLATES_PUBLISHPublicar novas versões
DOCUMENT_TEMPLATES_RENDERRenderizar documentos e preview

Status do Template

StatusDescrição
DRAFTRascunho - pode ser editado livremente
PUBLISHEDPublicado - conteúdo pode ser editado para nova versão
ARCHIVEDArquivado - não pode ser renderizado

Categorias

CategoriaDescrição
CONTRACTContratos
PROPOSALPropostas comerciais
AGREEMENTAcordos e termos
RECEIPTRecibos e comprovantes
REPORTRelatórios
OTHEROutros tipos

Tipos de Variáveis

Templates suportam variáveis tipadas para validação em tempo de renderização:

TipoDescriçãoExemplo
STRINGTexto"João Silva"
NUMBERNúmero1500.50
BOOLEANBooleanotrue
DATEData (ISO string ou Date)"2024-01-28"
ARRAYLista["item1", "item2"]
OBJECTObjeto{ "key": "value" }

Eventos

O módulo emite eventos para integração com outros sistemas:

EventoDescrição
document-templates.document.renderedDocumento 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.