Pular para o conteúdo principal
Modular Development Style · Inventario de Artefatos

ModularReports

Companheiro do DRS

Publicado em 24 de julho de 2026 Modulareasy · modulareasy.com/mds
Artefatos provisionados ...
Marque cada artefato conforme for criado; o progresso é salvo e compartilhado.

ModularReports: Inventário de Artefatos

CampoValor
ProdutoModularReports
DocumentoInventário de Artefatos (companheiro do DRS)
Data de revisão2026-08-18

Documentos da família

Este é o registro de completude: tudo que precisa existir para o sistema funcionar (tabelas, migration, permissões, infraestrutura, telas, configuração, analytics, mídia) e, para cada item, a ficha do que ele deve ser. Cada artefato aponta o RF e a tarefa do Roadmap que o cria; se a tarefa está pronta mas o artefato não bate com a ficha, algo falta. A ordem de construção está no Roadmap; aqui está a lista do que provisionar.

Como usar

Marque um artefato quando ele existir E bater com a Especificação. Cada cartão traz Para que serve, Relacionado com (RF e tarefa do Roadmap), Onde fica e Especificação (a ficha implementável no sub-formato do tipo). Fichas extensas referenciam os apêndices do DRS (Ap.1 a Ap.8) em vez de repetir a ficha.

Estado de fechamento (medido em 2026-08-18)

Placar: 46 fechados, 2 abertos, 48 no total (recontado em 2026-08-18, nascimento do {ART-AUD-03}). O artefato novo nasce fechado (ver "Governança" e o total no rodapé da tabela de tipos); os dois abertos seguem os mesmos de sempre, sem mudança nesta rodada: {ART-CFG-01} e {ART-SCR-03}, ambos com o motivo no próprio cartão.

Placar anterior (2026-08-09), preservado como histórico: 45 fechados, 2 abertos, 47 no total. O segundo aberto nasceu nesta data: {ART-SCR-03}, a barra superior de marca da agência na página pública, artefato que o protótipo aprovado desenhou desde o início e que nunca foi construído. Ele entra no inventário porque é o que falta para a sobreposição de logo do cliente por relatório poder existir sem apagar a marca da agência (RN-020 item 4). O placar fecha: 45 mais 2 é igual a 47, e 47 é também a soma da coluna de contagem da tabela de tipos logo abaixo, conferida um lado contra o outro nesta data. Sobre o primeiro aberto: O único aberto é {ART-CFG-01}, reaberto em 2026-08-05 por contagem real (4 de 20 parâmetros editáveis) e remedido em 2026-08-08 depois das cinco fatias do {F4-07} (15 de 20 agora, detalhe no próprio cartão). As Fatias 11 a 20 do Roadmap foram mergeadas e colocadas em produção em 2026-08-05 (as duas contagens já estavam corretas no Roadmap, marcadas por verificação com banco real; o que faltava era este documento, que seguia em 0 de 46 apesar de boa parte dos artefatos já existir desde fatias anteriores). Cada cartão foi conferido individualmente, artefato por artefato, contra a plataforma-mãe em execução: tabela por tabela no banco, rota por rota na API, container por container no orquestrador, e não por leitura de código isolada. O critério de fechamento é o da REGRA-INV-1: existe E é alcançável, ou seja, há um caminho pelo qual alguém ou algo em produção aciona o artefato.

Duas rodadas de medição sobre {ART-INFRA-01} e {ART-MEDIA-01}, registradas porque a lição vale para qualquer inventário futuro. A primeira consultou o serviço de armazenamento por objeto da plataforma-mãe, achou zero registro para qualquer módulo, e concluiu erradamente que a infraestrutura de armazenamento não existia; os dois cartões fecharam como abertos. Uma segunda frente, medindo o mesmo achado de forma independente, apontou que aquele serviço nunca foi usado por NENHUM módulo da plataforma-mãe, então a consulta sempre daria zero, com ou sem ModularReports: a pergunta certa não era "o serviço está vazio" e sim "qual mecanismo a casa usa de verdade". O mecanismo real é armazenamento em sistema de arquivos sobre volume dedicado, já em uso por outras áreas do Hub, e a medição direta encontrou arquivos reais do ModularReports gravados nele (artefatos de upload real, não de teste). Os dois cartões fecharam. A ficha do {ART-INFRA-01} estava errada, não ausente, e foi reescrita para descrever o mecanismo real; card que afirma um fato que nunca aconteceu (a versão anterior dizia "bucket provisionado", que nunca existiu com esse nome) segue sendo defeito por si, corrigido mesmo o artefato fechando pelo mecanismo certo.

Um terceiro achado desta rodada não impediu fechamento algum, mas fica registrado: o disparador de agenda ({ART-JOB-01}) foi encontrado VIVO em produção contra a expectativa inicial de que não existiria nenhum mecanismo de disparo, com a prova e o limite da prova no próprio cartão.

Tipos de artefato

TipoContagemOnde vivem
Entidade / tabela (ART-ENT)15Schema reports no banco da plataforma-mãe
Migração de dados (ART-MIG)3Migration de registro do módulo no Hub, conversão v2 para v3 (golden set), schema da agenda e do perfil do cliente
Parâmetro de configuração (ART-CFG)2 (uma tabela com 20 parâmetros e o catálogo das 20 métricas de resultado)Painel do admin de agência
Papel / permissão (ART-ACS)1Catálogo de permissões reports.* em código do Hub
Serviço / container (ART-INFRA)4Bucket de storage, sandbox de parse isolado, leitor público, ingestor de eventos
Menu / navegação (ART-NAV)1Chrome do Reports
Tela / página (ART-SCR)3 (uma tabela com 11 superfícies, a tela de agendas e a barra superior de marca da agência)Chrome do operador, leitor público, painéis
Dashboard / relatório (ART-DASH)1Painel de analytics por agência
Métrica / indicador (ART-KPI)1 (tabela com 4 métricas)Painel de analytics
Auditoria / log (ART-AUD)3Log de auditoria do Hub (eventos reports.*), a suíte de fixtures de controle negativo na integração contínua e a guarda de endereço de aviso do Hub inteiro
Notificação / alerta (ART-NOT)2Widget de comentário e Central de Notificações do Hub
Documento / PDF gerado (ART-DOC)1Gerador de PDF da plataforma-mãe
Campo personalizado (ART-FLD)3Ficha account_identidade_visual do Hub (identidade e tom de voz) e account_profile do schema reports (sazonalidade e modelo de venda)
Rotina agendada (ART-JOB)1Disparador de ciclo das agendas de geração
Asset (ART-MEDIA)1Bucket reports, criativos e logos
Tipo de bloco do renderizador (ART-BLK)1 (tabela com 16 tipos)Registro declarativo do package renderizador
Modelo de relatório (ART-TPL)3Tabela template do schema reports: 2 Globais semeados e 1 individual da agência de origem

Total: 48 artefatos (47 até esta rodada, mais {ART-AUD-03}, nascido em 2026-08-18 da medição do {F8-58} do Roadmap), que é a soma da coluna de contagem acima e também a contagem dos cartões deste documento, conferidas uma contra a outra nesta data. {ART-AUD-03} nasce FECHADO: a guarda foi ligada e provada (dry-run vazio, guarda estática 90/0, par de casos em execução 26/0, reprovação de isenção morta por quebra) antes de entrar no documento; ficha completa na seção Governança. A revisão de 2026-08-03 já tinha corrigido a divergência entre 31 e 33 recontando os dois lados; a diferença entre o 44 daquela revisão e o 46 seguinte é que a tabela de tipos não somava os dois cartões de ferramental (ART-INFRA-05, ART-INFRA-06), presentes no corpo do documento desde 2026-08-03 mas nunca incluídos na soma do topo. Corrigido recontando os dois lados de novo, mesma disciplina.


Entidades e tabelas (schema reports)

Espelha o bloco 5 (E.1, E.2) do DRS. Migration que cria as tabelas de dados: {F1b-01} do Roadmap (antes das fatias que as consomem). report_job e agency_domain nascem nas suas fatias (evolução e Fatia 14).

Migração e permissões

Capabilitysuper_adminadminoperadorcontact
reports.entitlement.manageSim, escopo todosNãoNãoNão
reports.agency.manage_usersSim, escopo todosSim, só a própria agênciaNãoNão
reports.identity.manageNãoSim, só a própria agência e seus clientesNãoNão
reports.template.manageSim, escopo todosSim, só os individuais da própria agência (nunca um Global)Sim, só os individuais da própria agência (nunca um Global)Não
reports.composeNãoNãoSim, só clientes da própria agênciaNão
reports.publishNãoNãoSim, só sessão humanaNão
reports.analytics.viewSim, escopo todosSim, só a própria agênciaNãoNão
reports.client.createNãoSimSimNão
reports.client.offboardNãoSim, só a própria agênciaNãoNão
reports.comment.createNãoNãoNãoSim, só se logado
reports.comment.resolveNãoSimSimNão

Promoção e despromoção de template (RF-ADM-016, RN-013, tarefa {F10-03}) não têm linha nesta matriz, e a ausência é deliberada: são gate de papel Super Admin, não permissão concedível. A concessão individual de permissão do Hub alcança qualquer permissão e qualquer usuário, então uma permissão de promoção seria delegável a quem não é Super Admin, e a exclusividade que RN-013 exige sem exceção cairia. O sistema confere o papel diretamente, e a escrita da tabela template é a segunda camada, porque só aceita a linha marcada como Global quando quem grava é o Super Admin.

Quem configura este papel: Super Admin (entitlement) e Admin de agência (usuários dentro da agência) | Plano(s) onde o papel existe: só no Hub (ModularReports não tem plano próprio) | Restrição de visibilidade de dados: por company_id (RNF-SEG-001) | Pode delegar: Admin de agência pode promover outro usuário da própria agência a admin; não pode criar Super Admin. Não repete a matriz completa de capabilities do Hub (essa vive no catálogo do Hub); traz só o recorte reports.* (REGRA-INV-2).


Infraestrutura


Interface

SuperfíciePúblicoNaturezaRFs principais
Chrome do operadorOperador, AdminAplicativo isolado, entrada pelo Hub e endereço diretoRF-ADM-014
Lista de relatóriosOperador, AdminPágina inicial do módulo: 4 números, filtro por situação e por cliente, tabela por cliente; tela relatorios do mockupRF-CUR-001, RF-ANL-006
Wizard de composiçãoOperador4 passos (Ap.1)RF-CMP-001 a 004
CompositorOperadorCuradoria de blocos, três colunas, com os painéis de identidade e de inserir elemento na coluna direita e o título do relatório editável em linha na barra superiorRF-CUR-001 a 013
Modo apresentarOperadorTela cheia, rascunho ou publicadoRF-CUR-006
Modal de publicaçãoOperadorOnde o link nasce (Ap.7)RF-PUB-002 a 006
Leitor públicoCliente finalPágina estática isolada somente leituraRF-REN-006, RF-REN-010
Widget de comentárioCliente final logadoDrawer lateral estilo documento colaborativoRF-COM-001 a 006
Painel de analyticsAdminAgregado por agênciaRF-ANL-006
Painel do Super AdminSuper AdminEntitlement, agências, limites, retençãoRF-ADM-001, RF-ADM-003
Portal do cliente logadoCliente final logadoLeitura agregada dos relatórios dos seus Accounts, opcional; tela cliente-painelRF-REN-011

A Lista de relatórios entrou nesta tabela em 2026-08-18, e a ausência dela era o defeito {OP-01} do Roadmap. A superfície existe no mockup aprovado (relatorios.html) desde o início e estava construída como um estado vazio fixo dizendo "nenhum relatório publicado ainda" enquanto o painel de analytics da mesma agência contava quatro publicados. Ficou fora do inventário porque a ficha listava o "chrome do operador" e ninguém perguntou qual é a PRIMEIRA tela que ele abre — que é exatamente o que a REGRA-INV-1 cobra: existe E é alcançável.

Rota, elementos, estados e responsivo de cada superfície: ver o mockup navegável aprovado (link em {M-01} do Roadmap) e a jornada do papel correspondente (documento Jornadas dos Atores). A gestão de domínio custom da agência ({F14-02}) já é uma seção da tela de identidade da agência no mockup; o que falta ali é o estado "pendente de validação TXT" antes do "propagado", a incluir numa próxima iteração do mockup (ADR-015).


Análise

NomeDefiniçãoFórmulaUnidadeGranularidadeFonte
VisualizaçõesAcessos ao link vindos de fora da plataforma, excluindo qualquer navegador com sessão da plataforma (de qualquer agência) e o modo apresentarContagem de link_event com event_type=view e is_agency_session=false, sempre pela fonte única v_honest_view_eventContagemPor relatóriolink_event
Último acessoData e hora do acesso mais recente ao linkMAX(created_at) de link_event filtrado como acimaTimestampPor relatóriolink_event
Origem por referrerDistribuição de acessos por referrer, ou "desconhecida"Agrupamento de link_event.referrerContagem por origemPor relatóriolink_event
Duração de produçãoTempo entre início da composição e publicaçãopublished_at - created_at (minutos) do reportMinutosPor relatórioreport.production_minutes

Sem meta ou baseline formal nesta fatia; alimenta o critério de adoção (DRS A.7).


Governança


Documento e mídia


Blocos do renderizador

Espelha o Ap.3 do DRS (catálogo de tipos de bloco) e o RF-REN-012 (cobertura nominal). Um tipo de bloco só existe de verdade quando é componente MAIS entrada no registro declarativo: componente sem entrada no registro cai no caminho de tipo desconhecido e some da página do cliente.

Três campos do renderizador irmão barrados por schema ({F18-16}, tabela de exclusões do Ap.3), porque sem barreira eles voltam na primeira vez que alguém copiar um payload de lá: line_chart.y_format (o formato vem só do dp, e duas autoridades de formato para o mesmo número geram o defeito de coerência de rótulo de RF-CMP-025), cor hexadecimal livre em donut.slices[] (existe accent_index sobre a rampa de acento da identidade do cliente, com o clamp de contraste AA), e body_html em qualquer bloco narrativo (existe body_md com allowlist; HTML cru anula o saneamento em todas as superfícies de uma vez). A mensagem de recusa nomeia o campo substituto.

Ressalva medida em 2026-08-05, sobre o parágrafo anterior: a barreira por schema dos três campos excluídos (assertBlockPayloadContractV3, {F18-16}) segue SEM ponto de chamada em produção, confirmado direto no código hoje publicado. Os 16 tipos existem e renderizam; a barreira específica desses três campos não está ligada, e o cartão {F18-16} do Roadmap segue aberto por este motivo exato. Isto não reabre {ART-BLK-01} (o registro de tipos, que é o que o cartão promete, existe e funciona) mas fica registrado aqui porque é a mesma peça que o parágrafo acima descreve.

Campos de guarda que todo tipo aplicável carrega: min_periods (histórico mínimo, abaixo do qual a seção se oculta e vira lacuna declarada, RF-REN-014) e, nos blocos comparativos, base obrigatório e visível dentro da frase (RF-CMP-024). Nulo em campo numérico significa NÃO MEDIDO e nunca zero, com render interrompido, no vocabulário único de RF-REN-015.


Modelos (templates)

Espelha o Ap.9 do DRS (catálogo de modelos) e a RN-013 (escopo Global e individual). Dois nascem Globais e um nasce individual, e a diferença é a contagem que sustenta cada um, não uma preferência: Diagnóstico de Herança tem N igual a 4 e Fechamento de Campanha tem N igual a 2, confirmados por relatórios reais no formato v2, e vão para Global (company_id nulo, is_global verdadeiro, sem despromoção possível, RN-013 item 4, retiráveis apenas por exclusão); Fechamento Periódico Multi-Vertical tem N igual a 1, e essa amostra está em formato anterior ao v3, então nasce individual da agência de origem (is_global falso, company_id preenchido). Semear no Global uma sequência inferida de uma amostra só apresentaria uma hipótese a todas as agências como se fosse o jeito certo de fazer. A ficha completa de cada um (sequência de blocos, regra própria, amostra que o sustenta) vive no Ap.9 do DRS (REGRA-INV-2); o campo Especificação aqui traz o que basta para provisionar a linha.

Parâmetros de configuração

Os 15 com caminho de edição comprovado: os 4 que já funcionavam (retenção de snapshots, comentários e analytics; identidade padrão da agência, dois campos separados; tipos de relatório; a promoção de um tipo a global, restrita ao Super Admin) mais os 10 que as Fatias A, B, C e E do {F4-07} ligaram ao catálogo declarativo e ao formulário genérico por forma (quota de entrada; TTL do artefato cru; tolerância de largura de janela; desfecho da comparação parcial; métricas não somáveis entre janelas; limiar de materialidade da variação; histórico mínimo por tipo de bloco; allowlist de fontes de benchmark; mapa objetivo para métrica âncora; rate-limit do link público, escopo global puro, Super Admin) mais 1 que a Fatia D ligou por fora deste catálogo, na ficha do cliente (base sazonal da cadência mensal, account_profile.is_seasonal, tela em ReportsClientFilePage.tsx).

Os 5 que faltam, e por quê:

  • Teto de tempo por bloco e piso e teto do tempo de documento (2): a função que os aplica não é

chamada em lugar nenhum do caminho real; viraram o cartão {F8-16} do Roadmap, que mede o sintoma antes de construir tela para um limite que hoje não vale nada.

  • Teto de verbosidade por bloco (1): mesma classe, guarda que ninguém aciona; diferido junto dos

dois acima, no mesmo {F8-16}.

  • Guardas com override permitido (1): não deve ganhar painel, porque o próprio requisito que a

ficha cita (RF-CUR-009) declara essa lista escrita em código e julgada por desenho, não em runtime. O defeito aqui é a linha da tabela abaixo prometendo um painel, não a ausência de tela.

  • Limiar de alerta de excesso de ressalvas (1): feature que não existe no produto hoje. Não é

parâmetro sem tela, é requisito ainda não construído; sai deste cartão quando alguém decidir construí-lo.

Duas linhas da tabela abaixo prometem painel que não deve existir, e a correção fica registrada aqui até a tabela ser reescrita: "Guardas com override permitido" é escrita em código por desenho, e "Limiar de alerta de excesso de ressalvas" é feature inexistente, não parâmetro pendente de tela.

Fila: os 3 diferidos vivem em {F8-16} do Roadmap; os 2 de correção de ficha não têm tarefa de construção, porque não devem ganhar uma. Este cartão só fecha ([x]) quando os 20 tiverem caminho de edição comprovado, o que hoje depende de {F8-16} fechar e de uma decisão de escopo sobre os 2 que a tabela promete incorretamente (corrigir a ficha ali é o suficiente para esses dois contarem). Para que serve: todo valor operacional que o admin pode querer mudar sem migration ou deploy (DRS bloco 11). Relacionado com: RF-ING-002, RF-ING-004, RF-ADM-011, RF-CMP-014, RF-ING-006, RF-ADM-006, RF-CMP-015, RF-ADM-009, RF-PUB-002, RF-CMP-016, RF-REN-014, RF-CUR-009, RNF-PERF-002, RN-012; tarefas {F4-02}, {F4-04}, {F16-05}, {F1-10}, {F4-05}, {F16-02}, {F1-11}, {F10-01}, {F9-02}, {F1-18}, {F18-05}, {F18-07}, {F18-10}, {F18-14}. Onde fica: painel do admin de agência (e painel do Super Admin para os de escopo global). Especificação:

Nome do parâmetroO que controlaTipoValor defaultFaixa/opçõesQuem editaOnde editaEfeito ao mudarAuditadoRN/RF
Quota de entradaNº de artefatos, MB totais, páginas de PDF por composiçãoTabela (3 números)A definir na Fatia 4Inteiro positivoAdminPainel de configuração da agênciaImediato, próxima composiçãoSimRF-ING-002
TTL do artefato cruTempo até apagar o artefato cru após publishNúmero (horas)Curto (minimização LGPD)Inteiro positivoAdminPainel de configuração da agênciaPróximo ciclo de limpezaSimRF-ING-004
Retenção de snapshots, comentários e analyticsTempo de guarda dos dados do clienteNúmero (dias)A declarar pelo adminInteiro positivoAdminPainel de configuração da agênciaPróximo ciclo de limpeza/offboardingSimRF-ADM-011
Allowlist de fontes de benchmark e pesquisa de mercadoQuais fontes externas a IA pode citarLista de domínios/fontesVaziaLista editávelAdmin (por agência) e Super Admin (global)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-014, RF-ING-006
Identidade padrão da agênciaFallback quando a ficha do cliente está vaziaJSON (cores, tom de voz)Nenhum até o admin declararLivre, validado como cor/tomAdminPainel de identidade da agênciaImediato, próximo publish sem ficha do clienteSimRF-ADM-006
Templates (tipos de relatório)Blocos padrão por tipo de relatórioCRUD de entidadeNenhum até alguém criar; a biblioteca de uma agência começa com os Globais que existiremLivreAdmin e Operador nos individuais da própria agência; só o Super Admin nos GlobaisBiblioteca de templatesImediato, próximo relatório com esse template (relatório já criado não muda, RN-013 item 6)SimRF-ADM-009, RN-013
Escopo do template (individual ou Global)Se o template vale só na agência de origem ou em todasBooleano por template (is_global)Individual (falso) no nascimentoIndividual ou GlobalSó o Super AdminBiblioteca de templates, visão do Super AdminImediato, a biblioteca de todas as agências passa a listar ou deixa de listarSimRF-ADM-016, RN-013
Teto de verbosidade por blocoLimite de caracteres por bloco de textoNúmero (caracteres)Definido no schema (ex.: 280 para insight)Inteiro positivoSuper Admin (global)Configuração do schema de blocosImediato, próxima composiçãoSimRF-CMP-015
Rate-limit do link públicoRequisições por janela ao caminho do link públicoNúmero (requisições por janela)A definir na Fatia 9, admin-editávelInteiro positivoSuper Admin (global) e Admin (por agência)Painel de configuraçãoImediato, próximo acessoSimRF-PUB-002
Mapa objetivo para métrica primária (âncora do selo)Qual métrica é a âncora do selo de honestidade para cada objetivo_campanha do briefing (Ap.1)Tabela (objetivo do enum para metric_id)Seed: vendas para receita ou ROAS; leads para leads ou CPL; trafego para cliques ou CPC; reconhecimento para alcance ou CPM; engajamento para engajamentoSó objetivos do enum e métricas do catálogoAdmin (por agência) e Super Admin (default global)Painel de configuraçãoImediato, próxima composiçãoSimRN-012 ii, RF-CMP-018
Tolerância de largura de janelaDiferença máxima entre as larguras das duas janelas comparadas antes de a comparação ser tratada como parcialNúmero (percentual)10 por cento0 a 100Admin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-021
Desfecho da comparação parcialO que fazer quando as janelas comparadas têm larguras diferentes além da tolerânciaEnum fechado (recusar a variação, ou emitir com marca de janela parcial)Emitir com marca de janela parcialSó os dois valoresAdmin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-021
Métricas não somáveis entre janelasQuais métricas usam o pico entre janelas em vez da soma quando o relatório agrega mais de uma janelaLista de metric_idSeed: alcance, usuários únicos, visitantes únicosSó métricas do catálogoAdmin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-022
Base sazonal da cadência mensalSe um relatório mensal compara também com o mesmo mês do ano anterior, além do mês imediatamente anteriorBooleanoDesligadoLigado ou desligadoAdmin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRN-014 item 4
Limiar de materialidade da variação do dadoA partir de que variação nos pontos de dado da âncora e das métricas destacadas o dado é considerado "mudado" na classificação de quadrantes do anti-fadigaNúmero (percentual)5 por cento0 a 100Admin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-016
Histórico mínimo por tipo de blocoQuantos períodos uma seção exige antes de renderizar, abaixo do que ela se oculta e vira lacuna declaradaTabela (tipo de bloco para inteiro)Seed: line_chart 3; comparison com base de período anterior 2; rankings 2Inteiro maior ou igual a 1Admin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRF-REN-014
Teto de tempo por blocoTempo máximo de composição de um bloco isolado antes de ele ser interrompido sem derrubar a composiçãoNúmero (segundos)6Inteiro positivoSuper Admin (global) e Admin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRNF-PERF-002
Piso e teto do tempo de documentoPiso do teto de documento e limite superior do teto escalado (número de blocos multiplicado pelo teto por bloco)Tabela (2 números, segundos)Piso 60; limite superior a definir por agênciaInteiro positivo, limite superior maior que o pisoSuper Admin (global) e Admin (por agência)Painel de configuraçãoImediato, próxima composiçãoSimRNF-PERF-002
Guardas com override permitidoQuais guardas não estruturais aceitam a escotilha com justificativa escrita. As estruturais (número sem proveniência, publicar sem sessão humana) NÃO entram nesta lista e a lista não as aceitaLista de identificadores de guardaSeed: todas as guardas não estruturais de RF-CUR-009Só guardas não estruturais do catálogoSuper Admin (global)Painel de configuraçãoImediato, próxima composiçãoSimRF-CUR-009
Limiar de alerta de excesso de ressalvasRazão entre ressalvas e achados de uma página a partir da qual o sistema alerta o admin de que o relatório está ficando inútil por excesso de guardaNúmero (razão)1,0 (mais ressalvas do que achados)Maior que 0Admin (por agência)Painel de configuraçãoImediato, próximo publishSimRF-CUR-009

ParâmetroDescriçãoTipoValor default (seed)ValidaçãoQuem editaOnde editaEfeitoAuditadoRegra
Visibilidade por métrica de resultadoSe a métrica pode aparecer na página que o cliente abre ou é só de gestão internaTabela (métrica para enumerado de 2: interna, cliente)O default de cada uma das 20 está no Ap.10.2; nasce interna para fee, margem de contribuição, multiplicador de LTV e os lucros derivados delesSó as 20 métricas do Ap.10.2; só os 2 valoresAdmin (por agência)Painel de configuraçãoImediato, próximo publish; nenhum snapshot anterior mudaSimRF-REN-017, {Q8}
Estado da fórmula por métrica derivadaSe a fórmula daquela métrica já foi conferida contra a planilha de gestão que é a fonteTabela (métrica para enumerado de 2: a conferir, conferida)Todas as derivadas nascem a conferirSó as métricas de classe derivada do Ap.10.2Super Admin (global)Painel de configuraçãoImediato, próxima composiçãoSimRF-CMP-031, {F20-01}

A regra que sustenta a segunda linha e que vale desde já: uma métrica derivada com estado a conferir NÃO é emitida em relatório. Ela existe no catálogo para que a conferência tenha alvo nominal, não para ser usada antes de conferida. Uma fórmula errada aqui não quebra nada, produz um número verdadeiro na forma e falso no valor, que é a classe de erro que ninguém reporta. E fórmula conferida não basta: a métrica só é emitida quando todos os operandos dela também resolvem, o que hoje bloqueia o CAC Payback, cuja fórmula é conferida mas cujo operando Margem média por cliente não está definido em lugar nenhum. O corte de visibilidade acontece no PUBLISH, removendo a métrica do conteúdo do snapshot: esconder no render não basta, porque o snapshot é servido a quem tem o link.

Documento ModularReports: Inventário de Artefatos
Metodologia MDS · Modular Development Style · 15 blocos / 86 campos
Publicado por Modulareasy
Site modulareasy.com/metodologias/mds