<%* // Extrai informações do nome do arquivo const fileName = tp.file.title;
// Coleta de informações básicas da variável const nomeVariavel = await tp.system.prompt(“Nome completo da variável (ex: flow.cpf, user.name)”); const descricao = await tp.system.prompt(“Descrição funcional da variável”);
// Classificação da variável const escopo = await tp.system.suggester( [“flow”, “user”, “input”, “output”, “global”], [“flow”, “user”, “input”, “output”, “global”], false, “Escopo da variável” );
const tipoDado = await tp.system.suggester( [“String”, “Number”, “Boolean”, “Object”, “Array”, “Date”, “JSON”], [“String”, “Number”, “Boolean”, “Object”, “JSON”, “Array”, “Date”], false, “Tipo de dado” );
const isCritica = await tp.system.suggester( [“Sim”, “Não”], [true, false], false, “É uma variável crítica?” );
const isSensivel = await tp.system.suggester( [“Sim - Dados pessoais/PII”, “Sim - Dados financeiros”, “Sim - Credenciais”, “Não”], [“pii”, “financial”, “credentials”, false], false, “Contém dados sensíveis?” );
// Origem da variável const origemTipo = await tp.system.suggester( [“API Externa”, “Input de Usuário”, “Processamento Interno”, “Webhook”, “Database”, “Integração”], [“api”, “user_input”, “processing”, “webhook”, “database”, “integration”], false, “Origem da variável” );
const origemDetalhes = await tp.system.prompt(“Detalhes da origem (ex: HubSpot API, Input do chat, Cálculo no node 5-code)”);
// Formato e Exemplo const formato = await tp.system.prompt(“Formato/Padrão (ex: CPF: 000.000.000-00, ISO Date, Email)”, ""); const exemplo = await tp.system.prompt(“Exemplo de valor (mascarado se sensível)”);
// Fluxos que usam a variável let fluxos = []; let addMoreFluxos = true;
while (addMoreFluxos) { const nomeFluxo = await tp.system.prompt(“Nome do fluxo que usa esta variável”); const nosFluxo = await tp.system.prompt(“Nós específicos (separados por vírgula, ex: 3-code, 5-hubspot)”); const propositoUso = await tp.system.prompt(“Propósito do uso neste fluxo”);
fluxos.push({ nome: nomeFluxo, nos: nosFluxo, proposito: propositoUso });
const continuar = await tp.system.suggester( [“Adicionar outro fluxo”, “Finalizar”], [true, false], false, “Deseja adicionar mais fluxos?” );
addMoreFluxos = continuar; }
// Bancos de dados relacionados const temDatabase = await tp.system.suggester( [“Sim”, “Não”], [true, false], false, “Esta variável alimenta algum banco de dados?” );
let databasesContent = “N/A”; if (temDatabase) { let databases = []; let addMoreDbs = true;
while (addMoreDbs) { const dbNome = await tp.system.prompt(“Nome do banco/tabela”); const dbCampo = await tp.system.prompt(“Campo correspondente no banco”); const dbOperacao = await tp.system.suggester( [“INSERT”, “UPDATE”, “UPSERT”, “SELECT”], [“INSERT”, “UPDATE”, “UPSERT”, “SELECT”], false, “Tipo de operação” );
databases.push({ nome: dbNome, campo: dbCampo, operacao: dbOperacao });
const continuar = await tp.system.suggester(
["Adicionar outro banco", "Finalizar"],
[true, false],
false,
"Deseja adicionar mais bancos?"
);
addMoreDbs = continuar;
}
databasesContent = \n;
databases.forEach(db ⇒ {
databasesContent += ### ${db.nome}\n\n;
databasesContent += - **Campo**: \{db.operacao}\n\n`;
});
}
// Dependências const temDependencias = await tp.system.suggester( [“Sim”, “Não”], [true, false], false, “Esta variável depende de outras variáveis?” );
let dependenciasContent = “N/A”;
if (temDependencias) {
const deps = await tp.system.prompt(“Liste as variáveis das quais esta depende (separadas por vírgula)”);
const depsSplit = deps.split(’,‘).map(d ⇒ d.trim());
dependenciasContent = \n;
depsSplit.forEach(dep ⇒ {
dependenciasContent += - [[${dep}]]\n;
});
}
// Impacto e Validações const validacoes = await tp.system.prompt(“Validações/Regras de negócio aplicadas (ou deixe vazio)”, ""); const impactoFalha = await tp.system.prompt(“Impacto se esta variável falhar/for null”);
// Observações técnicas const observacoes = await tp.system.prompt(“Observações técnicas adicionais (transformações, encodings, etc)”, "");
// Monta seção de fluxos
let fluxosContent = \n;
fluxos.forEach(fluxo ⇒ {
fluxosContent += ### [[${fluxo.nome}]]\n\n;
fluxosContent += - **Nós**: ${fluxo.nos}\n;
fluxosContent += - **Propósito**: ${fluxo.proposito}\n\n;
});
// Monta tags
let tags = variable, ${escopo}, ${tipoDado.toLowerCase()};
if (isCritica) tags += , critical;
if (isSensivel) tags += , sensitive, ${isSensivel};
tags += , ${origemTipo};
-%>
id: <% fileName %> variable: <% nomeVariavel %> scope: <% escopo %> type: <% tipoDado %> critical: <% isCritica %> sensitive: <% isSensivel ? isSensivel : false %> origin: <% origemTipo %> tags: [<% tags %>] revision_state: <% tp.date.now(“X”) %> tracked: true
<% nomeVariavel %>
Variável <%= isCritica ? ’🔴 CRÍTICA’ : ’🟢 PADRÃO’ %><%= isSensivel ? ’ | 🔒 SENSÍVEL’ : ” %>
Descrição
<% descricao %>
Especificações Técnicas
| Propriedade | Valor |
|---|---|
| Escopo | <% escopo %> |
| Tipo de Dado | <% tipoDado %> |
| Formato | <% formato |
| Exemplo | <% exemplo %> |
| Crítica | <%= isCritica ? ’✅ Sim’ : ’❌ Não’ %> |
| Sensível | <%= isSensivel ? ✅ Sim (${isSensivel}) : ’❌ Não’ %> |
Origem
Tipo: <% origemTipo %>
Detalhes: <% origemDetalhes %>
Uso nos Fluxos
<% fluxosContent %>
Persistência de Dados
<% databasesContent %>
Dependências
Variáveis Relacionadas: <% dependenciasContent %>
Validações e Regras
<% validacoes || ‘Nenhuma validação específica documentada’ %>
Impacto de Falha
<% impactoFalha %>
Observações Técnicas
<% observacoes || ‘N/A’ %>
Backlinks
Esta seção será preenchida automaticamente pelo Obsidian com links de notas que referenciam esta variável