Baseline v2.0.0-dev: fork de ampmInsights_V1
- Copia integral de ampmInsights_V1/ (docs/ + sql/), que o usuário confirma ser exatamente o que foi usado para construir e implementar ampmInsights_V1_Cliente no cliente. - Traz docs/10-carga-cmdb-vulnerabilidades.html de V1_Cliente (existia lá, faltava em V1 — gap de conteúdo, não só de tom). - Rebrand mecânico 'Documentação V1' -> 'Documentação V2' nas 10 páginas de docs + link de navegação para o capítulo 10 adicionado onde faltava. - ampmInsights_V1/ e ampmInsights_V1_Cliente/ ficam congelados a partir de agora (réplica validada, já implementada no cliente) — todo o trabalho de v2.0.0 (schema aditivo: ALTER/MERGE, sem DROP) acontece nesta pasta. - Adiciona TASKS.md e CHANGELOG.md próprios desta geração. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
438
docs/assets/main.css
Normal file
438
docs/assets/main.css
Normal file
@@ -0,0 +1,438 @@
|
||||
/* ampmInsights V1 - documentation styles
|
||||
Paleta derivada do Oracle_PPT-template_FY26.pptx (tema "Custom 43"):
|
||||
accent3 #C74634 (Oracle Red), accent1 #04536F (deep teal),
|
||||
dk1 #2A2F2F (charcoal), lt2 #FBF9F8 (warm off-white),
|
||||
accent4 #F0CC71 (gold), accent5 #89B2B0, accent6 #86B596 */
|
||||
|
||||
:root {
|
||||
--red: #C74634;
|
||||
--red-dark: #a8382a;
|
||||
--teal: #04536F;
|
||||
--teal-dark: #063C4E;
|
||||
--charcoal: #2A2F2F;
|
||||
--paper: #FBF9F8;
|
||||
--paper-alt: #F1ECE8;
|
||||
--gold: #F0CC71;
|
||||
--sage: #86B596;
|
||||
--dusty-teal: #89B2B0;
|
||||
--line: #E2DCD6;
|
||||
--text: #201E1C;
|
||||
--text-soft: #55524E;
|
||||
--card-bg: #FFFFFF;
|
||||
--code-bg: #22282B;
|
||||
--code-text: #E7EEF0;
|
||||
--radius: 10px;
|
||||
--font-head: Georgia, "Oracle Sans", "Oracle Sans Tab", serif;
|
||||
--font-body: "Oracle Sans", "Oracle Sans Tab", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
||||
}
|
||||
|
||||
:root[data-theme="dark"] {
|
||||
--paper: #1B1E1F;
|
||||
--paper-alt: #14171A;
|
||||
--card-bg: #24282A;
|
||||
--text: #F1ECE8;
|
||||
--text-soft: #C7C2BC;
|
||||
--line: #3A3F40;
|
||||
--code-bg: #101315;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root:not([data-theme="light"]) {
|
||||
--paper: #1B1E1F;
|
||||
--paper-alt: #14171A;
|
||||
--card-bg: #24282A;
|
||||
--text: #F1ECE8;
|
||||
--text-soft: #C7C2BC;
|
||||
--line: #3A3F40;
|
||||
--code-bg: #101315;
|
||||
}
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--font-body);
|
||||
background: var(--paper);
|
||||
color: var(--text);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
a { color: var(--teal); }
|
||||
:root[data-theme="dark"] a, @media (prefers-color-scheme: dark) { }
|
||||
a:hover { color: var(--red); }
|
||||
|
||||
.layout {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ---------- Sidebar ---------- */
|
||||
.sidebar {
|
||||
width: 272px;
|
||||
flex: 0 0 272px;
|
||||
background: var(--charcoal);
|
||||
color: #EFECE8;
|
||||
padding: 20px 16px 32px;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.brand {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 8px;
|
||||
padding: 6px 8px 18px;
|
||||
border-bottom: 2px solid var(--red);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.brand .oracle {
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.06em;
|
||||
color: var(--red);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.brand .name {
|
||||
font-family: var(--font-head);
|
||||
font-size: 19px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.sidebar .kicker {
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: #9FB3B8;
|
||||
padding: 14px 8px 6px;
|
||||
}
|
||||
|
||||
.nav-list { list-style: none; margin: 0; padding: 0; }
|
||||
.nav-list li { margin: 2px 0; }
|
||||
|
||||
.nav-list a {
|
||||
display: block;
|
||||
padding: 9px 10px;
|
||||
border-radius: 8px;
|
||||
color: #D8D4CF;
|
||||
text-decoration: none;
|
||||
font-size: 14.5px;
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.nav-list a:hover { background: rgba(255,255,255,0.06); color: #fff; }
|
||||
|
||||
.nav-list a.active {
|
||||
background: rgba(199,70,52,0.18);
|
||||
color: #fff;
|
||||
border-left-color: var(--red);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.nav-list .step-no {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
color: var(--gold);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.sidebar-footer {
|
||||
margin-top: 24px;
|
||||
padding: 12px 10px 0;
|
||||
border-top: 1px solid rgba(255,255,255,0.12);
|
||||
font-size: 11.5px;
|
||||
color: #9C9793;
|
||||
}
|
||||
|
||||
/* ---------- Main content ---------- */
|
||||
.content {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
padding: 40px clamp(20px, 5vw, 64px) 80px;
|
||||
max-width: 980px;
|
||||
}
|
||||
|
||||
.page-kicker {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.10em;
|
||||
font-size: 12px;
|
||||
color: var(--red);
|
||||
font-weight: 700;
|
||||
margin: 0 0 6px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: var(--font-head);
|
||||
font-size: clamp(28px, 3.4vw, 38px);
|
||||
margin: 0 0 10px;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
h1 + .lede {
|
||||
font-size: 17px;
|
||||
color: var(--text-soft);
|
||||
max-width: 68ch;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-head);
|
||||
font-size: 23px;
|
||||
margin: 46px 0 14px;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 1px solid var(--line);
|
||||
color: var(--teal-dark);
|
||||
}
|
||||
:root[data-theme="dark"] h2 { color: var(--dusty-teal); }
|
||||
|
||||
h3 {
|
||||
font-size: 17.5px;
|
||||
margin: 28px 0 10px;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
p { color: var(--text); max-width: 74ch; }
|
||||
.content ul, .content ol { max-width: 74ch; }
|
||||
.content li { margin-bottom: 6px; }
|
||||
|
||||
code {
|
||||
font-family: var(--font-mono);
|
||||
background: var(--paper-alt);
|
||||
border: 1px solid var(--line);
|
||||
padding: 1px 5px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.88em;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: var(--code-bg);
|
||||
color: var(--code-text);
|
||||
border-radius: var(--radius);
|
||||
padding: 16px 18px;
|
||||
overflow-x: auto;
|
||||
font-size: 13px;
|
||||
line-height: 1.55;
|
||||
margin: 14px 0 22px;
|
||||
}
|
||||
pre code { background: none; border: none; padding: 0; color: inherit; }
|
||||
|
||||
/* ---------- Copyable code blocks ---------- */
|
||||
.code-block {
|
||||
max-width: none;
|
||||
margin: 14px 0 22px;
|
||||
border-radius: var(--radius);
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--line);
|
||||
}
|
||||
.code-block .code-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
background: #171b1d;
|
||||
color: #B9C4C7;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.code-block .code-label {
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.03em;
|
||||
text-transform: uppercase;
|
||||
font-size: 11px;
|
||||
color: #9FB3B8;
|
||||
}
|
||||
.code-block pre {
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.copy-btn {
|
||||
border: 1px solid rgba(255,255,255,0.18);
|
||||
background: rgba(255,255,255,0.06);
|
||||
color: #EFECE8;
|
||||
font-family: var(--font-body);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
padding: 5px 12px;
|
||||
border-radius: 999px;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
transition: background 0.15s ease;
|
||||
}
|
||||
.copy-btn:hover { background: rgba(255,255,255,0.14); }
|
||||
.copy-btn:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
|
||||
.copy-btn.copied { background: var(--sage); border-color: var(--sage); color: #10231a; }
|
||||
|
||||
/* ---------- Callouts ---------- */
|
||||
.callout {
|
||||
border-radius: var(--radius);
|
||||
padding: 16px 18px;
|
||||
margin: 18px 0 22px;
|
||||
border: 1px solid var(--line);
|
||||
background: var(--card-bg);
|
||||
max-width: 74ch;
|
||||
}
|
||||
.callout .callout-title {
|
||||
font-weight: 700;
|
||||
font-size: 13px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-bottom: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.callout.info { border-left: 4px solid var(--teal); }
|
||||
.callout.info .callout-title { color: var(--teal-dark); }
|
||||
.callout.warning { border-left: 4px solid var(--gold); background: color-mix(in srgb, var(--gold) 10%, var(--card-bg)); }
|
||||
.callout.warning .callout-title { color: #8a6a10; }
|
||||
.callout.danger { border-left: 4px solid var(--red); background: color-mix(in srgb, var(--red) 7%, var(--card-bg)); }
|
||||
.callout.danger .callout-title { color: var(--red-dark); }
|
||||
.callout.success { border-left: 4px solid var(--sage); }
|
||||
.callout.success .callout-title { color: #2f6b45; }
|
||||
|
||||
/* ---------- Cards / grids ---------- */
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||
gap: 14px;
|
||||
margin: 18px 0 26px;
|
||||
}
|
||||
|
||||
.card {
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
padding: 16px 18px;
|
||||
}
|
||||
|
||||
.card h4 {
|
||||
margin: 0 0 6px;
|
||||
font-size: 15px;
|
||||
color: var(--teal-dark);
|
||||
}
|
||||
:root[data-theme="dark"] .card h4 { color: var(--dusty-teal); }
|
||||
.card p { font-size: 14px; color: var(--text-soft); margin: 0; }
|
||||
|
||||
.stat {
|
||||
background: var(--charcoal);
|
||||
color: #fff;
|
||||
border-radius: var(--radius);
|
||||
padding: 16px 14px;
|
||||
text-align: center;
|
||||
}
|
||||
.stat .num { font-family: var(--font-head); font-size: 26px; color: var(--gold); display: block; }
|
||||
.stat .lbl { font-size: 12px; color: #C9C5C0; }
|
||||
|
||||
/* ---------- Steps ---------- */
|
||||
.steps { counter-reset: step; list-style: none; padding: 0; max-width: 74ch; }
|
||||
.steps > li {
|
||||
counter-increment: step;
|
||||
position: relative;
|
||||
padding: 4px 0 18px 42px;
|
||||
border-left: 2px solid var(--line);
|
||||
margin-left: 14px;
|
||||
}
|
||||
.steps > li:last-child { border-left-color: transparent; padding-bottom: 2px; }
|
||||
.steps > li::before {
|
||||
content: counter(step);
|
||||
position: absolute;
|
||||
left: -15px;
|
||||
top: 0;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 50%;
|
||||
background: var(--red);
|
||||
color: #fff;
|
||||
font-weight: 700;
|
||||
font-size: 13px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.steps h4 { margin: 0 0 4px; font-size: 15.5px; }
|
||||
.steps p { margin: 0; font-size: 14px; color: var(--text-soft); }
|
||||
|
||||
/* ---------- Table ---------- */
|
||||
.table-wrap { overflow-x: auto; margin: 16px 0 26px; }
|
||||
table { border-collapse: collapse; width: 100%; min-width: 480px; font-size: 14px; }
|
||||
th, td { text-align: left; padding: 9px 12px; border-bottom: 1px solid var(--line); }
|
||||
th { background: var(--paper-alt); font-size: 12.5px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-soft); }
|
||||
tr:last-child td { border-bottom: none; }
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
font-size: 11.5px;
|
||||
font-weight: 700;
|
||||
padding: 2px 9px;
|
||||
border-radius: 999px;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
.badge.ok { background: rgba(134,181,150,0.22); color: #2f6b45; }
|
||||
.badge.todo { background: rgba(240,204,113,0.28); color: #8a6a10; }
|
||||
.badge.risk { background: rgba(199,70,52,0.16); color: var(--red-dark); }
|
||||
|
||||
.pillnav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 56px;
|
||||
padding-top: 18px;
|
||||
border-top: 1px solid var(--line);
|
||||
font-size: 14px;
|
||||
}
|
||||
.pillnav a { text-decoration: none; font-weight: 600; }
|
||||
.pillnav .next { margin-left: auto; }
|
||||
|
||||
/* ---------- Diagram (CSS/SVG based, self-contained) ---------- */
|
||||
.diagram {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
margin: 20px 0 28px;
|
||||
}
|
||||
.diagram .node {
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 10px;
|
||||
padding: 12px 14px;
|
||||
font-size: 13px;
|
||||
min-width: 150px;
|
||||
text-align: center;
|
||||
}
|
||||
.diagram .node.accent { border-color: var(--red); }
|
||||
.diagram .node strong { display: block; font-size: 13.5px; margin-bottom: 2px; }
|
||||
.diagram .arrow { color: var(--text-soft); font-size: 20px; }
|
||||
|
||||
/* ---------- Mobile nav ---------- */
|
||||
.menu-toggle { display: none; }
|
||||
|
||||
@media (max-width: 880px) {
|
||||
.layout { flex-direction: column; }
|
||||
.sidebar {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
flex-basis: auto;
|
||||
height: auto;
|
||||
max-height: none;
|
||||
}
|
||||
.menu-toggle {
|
||||
display: block;
|
||||
background: var(--red);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
padding: 8px 12px;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.nav-list { display: none; }
|
||||
.sidebar.open .nav-list { display: block; }
|
||||
.content { padding: 28px 18px 60px; }
|
||||
}
|
||||
49
docs/assets/main.js
Normal file
49
docs/assets/main.js
Normal file
@@ -0,0 +1,49 @@
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var btn = document.querySelector('.menu-toggle');
|
||||
var sidebar = document.querySelector('.sidebar');
|
||||
if (btn && sidebar) {
|
||||
btn.addEventListener('click', function () {
|
||||
sidebar.classList.toggle('open');
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelectorAll('.copy-btn').forEach(function (button) {
|
||||
button.addEventListener('click', function () {
|
||||
var block = button.closest('.code-block');
|
||||
var code = block ? block.querySelector('pre code, pre') : null;
|
||||
if (!code) return;
|
||||
var text = code.textContent;
|
||||
|
||||
function showCopied() {
|
||||
var original = button.textContent;
|
||||
button.textContent = 'Copiado!';
|
||||
button.classList.add('copied');
|
||||
setTimeout(function () {
|
||||
button.textContent = original;
|
||||
button.classList.remove('copied');
|
||||
}, 1800);
|
||||
}
|
||||
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
navigator.clipboard.writeText(text).then(showCopied, function () {
|
||||
fallbackCopy(text, showCopied);
|
||||
});
|
||||
} else {
|
||||
fallbackCopy(text, showCopied);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function fallbackCopy(text, done) {
|
||||
var ta = document.createElement('textarea');
|
||||
ta.value = text;
|
||||
ta.style.position = 'fixed';
|
||||
ta.style.opacity = '0';
|
||||
document.body.appendChild(ta);
|
||||
ta.focus();
|
||||
ta.select();
|
||||
try { document.execCommand('copy'); } catch (e) { /* no-op */ }
|
||||
document.body.removeChild(ta);
|
||||
done();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user