Vista Report
Visão geral
A vista Report gera um documento formatado — HTML ou PDF — a partir dos dados de uma feature. É construída de duas formas independentes: descreva-o ao assistente de AI e este redige um artefacto HTML autónomo, ou desenhe-o manualmente num construtor de PDF por blocos. Um relatório pode correr sobre uma coleção inteira (por exemplo, uma lista de preços) ou estar associado a um único registo (por exemplo, uma fatura aberta a partir de uma linha).
Use-a para documentos imprimíveis ou exportáveis — faturas, certificados, listas de preços, contratos — qualquer coisa que precise de um layout fixo em vez da grelha flexível de uma Tabela ou de um Dashboard.
Os dois tipos de relatório
Uma vista de relatório é HTML ou Nativa (PDF), definida através do menu pendente Tipo no separador Conteúdo da configuração da vista.
| Tipo | Construído com | Renderizado como | Melhor para |
|---|---|---|---|
| HTML (AI) (predefinição) | Conversa com o assistente de AI, ou HTML editado manualmente | Webview isolada e offline dentro da vista | Documentos de formato livre em que a AI pode decidir tanto a estrutura como o estilo |
| PDF (modelo) | Construtor de blocos (tela A4/Letter) | PDF gerado, pré-visualizado em linha | Documentos estruturados com layout previsível — faturas, relatórios tabulares |
Trocar o Tipo não descarta o conteúdo do outro tipo — o artefacto HTML/contrato de dados e o modelo de PDF são guardados de forma independente, pelo que voltar atrás restaura o que lá estava antes.
Construir com AI (tipo HTML)
A partir do estado vazio, ou do ícone de AI na barra de ferramentas, abra Construir com AI / Editar com IA. Isto abre um assistente integrado na vista:
- Descreva o relatório no chat (por exemplo, "tabela de projetos com filtro por estado e total no rodapé").
- O assistente gera um documento HTML autónomo mais um contrato de dados — as definições de consulta de que precisa desta feature (e de outras features no workspace) — e mostra uma pré-visualização ao vivo renderizada com dados reais e atuais.
- Continue a iterar na mesma conversa; cada resposta substitui o rascunho anterior.
- Guardar persiste o rascunho na vista; Descartar descarta-o (pede confirmação se houver trabalho por guardar). Um guardar pode ser anulado através da ação Anular na notificação de confirmação.
O HTML gerado é autónomo (CSS/JS em linha, sem pedidos externos) e lê os seus dados a partir de window.OUTDO_DATA, que é injetado de raiz a partir dos dados locais sempre que a vista é aberta — sem necessidade de regeneração para refletir novas linhas. Uma Content-Security-Policy restritiva bloqueia qualquer acesso de rede a partir de dentro do documento, e não há escritas do artefacto de volta para o OutDo.
Também pode saltar a AI e editar o artefacto e o contrato de dados diretamente — ver Configuração manual de HTML.
Construir com o construtor de blocos (tipo PDF)
O Construtor de blocos abre uma tela A4/Letter com três regiões: cabeçalho (repete em cada página), corpo (flui e pagina), e rodapé (repete, com números de página).
Tipos de bloco disponíveis:
| Bloco | Finalidade |
|---|---|
| Texto | Texto estático ou com modelo ({{...}} marcadores), opcionalmente estilizado como título |
| Variável | Uma única expressão renderizada como etiqueta: valor (procuras, agregados, formatadores) |
| Tabela | Uma tabela de dados — escolha colunas, largura/alinhamento por coluna, soma opcional por coluna, riscas zebra, linha de cabeçalho preenchida |
| Separador | Uma linha horizontal |
| Quebra de página | Força uma quebra de página |
| Repetição | Mestre-detalhe: itera linhas de outra feature (com um filtro opcional por linha), renderizando um sub-layout filho para cada uma |
| Condicional | Mostra/oculta o seu conteúdo consoante uma condição |
| Imagem | Uma imagem estática (por exemplo, um logótipo) |
Os blocos assentam numa grelha (número de colunas configurável) e podem ocupar várias colunas/linhas dentro das bandas de cabeçalho/rodapé; os blocos do corpo empilham-se em linhas ordenadas.
A configuração de página no construtor só expõe o tamanho da página (A4/Letter) e a orientação (retrato/paisagem) — as margens e a resolução da grelha usam predefinições fixas. O modo Dados é Lista (um documento, em estilo de tabela, sobre todas as linhas correspondentes) ou Individual (um documento para um registo: a linha associada no âmbito Por registo, ou a primeira linha do conjunto filtrado no âmbito Coleção). Um painel de Validação assinala problemas no modelo.
O modelo também tem o seu próprio filtro de conjunto de dados, independente dos filtros de admin da vista — é ele que decide que linhas alimentam o documento.
Assim que existe um modelo, o relatório é renderizado em linha como uma pré-visualização de PDF, gerada a pedido através de Gerar PDF / Atualizar PDF (não a cada alteração de dados — edite o modelo e depois atualize). A partir daí: Transferir guarda o ficheiro em disco e Imprimir abre a caixa de diálogo de impressão do sistema. Editar blocos reabre o construtor no mesmo modelo.
Âmbito: coleção vs registo
Definido através de Âmbito no separador Conteúdo:
| Âmbito | Comportamento |
|---|---|
| Coleção (predefinição) | O relatório corre sobre o conjunto completo (filtrado) de linhas da vista |
| Por registo | O relatório está associado exatamente a uma linha. Os modelos HTML leem-na via $current.<coluna>. Os modelos PDF expõem-na como record.<campo> — estável em qualquer parte do documento, incluindo dentro de blocos de repetição — enquanto row.<campo> é a linha atual: o próprio registo associado fora de um bloco de repetição, ou cada linha filha iterada dentro de um. Normalmente é aberto ao incorporar a vista de relatório dentro de uma Vista Ligada num formulário, que fornece a linha associada |
Um relatório com âmbito de registo aberto sem uma linha associada mostra um placeholder "Documento por registo" a pedir que o abra a partir de uma linha. Na própria pré-visualização do configurador de vistas, a primeira linha da feature é usada como dados de exemplo em vez desse placeholder.
Filtros
Duas camadas independentes, tal como em Tabela/Kanban:
- Filtros Base (separador Filtros, admin) — um grupo de filtros aplicado automaticamente antes de o relatório ser renderizado, usando o mesmo construtor de regras do resto do motor.
- Filtros (barra de ferramentas, por utilizador) — um filtro adicional que cada utilizador aplica por cima dos filtros do admin, persistido por utilizador. Apenas no âmbito de coleção.
Facetas
No âmbito de coleção, um painel de facetas à esquerda (alternado com o ícone de filtro; Escape fecha-o) permite restringir os dados por valores discretos de coluna, espelhando as facetas de Tabela/Kanban. Tipos de coluna suportados: texto, seleção, seleção ligada, caixa de verificação, número, data, e estado. As colunas de data têm uma navegação Ano → Mês → Dia com contagens por valor disponíveis. As seleções de facetas combinam-se com os filtros de admin e de utilizador.
Configuração manual de HTML
Para o tipo HTML, o separador Conteúdo também expõe os campos em bruto onde a AI escreve, para edição manual ou para colar um artefacto vindo de outro lugar:
- Artefacto HTML (self-contained) — o documento HTML completo. Inclua um
<head>— é usado como ponto de injeção para os dados e o CSS de tema. - Data contract (JSON) — declara as consultas nomeadas que o documento lê, por exemplo
{"queries":[{"name":"...","feature":"$f_<feature>"}]}. Cada consulta pode restringir colunas, aplicar filtros de linha, e limitar o número de linhas comlimit.
Barra de ferramentas
| Ação | Disponibilidade |
|---|---|
| Imprimir / PDF | Apenas no tipo HTML, com conteúdo, apenas desktop/mobile (não disponível na web) — abre o documento injetado no navegador do sistema para impressão (Cmd/Ctrl+P) |
| Editar com IA | Tipo HTML, quando ainda não está em modo de edição |
| Filtros | Apenas no âmbito de coleção — abre a caixa de diálogo de filtro por utilizador; mostra um distintivo com a contagem ativa |
| Configurar | Abre a caixa de diálogo de configuração completa (separadores Filtros + Conteúdo) |
Sugestões
- Um relatório não configurado oferece três pontos de entrada a partir do seu estado vazio: Construtor de blocos, Construir com AI, e Configuração manual — escolha o que se adequar.
- As facetas e o painel de filtro por utilizador só se aplicam no âmbito de coleção; um relatório com âmbito de registo mostra sempre apenas a linha associada.
- A pré-visualização do PDF não se atualiza ao vivo — depois de editar o modelo, clique em Atualizar PDF para ver a alteração.
- Uma configuração guardada que falhe ao ser processada mostra um placeholder "Configuração inválida" — reabra Configurar e guarde novamente para recuperar.