Buscar K
Aparência
Aparência
Numa investigation (Investigação), uma pergunta de negócio ganha verificações que rodam numa agenda e listam achados para alguém revisar. O arquivo fica em investigations/<slug>--<id>.yaml. O que as Investigações fazem está em Investigações.
lumo new investigation --name "Margem entre filiais" --question "Alguma filial está com margem bem abaixo das outras?"
lumo info app:7302 --full # ids dos indicadores e das colunasfileName^[a-z0-9-]+--\d+\.yaml$headerheader.idheader.kindinvestigation (fixo)header.lumov2 (fixo)header.tenantIdheader.appIdheader.dashboardIdbodybody.criado_em^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$body.criado_porbody.publicado_em^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$body.publicado_porbody.nomebody.perguntabriefing no backend): o contexto de negócio que a IA usa para julgar cada achado. O backend recusa menos de 20 caracteres - uma frase curta produz veredito genérico.body.publicadaPOST /investigation/:id/publish ou de um push que muda false → true (equivalentes). NÃO existe caminho de volta: o backend recusa true → false neste campo (duplique e exclua a publicada para desfazer).body.statusactive, pausedlumo investigation run.body.agendabody.agenda.tipomanual, daily, weeklylumo investigation run ou pela tela); daily roda toda vez às hora; weekly roda em dia_semana às hora.body.agenda.horabody.agenda.dia_semanabody.verificacoeslumo scaffold investigation (peers) e lumo scaffold investigation change para exemplos; o shape de config é específico do runner e validado pelo backend (não duplicado aqui de propósito).body.verificacoes[].idbody.verificacoes[].runnerbody.verificacoes[].rotulolabel no backend).body.verificacoes[].ativaenabled no backend).body.verificacoes[].config# investigations/margem-entre-filiais--88.yaml
# yaml-language-server: $schema=https://docs.horusbi.com.br/schemas/v2/investigation.schema.json
id: 88
kind: investigation
lumo: v2
tenantId: 1200
---
nome: Margem entre filiais
# O contexto que a IA usa para julgar cada achado. Mínimo de 20 caracteres.
pergunta: >-
Alguma filial está com margem bem abaixo das outras, vendendo os mesmos produtos?
publicada: false # true é sem volta
status: active # paused não roda na agenda, mas roda com lumo investigation run
agenda:
tipo: weekly # manual | daily | weekly
hora: 6 # 0 a 23, hora local do Tenant
dia_semana: 1 # 0 = domingo; sempre presente, só vale em weekly
verificacoes:
- runner: peers # cada filial contra as outras
rotulo: Margem por filial
ativa: true
config:
sonda: Margem por filial
universo:
app_id: 7302
nome: Comercial
indicador_id: 15 # numerador: indicador curado (Lucro bruto)
volume_id: 14 # denominador: indicador da mesma Aplicação (Faturamento)
quem: { column_id: 70020 } # quem é comparado (Filial)
direcao: desce_ruim
nome_taxa: MargemHá dois tipos de verificação (runner). lumo investigation runners lista os campos de config que cada um aceita.
runner | O que procura | Modelo |
|---|---|---|
peers | Uma taxa (numerador sobre denominador) por entidade, comparada às outras do mesmo grupo | lumo scaffold investigation |
change | O que mudou num indicador neste mês, e em que dimensões | lumo scaffold investigation change |
publicada: true não tem volta: o servidor recusa voltar para false, e não há comando para despublicar. Para desfazer, duplique a Investigação pela tela e apague a publicada. lumo investigation publish é o mesmo que mudar o campo para true e dar push.SENTINELA_DISABLED) e permissão de criar alerta.push.pergunta precisa de pelo menos 20 caracteres. Uma frase curta demais produz achados genéricos.status: paused não roda na agenda, mas lumo investigation run roda na hora. lumo investigation findings mostra os achados da última rodada.config no push e a mensagem de erro diz qual campo está errado. Depois do primeiro push, cada verificação ganha um id: mantenha-o ao editar.