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) | Colunas | Perfil a criar |
-templates/sample_DL_TECH_CMDB_V2.xlsx | 27 (16 originais + 11 novas — sem RAW_JSON) | DL_TECH_CMDB_V2 |
-templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx | 40 (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.
- - Baixe os dois arquivos de
templates/ neste repositório.
- - App Builder → Application 100 → Shared Components → Data Load Definitions → Create.
- - 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.
- - 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).
- - 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.
- - 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.
- - 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.
+ - App Builder → Application 100 → Shared Components → Data Load Definitions.
+ - Clique no botão verde Create (canto superior direito).
+ - Tela "Create Data Load - Method": marque "As copy of an existing Data Load Definition" (não "From scratch") → Next.
+ - Tela "Create Data Load - Application": no campo Copy From Application, selecione "100 ampminsights" (a própria aplicação) → Next.
+ - 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).
+
+
+ - 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: