v2.0.0 · Passo 1
+Evolução de schema: CVE, CVSS, solução e mais
+Promove os campos "Tier 1" do Tenable e do ServiceNow — hoje fora do banco — a colunas novas em TB_26AI_TECH_V2 e TB_26AI_TECH_CMDB, para que o AI Insight consiga citar CVE, pacote afetado e remediação por ativo.
Este capítulo documenta um passo já implementado no script (sql/03_v2_ddl_schema_evolution.sql), mas ainda não confirmado em nenhum ambiente. Não use este passo como procedimento definitivo até a seção 5 (Validação) ter sido de fato executada e conferida.
1. Por que isto era necessário
+PRC_26AI_TECH (geração do AI Insight) monta o JSON enviado ao LLM inteiramente a
+partir da view V_26AI_TECH, que só expõe as colunas que existem em
+TB_26AI_TECH_V2/TB_26AI_TECH_CMDB. Antes da v2.0.0, apenas 18 das 99
+colunas do export Tenable chegavam ao banco — nenhum campo de CVE, CVSS, EPSS, CISA KEV, pacote
+afetado ou solução sugerida existia na tabela. Não era um problema de prompt: o modelo nunca via
+esses dados porque eles simplesmente não estavam disponíveis.
2. O que foi adicionado
+Estratégia híbrida: colunas tipadas para os campos que realmente importam para o "plano de
+ação" do AI Insight, mais uma coluna RAW_JSON por linha guardando o
+export completo — assim nada da planilha se perde, mesmo o que não virou coluna tipada.
| Tabela | Colunas novas | Destaque |
|---|---|---|
TB_26AI_TECH_V2(vulnerabilidades Tenable) | 23 colunas | DEFINITION_CVE, DEFINITION_SOLUTION, DEFINITION_DESCRIPTION, SOFTWARE_VULNS, DEFINITION_CVSS3_BASE_SCORE, DEFINITION_EPSS_SCORE, CISA_KEV_FLAG, RAW_JSON |
TB_26AI_TECH_CMDB(CMDB ServiceNow) | 12 colunas | U_FIM_DO_SUPORTE (EOL), ATTESTATION_SCORE/_STATUS, INSTALL_STATUS, RAW_JSON |
Todas as colunas são novas e NULLable. Nenhuma tabela é recriada, nenhuma coluna
+ existente é alterada, nenhum dado é apagado. A carga e a aplicação atuais continuam funcionando
+ exatamente como antes — os campos novos só ficam vazios até um perfil de carga novo alimentá-los
+ (ver capítulo 13, ainda não publicado). Decisão deliberada: um release aditivo, não um
+ drop/recriação, para a v2.0.0 chegar ao ambiente do cliente sem impacto no que já roda.
3. Script
+Arquivo completo: sql/03_v2_ddl_schema_evolution.sql no repositório. Resumo do que ele faz:
ALTER TABLE TB_26AI_TECH_V2 ADD (
+ DEFINITION_CVE VARCHAR2(4000), DEFINITION_DESCRIPTION CLOB,
+ DEFINITION_SOLUTION CLOB, DEFINITION_SYNOPSIS VARCHAR2(4000),
+ SOFTWARE_VULNS CLOB, DEFINITION_CVSS3_BASE_SCORE NUMBER,
+ DEFINITION_CVSS3_BASE_VECTOR VARCHAR2(255), DEFINITION_CPE VARCHAR2(4000),
+ DEFINITION_EPSS_SCORE NUMBER, CISA_KEV_FLAG NUMBER(1),
+ EXPLOITED_BY_MALWARE_FLAG NUMBER(1), EXPLOITED_BY_NESSUS_FLAG NUMBER(1),
+ PORT NUMBER, ASSET_OPERATING_SYSTEM VARCHAR2(255),
+ LAST_FIXED TIMESTAMP(9) WITH TIME ZONE, TIME_TO_FIX NUMBER,
+ VULN_SLA_DATE TIMESTAMP(9) WITH TIME ZONE,
+ PATCH_PUBLISHED TIMESTAMP(9) WITH TIME ZONE,
+ VULNERABILITY_PUBLISHED TIMESTAMP(9) WITH TIME ZONE,
+ SOURCE_SCAN VARCHAR2(100), SCAN_ID VARCHAR2(255), SCAN_TARGET VARCHAR2(255),
+ RAW_JSON CLOB
+);
+
+ALTER TABLE TB_26AI_TECH_CMDB ADD (
+ INSTALL_STATUS VARCHAR2(100), LIFE_CYCLE_STAGE_STATUS VARCHAR2(100),
+ ASSIGNED_TO VARCHAR2(255), ATTESTATION_SCORE NUMBER,
+ ATTESTATION_STATUS VARCHAR2(100), ATTESTED_FLAG VARCHAR2(10),
+ ATTESTED_BY VARCHAR2(255), U_FIM_DO_SUPORTE DATE, LOCATION VARCHAR2(255),
+ ASSET_TAG VARCHAR2(100), U_SERVER_ROLE VARCHAR2(255), RAW_JSON CLOB
+);
+O arquivo real tem, além disso, o ANNOTATIONS("LLM_DESCRIPTION_PT_BR" ...) em cada
+coluna (padrão já usado em todo o schema, ajuda o Select AI a entender o dado) e um checkpoint de
+validação embutido — use o arquivo do repositório para rodar, não este resumo.
4. Como rodar
+-
+
- Abra Database Actions (ou SQL Developer/SQLcl) conectado como o schema
AMPMINSIGHTS— nunca comoADMIN.
+ - Confirme que está no ambiente correto antes de rodar (o script tem um aviso explícito sobre isso no topo). +
- Cole e rode
sql/03_v2_ddl_schema_evolution.sqlinteiro, de uma vez — é idempotente, pode rodar de novo sem erro se uma coluna já existir.
+
5. Validação
+O próprio script termina com este checkpoint — rode e confira STATUS = 'OK' nas duas linhas:
SELECT table_name, /* ... */ status, colunas_novas_encontradas
+FROM ( /* ver script completo */ );
+-- Esperado: TB_26AI_TECH_V2 -> OK (23) | TB_26AI_TECH_CMDB -> OK (12)
+Todas as colunas são novas e nullable — para desfazer, um ALTER TABLE ... DROP COLUMN por coluna adicionada (lista completa no final do script). Nenhum dado existente é afetado ao reverter.