# Modelos de documento

Dê ao usuário um ponto de partida sem persistir valores concretos dos dados do relatório.

[Abrir a versão HTML](https://rhizzalab.com/docs/features/templates)

## Estrutura reutilizável, não dados do negócio

Um modelo guarda a estrutura do documento, a ordem dos blocos e configurações permitidas. Valores concretos de `data` não entram no modelo; na próxima abertura, os blocos voltam a resolver os dados atuais do host.

* **Modelo: Define a composição** — Blocos, conteúdo editorial e configuração reutilizável.

* **Dados: Chegam do host** — Cliente, itens e totais válidos para esta abertura.

* **Documento: Une os dois** — Instância editável sem copiar valores de negócio para o modelo.

## Visibilidade e propriedade

* Modelos de sistema e da empresa podem servir como base compartilhada.

* O usuário pode criar uma cópia privada quando recebe `templates:create`.

* `templates:update-own` atualiza apenas modelos próprios do usuário.

* `templates:set-default` altera somente o padrão pessoal; o padrão da empresa é administrativo.

## Peça somente as ações disponíveis

| Ação no editor                    | Escopo                  |
| --------------------------------- | ----------------------- |
| Listar e aplicar modelos          | `templates:read`        |
| Salvar como novo modelo privado   | `templates:create`      |
| Criar versão de modelo próprio    | `templates:update-own`  |
| Tornar um modelo o padrão pessoal | `templates:set-default` |

A presença do escopo não garante a ação sozinha. O editor usa as permissões efetivas devolvidas no bootstrap e oculta operações que a sessão não recebeu.

## Versões evitam sobrescrita silenciosa

Salvar sobre um modelo próprio cria uma nova versão. Se outra sessão avançou antes, o SDK entrega um conflito estruturado ao host em vez de substituir o conteúdo remoto.

> **Nota: Mantenha a decisão visível**
>
> Use `onConflict` para explicar o que mudou e oferecer a recuperação compatível com o seu fluxo. Nunca descarte automaticamente a versão local.
