report
Report
Relatório autónomo: um documento HTML escrito pela IA (ou um template de PDF) desenhado sobre dados ao vivo, sem rede.
- Kind:
view - Key:
report - Categoria:
relatório - Envelope: lista de um só elemento (a config vive em
config[0])
Envelope de um só elemento
View.config é uma lista com um único elemento: a configuração vive em
config[0], não em config. Uma config escrita como mapa cru é lida de qualquer
maneira, mas entra nos relatórios como desvio de envelope.
Campos
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
kind | enumeration | não | "html" | HTML autónomo numa webview isolada, ou PDF desenhado pelo motor de relatórios a partir do template. | - |
scope | enumeration | não | "collection" | O relatório é do conjunto de linhas, ou de UMA linha (que fica disponível como current). | - |
title | string | não | "" | Título do relatório. | - |
artifact | string | não | "" | O documento HTML autónomo (CSS e JS embutidos, sem rede), com os tokens que o runtime substitui ao abrir. | expressões {{record.coluna}} |
emailBody | string | não | - | Variante estática para email (CSS embutido, sem JS). A app escreve-a a partir do rascunho da IA, mas nenhum consumidor a lê. | expressões {{record.coluna}} |
dataContract | map | não | {} | Que dados do OutDo são injetados a cada abertura: uma consulta por conjunto de linhas, mais as variáveis. | - |
template | json | não | - | O JSON do template de PDF (página, cabeçalho, corpo, rodapé e blocos) quando o tipo é native. | expressões {{record.coluna}} |
filterGroup | map | não | - | Grupo de filtros aplicado às linhas da vista. | - |
facetPanelState | json | não | - | Estado do painel de filtros facetados, por utilizador. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
dataContract
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
queries | list de map | não | [] | As consultas, uma por chave de dados. | - |
variables | json | não | {} | Variáveis passadas ao documento: nome → valor. Dados de utilizador. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
dataContract.queries[]
Cada elemento de dataContract.queries é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
name | string | sim | - | Chave sob a qual as linhas aparecem no documento. | - |
feature | string | sim | - | Feature de onde saem as linhas: id, nome, ou a referência simbólica que a IA escreve. | feature (uuid ou nome) |
columns | list de string | não | [] | Colunas trazidas, POR NOME; vazio = todas. Só sai no JSON quando não está vazia. | - |
filter | list de string | não | [] | Filtros de linha na forma campo:operador:valor (a mesma sintaxe das ferramentas de leitura da IA). | - |
limit | integer | não | - | Máximo de linhas trazidas. | - |
filterGroup
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
combinator | enumeration | não | "and" | Como se combinam as regras do grupo: and exige todas, or basta uma. | - |
rules | list de map | não | - | As regras do grupo. | - |
groups | list de map | não | - | Subgrupos aninhados, com a mesma forma. | - |
filterGroup.rules[]
Cada elemento de filterGroup.rules é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
id | string | não | - | Identificador da regra, gerado pela app. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
columnName | string | não | - | Coluna desta tabela, POR NOME. | coluna (nome) |
operator | string | não | - | Operador da comparação. | - |
value | string | não | - | Valor da comparação: dado de utilizador. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
secondValue | string | não | - | Segundo valor, usado pelos operadores de intervalo. Só aparece no JSON quando não é nulo. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
filterGroup.groups[]
Cada elemento de filterGroup.groups é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
combinator | enumeration | não | "and" | Como se combinam as regras do subgrupo. | - |
rules | list de map | não | - | As regras do grupo. | - |
groups | list | não | - | Subgrupos de terceiro nível: varrem-se às cegas (uma FieldDecl const não se pode referir a si própria). | - |
filterGroup.groups[].rules[]
Cada elemento de filterGroup.groups[].rules é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
id | string | não | - | Identificador da regra, gerado pela app. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
columnName | string | não | - | Coluna desta tabela, POR NOME. | coluna (nome) |
operator | string | não | - | Operador da comparação. | - |
value | string | não | - | Valor da comparação: dado de utilizador. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
secondValue | string | não | - | Segundo valor, usado pelos operadores de intervalo. Só aparece no JSON quando não é nulo. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui. | - |
Exemplo JSON
[
{
"kind": "html",
"scope": "collection",
"title": "",
"artifact": "",
"dataContract": {}
}
]
Gerado de definitions.json versão 17f3e0bc59d9. Esta página nasce no build: não se edita à mão.