Documentos e dashboards

CoreDocument em modo CRUD ou biblioteca, e CoreDashboard com agregações count, sum, groupCount e groupSum executadas no backend.

CoreDocument

import { CoreDocument } from "@oondemand/oon-core-front";

export function PoliticasPage() {
  return (
    <CoreDocument
      model="Documento"
      label="Políticas internas"
      endpoint="/documentos"
      display="library"
      categoryField="categoria"
      titleField="titulo"
      descriptionField="resumo"
      contentField="conteudo"
      statusField="status"
      updatedAtField="updatedAt"
    />
  );
}
Prop Descrição
model, label, endpoint Model e CRUD
display crud (operacional, padrão legado) ou library (descoberta e leitura)
categoryField, titleField, descriptionField, contentField, statusField, updatedAtField Mapeamento de campos para a biblioteca
approval Liga ações aprovar/reprovar (/:id/actions/approve|reject)
attachments Reservado para gestão de anexos
columns, form Overrides

CoreDashboard

import { CoreDashboard } from "@oondemand/oon-core-front";

export function PainelPage() {
  return (
    <CoreDashboard
      label="Painel"
      widgets={[
        { id: "projetos", label: "Projetos", model: "Projeto", kind: "count" },
        { id: "valor", label: "Valor total", model: "Pagamento", kind: "sum", field: "valor", format: "currency" },
        { id: "status", label: "Tickets por etapa", model: "Pagamento", kind: "groupCount", groupBy: "etapa" },
        { id: "abertos", label: "Em aberto", model: "Pagamento", kind: "count", filters: { etapa: { nin: ["Pago", "Cancelado"] } } },
      ]}
    />
  );
}
kind Resultado
count Quantidade de registros
sum Soma de field
groupCount Contagem por groupBy
groupSum Soma de field por groupBy
custom render() próprio

Filtros usam somente campos declarados e os operadores eq, ne, in, nin, gt, gte, lt, lte e exists. format: number ou currency (padrão currency para somas).

As agregações rodam integralmente no backend, aplicando crud.permissions.read e os helpers de escopo — não dependem do limite ou da paginação das coleções, e uma model com escopo tenant nunca conta registros de outro tenant.

Como view e Home

import { defineDashboard } from "@oondemand/oon-core-front";

ui: { views: [defineDashboard({ id: "dashboard", label: "Dashboard", path: "/", section: "Visão Geral", widgets: [/* ... */] })] }

Com path: "/", o dashboard se torna a Home da Central.

Outros componentes de domínio

Componente Uso
CoreCurrency Cadastro de moedas (model="Moeda", endpoint="/moedas") para Apps com o módulo currencies
CoreAssistant Assistente (assistantCode, entity, endpoint="/assistant-runs") para Apps com o módulo assistants
CoreUsersAccess Página de Usuários e Acessos — veja Usuários e Acessos
CoreTransactionalEmail Painel de e-mail — veja E-mail transacional