Files
ampmInsights/docs/12-v2-view-procedure.html
Antonio Sergio Rodrigues Figueiredo 530c07cd94 Passo 2 v2.0.0 validado: V_26AI_TECH (81 colunas) e PRC_26AI_TECH VALID
Checkpoint completo confirmado pelo usuário: as 81 colunas da view na
ordem certa, ambos objetos VALID, teste manual retornou linhas (NULL
nos campos novos, esperado sem carga ainda). Registra a pegadinha do
CREATE OR REPLACE VIEW sendo pulado ao rodar statement a statement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:12:49 -03:00

122 lines
7.0 KiB
HTML

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ampmInsights &middot; v2.0.0 — View & Procedure</title>
<meta name="description" content="Passo 2 da v2.0.0: V_26AI_TECH e prc_26ai_tech passam a enviar CVE, pacote e remediação ao LLM.">
<link rel="stylesheet" href="assets/main.css">
</head>
<body>
<div class="layout">
<aside class="sidebar">
<div class="brand">
<span class="oracle">ORACLE</span>
<span class="name">ampmInsights</span>
</div>
<button class="menu-toggle" type="button">Menu &#9776;</button>
<div class="kicker">Documentação V2 &middot; AM/PM</div>
<ul class="nav-list">
<li><a class="" href="index.html"><span class="step-no">1</span>Visão geral</a></li>
<li><a class="" href="02-arquitetura.html"><span class="step-no">2</span>Arquitetura</a></li>
<li><a class="" href="03-pre-requisitos-credenciais.html"><span class="step-no">3</span>Pré-requisitos & credenciais</a></li>
<li><a class="" href="04-passo-a-passo-banco.html"><span class="step-no">4</span>Passo a passo: banco de dados</a></li>
<li><a class="" href="05-passo-a-passo-apex.html"><span class="step-no">5</span>Passo a passo: aplicação APEX</a></li>
<li><a class="" href="06-validacao-testes.html"><span class="step-no">6</span>Validação & testes</a></li>
<li><a class="" href="07-seguranca-boas-praticas.html"><span class="step-no">7</span>Segurança & boas práticas</a></li>
<li><a class="" href="08-glossario-roadmap.html"><span class="step-no">8</span>Glossário & roadmap</a></li>
<li><a class="" href="09-operacao-observabilidade.html"><span class="step-no">9</span>Operação & observabilidade</a></li>
<li><a class="" href="10-carga-cmdb-vulnerabilidades.html"><span class="step-no">10</span>Carga: CMDB & Vulnerabilidades</a></li>
<li><a class="" href="11-v2-evolucao-schema.html"><span class="step-no">11</span>v2.0.0 — Evolução de schema</a></li>
<li><a class="active" href="12-v2-view-procedure.html"><span class="step-no">12</span>v2.0.0 — View & Procedure</a></li>
</ul>
<div class="sidebar-footer">
Vulnerability &amp; Audit AI Insights<br>
Oracle AI Database 26ai &middot; AI Vector Search<br>
Versão V2 &middot; em desenvolvimento, ainda não validada
</div>
</aside>
<main class="content">
<p class="page-kicker">v2.0.0 &middot; Passo 2</p>
<h1>Expondo os dados novos ao AI Insight</h1>
<p class="lede">Ter as colunas novas na tabela não basta — <code>V_26AI_TECH</code> e o <code>json_object</code> de <code>prc_26ai_tech</code> precisam repassar esses campos até o LLM. Este é o passo que faz isso.</p>
<div class="callout info">
<div class="callout-title">Status: validado em 2026-09-09</div>
<p>Compilação confirmada (<code>V_26AI_TECH</code>/<code>PRC_26AI_TECH</code> <code>VALID</code>)
e as 81 colunas da view checadas uma a uma. Dica de quem já passou por isso: se você rodar o
script statement a statement (não como "Run Script"), não pule o bloco do
<code>CREATE OR REPLACE VIEW</code> — ele é grande e fica fácil ir direto pro
<code>CREATE OR REPLACE PROCEDURE</code> sem notar.</p>
</div>
<h2>1. Por que este passo é separado do anterior</h2>
<p>A coluna existir na tabela e o LLM receber o dado são duas coisas diferentes. O AI Insight
("Gerar Insight") lê o registro através de <code>V_26AI_TECH</code>, e o texto que vai pro modelo
é montado campo a campo dentro de um <code>json_object(...)</code> em <code>prc_26ai_tech</code>.
Sem tocar nesses dois objetos, os campos do <a href="11-v2-evolucao-schema.html">capítulo 11</a>
ficariam na tabela mas invisíveis para a IA.</p>
<h2>2. O que muda</h2>
<div class="table-wrap">
<table>
<tr><th>Objeto</th><th>Mudança</th></tr>
<tr><td><code>V_26AI_TECH</code></td><td>+35 colunas (23 de <code>TB_26AI_TECH_V2</code> + 12 de <code>TB_26AI_TECH_CMDB</code>). As colunas antigas ficam exatamente como estavam — só houve acréscimo no final da lista. <code>RAW_JSON</code> de cada tabela vira <code>RAW_JSON_TENABLE</code>/<code>RAW_JSON_CMDB</code> na view, para não colidir nome.</td></tr>
<tr><td><code>prc_26ai_tech</code></td><td>Só o <code>json_object</code> do ramo <code>p_source_type = 'VUL'</code> ganhou os campos novos. O ramo <code>'SYS'</code> (syslog), o texto do prompt, a vetorização, o log e o tratamento de erro ficam <strong>idênticos</strong> ao script original.</td></tr>
</table>
</div>
<div class="callout info">
<div class="callout-title">O prompt não mudou</div>
<p>O texto enviado ao LLM (<code>v_pre_prompt</code>) já pedia "recomendações" e "plano de ação"
desde a v1.x — ele só não recebia matéria-prima suficiente para cumprir isso. Este passo resolve
isso enriquecendo os <strong>dados</strong>, sem precisar reescrever o prompt.</p>
</div>
<h2>3. Como rodar</h2>
<ol>
<li>Mesmo ambiente/schema (<code>AMPMINSIGHTS</code>) onde o <a href="11-v2-evolucao-schema.html">capítulo 11</a> já foi validado — a view não compila sem as colunas de lá existirem.</li>
<li>Cole e rode <code>sql/04_v2_view_procedure_update.sql</code> inteiro, de uma vez.</li>
</ol>
<h2>4. Validação</h2>
<p>Dois checkpoints, sem gastar nenhuma chamada de LLM:</p>
<div class="code-block">
<div class="code-bar">
<span class="code-label">1) Compilação dos objetos</span>
<button class="copy-btn" type="button">Copiar</button>
</div>
<pre><code class="lang-sql">SELECT object_name, object_type, status
FROM user_objects
WHERE object_name IN ('V_26AI_TECH', 'PRC_26AI_TECH')
ORDER BY object_name;
-- Esperado: as duas linhas com STATUS = 'VALID'.</code></pre>
</div>
<div class="code-block">
<div class="code-bar">
<span class="code-label">2) Os campos novos chegam pela view</span>
<button class="copy-btn" type="button">Copiar</button>
</div>
<pre><code class="lang-sql">SELECT cid, asset_name, definition_cve, definition_solution,
sistema_operacional, u_fim_do_suporte
FROM V_26AI_TECH
FETCH FIRST 3 ROWS ONLY;
-- Pode vir tudo NULL se ainda não recarregou dado com o Tenable/ServiceNow
-- novos (normal) - o que importa aqui é a coluna existir e ser lida.</code></pre>
</div>
<p>Um teste completo de ponta a ponta (o AI Insight citando CVE/pacote/remediação de fato) só faz
sentido depois do capítulo 13 (perfis de carga novos, ainda não publicado) — ver
<code>TASKS.md</code> no repositório para o board de tarefas atualizado.</p>
<div class="callout danger">
<div class="callout-title">Rollback, se precisar desfazer</div>
<p>Rode de novo o <code>CREATE OR REPLACE VIEW</code>/<code>PROCEDURE</code> originais (<code>sql/01_ampminsights_db_setup.sql</code>, trechos <code>V_26AI_TECH</code> e <code>prc_26ai_tech</code>) — como são <code>CREATE OR REPLACE</code>, isso restaura o comportamento anterior sem afetar dado nenhum (view e procedure não guardam estado).</p>
</div>
<div class="pillnav"><a class="prev" href="11-v2-evolucao-schema.html">&larr; v2.0.0 — Evolução de schema</a></div>
</main>
</div>
<script src="assets/main.js"></script>
</body>
</html>