Corrige docs/13: roteiro real (Copy), não upload de amostra (inventado)
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 <noreply@anthropic.com>
This commit is contained in:
23
TASKS.md
23
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
|
||||
|
||||
@@ -127,27 +127,51 @@ coluna, e um `JSON_OBJECT(*)` sobre o staging resolve isso corretamente.</p>
|
||||
arquivo, exatamente como já faz hoje em cada release.</p>
|
||||
</div>
|
||||
|
||||
<p>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:</p>
|
||||
<div class="table-wrap">
|
||||
<table>
|
||||
<tr><th>Arquivo de amostra (no repositório)</th><th>Colunas</th><th>Perfil a criar</th></tr>
|
||||
<tr><td><code>templates/sample_DL_TECH_CMDB_V2.xlsx</code></td><td>27 (16 originais + 11 novas — sem <code>RAW_JSON</code>)</td><td><code>DL_TECH_CMDB_V2</code></td></tr>
|
||||
<tr><td><code>templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx</code></td><td>40 (18 originais + 22 novas — sem <code>RAW_JSON</code>)</td><td><code>DL_TECH_VULNERABILIDADE_V3</code></td></tr>
|
||||
</table>
|
||||
<div class="callout warning">
|
||||
<div class="callout-title">Passo a passo confirmado tela a tela — sem adivinhação</div>
|
||||
<p>A versão anterior deste capítulo sugeria "subir um arquivo de amostra para detectar colunas
|
||||
automaticamente" — essa tela <strong>não existe</strong> 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.</p>
|
||||
</div>
|
||||
|
||||
<ol>
|
||||
<li>Baixe os dois arquivos de <code>templates/</code> neste repositório.</li>
|
||||
<li>App Builder → Application 100 → <strong>Shared Components</strong> → <strong>Data Load Definitions</strong> → <strong>Create</strong>.</li>
|
||||
<li>Na tela de criação, escolha carregar a partir de um arquivo e faça upload do <code>sample_DL_TECH_CMDB_V2.xlsx</code> (ou o de vulnerabilidades) — o APEX lê o cabeçalho e monta o Data Profile com as 27 (ou 40) colunas automaticamente.</li>
|
||||
<li><strong>Name</strong>: <code>DL_TECH_CMDB_V2</code> (ou <code>DL_TECH_VULNERABILIDADE_V3</code>). <strong>Target Type</strong>: Table. <strong>Table Name</strong>: <code>TB_26AI_TECH_CMDB</code> (ou <code>TB_26AI_TECH_V2</code>). <strong>Loading Method</strong>: Append — mesma configuração do perfil original (ver aba "Data Load" da tela, igual à do <code>DL_TECH_CMDB_V1</code>).</li>
|
||||
<li>Em <strong>Edit Data Profile</strong>, confira o tipo de cada coluna nova contra a tabela da seção 3 (ou 4) — a maioria detecta como <code>VARCHAR2</code>/texto por padrão, então ajuste manualmente: <code>DEFINITION_CVSS3_BASE_SCORE</code>, <code>DEFINITION_EPSS_SCORE</code>, <code>PORT</code>, <code>TIME_TO_FIX</code>, <code>ATTESTATION_SCORE</code> → <code>NUMBER</code>; <code>LAST_FIXED</code>, <code>VULN_SLA_DATE</code>, <code>PATCH_PUBLISHED</code>, <code>VULNERABILITY_PUBLISHED</code> → data/timestamp; <code>U_FIM_DO_SUPORTE</code> → data, máscara <code>DD-MM-YYYY</code>.</li>
|
||||
<li>Para os campos flag (<code>ATTESTED_FLAG</code>, <code>CISA_KEV_FLAG</code>, <code>EXPLOITED_BY_MALWARE_FLAG</code>, <code>EXPLOITED_BY_NESSUS_FLAG</code>): configure a transformação de valor (Column Transformation) <code>Verdadeiro(a)/true → 1</code>, <code>Falso(a)/false → 0</code> — mesma convenção já usada em <code>SOX</code>/<code>COFRE</code>/<code>TENABLE</code>/<code>SIEM</code>.</li>
|
||||
<li>Salve e teste com uma planilha pequena (5-10 linhas de ativos <code>AM...</code>, com dado real nas colunas — não só o cabeçalho) antes de rodar a carga completa.</li>
|
||||
<li>App Builder → Application 100 → <strong>Shared Components</strong> → <strong>Data Load Definitions</strong>.</li>
|
||||
<li>Clique no botão verde <strong>Create</strong> (canto superior direito).</li>
|
||||
<li><strong>Tela "Create Data Load - Method"</strong>: marque <strong>"As copy of an existing Data Load Definition"</strong> (não "From scratch") → <strong>Next</strong>.</li>
|
||||
<li><strong>Tela "Create Data Load - Application"</strong>: no campo <strong>Copy From Application</strong>, selecione <strong>"100 ampminsights"</strong> (a própria aplicação) → <strong>Next</strong>.</li>
|
||||
<li><strong>Tela "Create Data Load - As Copy"</strong>: aparece uma tabela com as 3 definições que já existem (<code>DL_TECH_CMDB_V1</code>, <code>DL_TECH_VULNERABILIDADES</code>, <code>DL_TECH_VULNERABILIDADE_V2</code>), cada uma com um campo <strong>To Name</strong> e um dropdown <strong>Action</strong> (No/Yes/Copy and Subscribe). Faça, nesta mesma tela, as duas cópias de uma vez:
|
||||
<ul>
|
||||
<li>Linha <code>DL_TECH_CMDB_V1</code>: mude <strong>Action</strong> para <strong>Yes</strong>; no campo <strong>To Name</strong>, apague "Copy of DL_TECH_CMDB_V1" e escreva <code>DL_TECH_CMDB_V2</code>.</li>
|
||||
<li>Linha <code>DL_TECH_VULNERABILIDADE_V2</code>: mude <strong>Action</strong> para <strong>Yes</strong>; no campo <strong>To Name</strong>, escreva <code>DL_TECH_VULNERABILIDADE_V3</code>.</li>
|
||||
<li>Linha <code>DL_TECH_VULNERABILIDADES</code>: deixe <strong>Action = No</strong> (essa não faz parte do v2.0.0).</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Clique em <strong>Copy Data Load Definition</strong> (canto inferior direito).</li>
|
||||
</ol>
|
||||
|
||||
<div class="callout info">
|
||||
<div class="callout-title">A partir daqui, ainda não confirmado — preciso da próxima tela</div>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
|
||||
<p>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:</p>
|
||||
<ul>
|
||||
<li><code>DEFINITION_CVSS3_BASE_SCORE</code>, <code>DEFINITION_EPSS_SCORE</code>, <code>PORT</code>, <code>TIME_TO_FIX</code>, <code>ATTESTATION_SCORE</code> → tipo <code>NUMBER</code>.</li>
|
||||
<li><code>LAST_FIXED</code>, <code>VULN_SLA_DATE</code>, <code>PATCH_PUBLISHED</code>, <code>VULNERABILITY_PUBLISHED</code> → data/timestamp.</li>
|
||||
<li><code>U_FIM_DO_SUPORTE</code> → data, máscara <code>DD-MM-YYYY</code>.</li>
|
||||
<li><code>ATTESTED_FLAG</code>, <code>CISA_KEV_FLAG</code>, <code>EXPLOITED_BY_MALWARE_FLAG</code>, <code>EXPLOITED_BY_NESSUS_FLAG</code> → transformação de valor <code>Verdadeiro(a)/true → 1</code>, <code>Falso(a)/false → 0</code> (mesma convenção já usada em <code>SOX</code>/<code>COFRE</code>/<code>TENABLE</code>/<code>SIEM</code>).</li>
|
||||
</ul>
|
||||
<p>Os arquivos <code>templates/sample_DL_TECH_CMDB_V2.xlsx</code> e
|
||||
<code>templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx</code> 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 <code>AM...</code> com dado real antes de subir) pra
|
||||
validar a carga depois que o perfil estiver pronto, na seção 6.</p>
|
||||
|
||||
<h2>6. Como validar</h2>
|
||||
<p>Depois de rodar uma carga de teste pequena:</p>
|
||||
<div class="code-block">
|
||||
|
||||
Reference in New Issue
Block a user