From 8ef36eb1cccb8b2a2beb0a21ce985fd0c1ce1302 Mon Sep 17 00:00:00 2001 From: Antonio Sergio Rodrigues Figueiredo Date: Wed, 9 Sep 2026 19:23:17 -0300 Subject: [PATCH] =?UTF-8?q?Corrige=20docs/13:=20roteiro=20real=20(Copy),?= =?UTF-8?q?=20n=C3=A3o=20upload=20de=20amostra=20(inventado)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Confirmado contra prints reais do App Builder: o wizard de criação só oferece 'From scratch' ou 'As copy of an existing Data Load Definition' — não existe tela de upload de amostra para autodetectar colunas, como eu tinha documentado antes sem verificar. Corrige o roteiro pra seguir exatamente as telas reais (Method -> Application -> As Copy, renomeando DL_TECH_CMDB_V1 -> DL_TECH_CMDB_V2 e DL_TECH_VULNERABILIDADE_V2 -> DL_TECH_VULNERABILIDADE_V3 na mesma tela). Marca explicitamente onde o roteiro ainda não está confirmado (tela pós-'Copy Data Load Definition') em vez de continuar adivinhando. Reposiciona os templates/*.xlsx: servem para testar a carga depois de pronta, não para criar o perfil. Co-Authored-By: Claude Sonnet 5 --- TASKS.md | 23 ++++++++------- docs/13-v2-perfis-carga.html | 56 +++++++++++++++++++++++++----------- 2 files changed, 53 insertions(+), 26 deletions(-) diff --git a/TASKS.md b/TASKS.md index 4814676..b535da6 100644 --- a/TASKS.md +++ b/TASKS.md @@ -43,16 +43,19 @@ teste — a menos que você peça explicitamente o contrário. (bloco grande) foi pulado na primeira passada — o checkpoint de compilação deu `VALID` porque a view *antiga* (46 colunas) já era válida antes. Resolvido rodando o bloco explicitamente; segunda checagem confirmou as 81 colunas. -- [ ] **Mapeamento pronto + templates de amostra prontos** (ver - [docs/13-v2-perfis-carga.html](docs/13-v2-perfis-carga.html) e `templates/`) — falta criar - os dois perfis no App Builder (uma vez, seu acesso, não do cliente — upload dos templates de - amostra, não preenchimento campo a campo) e depois gerar um export completo novo da - Application 100 (captura os perfis automaticamente, com IDs corretos). O cliente só importa - esse export, nunca toca em Data Load Definitions — mesmo fluxo de sempre. **Achado - importante:** essas definições vivem dentro de `sql/02_ampminsights_apex_app.sql` via API - interna do APEX (`wwv_flow_imp_shared`) — não escrever isso à mão fora de um import - completo, risco de corromper os Shared Components. `RAW_JSON` deliberadamente fora do - escopo deste item — depende do item de staging abaixo. +- [ ] **Em andamento, roteiro sendo confirmado tela a tela** (ver + [docs/13-v2-perfis-carga.html](docs/13-v2-perfis-carga.html)) — mapeamento de colunas + pronto; passo a passo real do App Builder confirmado até "Copy Data Load Definition" + (método = cópia de `DL_TECH_CMDB_V1`/`DL_TECH_VULNERABILIDADE_V2`, renomeadas pra + `DL_TECH_CMDB_V2`/`DL_TECH_VULNERABILIDADE_V3` — **não** "upload de amostra", isso foi um + chute meu já corrigido). Falta confirmar a tela seguinte (adicionar as colunas novas na + cópia) antes de completar o roteiro. Depois de pronto: exportar a Application 100 de novo + (captura os perfis com IDs corretos) — o cliente só importa esse export, nunca toca em Data + Load Definitions. **Achado importante:** essas definições vivem dentro de + `sql/02_ampminsights_apex_app.sql` via API interna do APEX (`wwv_flow_imp_shared`) — não + escrever isso à mão fora de um import completo, risco de corromper os Shared Components. + `RAW_JSON` deliberadamente fora do escopo deste item — depende do item de staging abaixo. + Os `templates/*.xlsx` servem pra testar a carga depois de pronta, não pra criar o perfil. - [ ] Pipeline de staging: bucket → `TB_26AI_TECH_V2_STG` via `DBMS_CLOUD.COPY_DATA` (tabela nova, não mexe nas existentes) - [ ] `MERGE` com histórico (`LOAD_BATCH_ID`, `TB_26AI_TECH_V2_HIST` — tabela nova), honrando o diff --git a/docs/13-v2-perfis-carga.html b/docs/13-v2-perfis-carga.html index 2c476e8..121eb7c 100644 --- a/docs/13-v2-perfis-carga.html +++ b/docs/13-v2-perfis-carga.html @@ -127,27 +127,51 @@ coluna, e um `JSON_OBJECT(*)` sobre o staging resolve isso corretamente.

arquivo, exatamente como já faz hoje em cada release.

-

Boa notícia: não precisa preencher campo a campo. O jeito mais rápido é criar o perfil do zero -apontando pra um arquivo de amostra (só cabeçalho, sem dados) com todas as colunas certas — o APEX -detecta as colunas automaticamente a partir do cabeçalho. Já preparei os dois arquivos:

-
- - - - -
Arquivo de amostra (no repositório)ColunasPerfil a criar
templates/sample_DL_TECH_CMDB_V2.xlsx27 (16 originais + 11 novas — sem RAW_JSON)DL_TECH_CMDB_V2
templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx40 (18 originais + 22 novas — sem RAW_JSON)DL_TECH_VULNERABILIDADE_V3
+
+
Passo a passo confirmado tela a tela — sem adivinhação
+

A versão anterior deste capítulo sugeria "subir um arquivo de amostra para detectar colunas + automaticamente" — essa tela não existe neste wizard, era um chute meu, não + confirmado contra o ambiente real. O roteiro abaixo segue exatamente as telas reais, uma a uma. + Onde uma tela ainda não foi vista/confirmada, isso está marcado explicitamente — não vou + documentar o que não vi.

    -
  1. Baixe os dois arquivos de templates/ neste repositório.
  2. -
  3. App Builder → Application 100 → Shared Components → Data Load Definitions → Create.
  4. -
  5. Na tela de criação, escolha carregar a partir de um arquivo e faça upload do sample_DL_TECH_CMDB_V2.xlsx (ou o de vulnerabilidades) — o APEX lê o cabeçalho e monta o Data Profile com as 27 (ou 40) colunas automaticamente.
  6. -
  7. Name: DL_TECH_CMDB_V2 (ou DL_TECH_VULNERABILIDADE_V3). Target Type: Table. Table Name: TB_26AI_TECH_CMDB (ou TB_26AI_TECH_V2). Loading Method: Append — mesma configuração do perfil original (ver aba "Data Load" da tela, igual à do DL_TECH_CMDB_V1).
  8. -
  9. Em Edit Data Profile, confira o tipo de cada coluna nova contra a tabela da seção 3 (ou 4) — a maioria detecta como VARCHAR2/texto por padrão, então ajuste manualmente: DEFINITION_CVSS3_BASE_SCORE, DEFINITION_EPSS_SCORE, PORT, TIME_TO_FIX, ATTESTATION_SCORE → NUMBER; LAST_FIXED, VULN_SLA_DATE, PATCH_PUBLISHED, VULNERABILITY_PUBLISHED → data/timestamp; U_FIM_DO_SUPORTE → data, máscara DD-MM-YYYY.
  10. -
  11. Para os campos flag (ATTESTED_FLAG, CISA_KEV_FLAG, EXPLOITED_BY_MALWARE_FLAG, EXPLOITED_BY_NESSUS_FLAG): configure a transformação de valor (Column Transformation) Verdadeiro(a)/true → 1, Falso(a)/false → 0 — mesma convenção já usada em SOX/COFRE/TENABLE/SIEM.
  12. -
  13. Salve e teste com uma planilha pequena (5-10 linhas de ativos AM..., com dado real nas colunas — não só o cabeçalho) antes de rodar a carga completa.
  14. +
  15. App Builder → Application 100 → Shared Components → Data Load Definitions.
  16. +
  17. Clique no botão verde Create (canto superior direito).
  18. +
  19. Tela "Create Data Load - Method": marque "As copy of an existing Data Load Definition" (não "From scratch") → Next.
  20. +
  21. Tela "Create Data Load - Application": no campo Copy From Application, selecione "100 ampminsights" (a própria aplicação) → Next.
  22. +
  23. Tela "Create Data Load - As Copy": aparece uma tabela com as 3 definições que já existem (DL_TECH_CMDB_V1, DL_TECH_VULNERABILIDADES, DL_TECH_VULNERABILIDADE_V2), cada uma com um campo To Name e um dropdown Action (No/Yes/Copy and Subscribe). Faça, nesta mesma tela, as duas cópias de uma vez: +
      +
    • Linha DL_TECH_CMDB_V1: mude Action para Yes; no campo To Name, apague "Copy of DL_TECH_CMDB_V1" e escreva DL_TECH_CMDB_V2.
    • +
    • Linha DL_TECH_VULNERABILIDADE_V2: mude Action para Yes; no campo To Name, escreva DL_TECH_VULNERABILIDADE_V3.
    • +
    • Linha DL_TECH_VULNERABILIDADES: deixe Action = No (essa não faz parte do v2.0.0).
    • +
    +
  24. +
  25. Clique em Copy Data Load Definition (canto inferior direito).
+
+
A partir daqui, ainda não confirmado — preciso da próxima tela
+

O que aparece depois de clicar em "Copy Data Load Definition", e como adicionar as colunas + novas (seção 3/4) dentro da cópia — ainda não vi essa tela. Assim que você tiver o print, eu + completo o roteiro com o mesmo nível de precisão, em vez de adivinhar.

+
+ +

Depois de ter as colunas novas adicionadas na cópia (roteiro a completar), os ajustes que já sei +que vão ser necessários, pela tabela da seção 3/4:

+
    +
  • DEFINITION_CVSS3_BASE_SCORE, DEFINITION_EPSS_SCORE, PORT, TIME_TO_FIX, ATTESTATION_SCORE → tipo NUMBER.
  • +
  • LAST_FIXED, VULN_SLA_DATE, PATCH_PUBLISHED, VULNERABILITY_PUBLISHED → data/timestamp.
  • +
  • U_FIM_DO_SUPORTE → data, máscara DD-MM-YYYY.
  • +
  • ATTESTED_FLAG, CISA_KEV_FLAG, EXPLOITED_BY_MALWARE_FLAG, EXPLOITED_BY_NESSUS_FLAG → transformação de valor Verdadeiro(a)/true → 1, Falso(a)/false → 0 (mesma convenção já usada em SOX/COFRE/TENABLE/SIEM).
  • +
+

Os arquivos templates/sample_DL_TECH_CMDB_V2.xlsx e +templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx continuam úteis, só que num momento +diferente do que eu disse antes: não servem pra criar o perfil, servem como planilha de teste (só +o cabeçalho — adicione 5-10 linhas de ativos AM... com dado real antes de subir) pra +validar a carga depois que o perfil estiver pronto, na seção 6.

+

6. Como validar

Depois de rodar uma carga de teste pequena: