refactor: unified ingest pipeline + modular Redfish profile framework

Implement the full architectural plan: unified ingest.Service entry point
for archive and Redfish payloads, modular redfishprofile package with
composable profiles (generic, ami-family, msi, supermicro, dell,
hgx-topology), score-based profile matching with fallback expansion mode,
and profile-driven acquisition/analysis plans.

Vendor-specific logic moved out of common executors and into profile hooks.
GPU chassis lookup strategies and known storage recovery collections
(IntelVROC/HA-RAID/MRVL) now live in ResolvedAnalysisPlan, populated by
profiles at analysis time. Replay helpers read from the plan; no hardcoded
path lists remain in generic code.

Also splits redfish_replay.go into domain modules (gpu, storage, inventory,
fru, profiles) and adds full fixture/matcher/directive test coverage
including Dell, AMI, unknown-vendor fallback, and deterministic ordering.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Mikhail Chusavitin
2026-03-18 08:48:58 +03:00
parent d8d3d8c524
commit d650a6ba1c
45 changed files with 5231 additions and 1011 deletions

View File

@@ -357,6 +357,82 @@ main {
transition: width 0.25s ease;
}
.job-active-modules {
margin-bottom: 0.85rem;
}
.job-module-chips {
display: flex;
flex-wrap: wrap;
gap: 0.45rem;
margin-top: 0.35rem;
}
.job-module-chip {
display: inline-flex;
align-items: center;
gap: 0.4rem;
background: #eef6ff;
border: 1px solid #bfdcff;
border-radius: 999px;
padding: 0.32rem 0.68rem;
line-height: 1;
}
.job-module-chip-name {
font-size: 0.82rem;
color: #1f2937;
font-weight: 600;
}
.job-module-chip-score {
font-size: 0.72rem;
color: #1d4ed8;
background: #dbeafe;
border: 1px solid #bfdbfe;
border-radius: 999px;
padding: 0.1rem 0.38rem;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
.job-debug-info {
margin-bottom: 0.85rem;
border: 1px solid #dbe5f0;
background: #f8fbff;
border-radius: 8px;
padding: 0.75rem;
}
.job-debug-summary {
font-size: 0.82rem;
color: #334155;
margin-top: 0.35rem;
}
.job-phase-telemetry {
margin-top: 0.55rem;
display: grid;
gap: 0.35rem;
}
.job-phase-row {
display: grid;
grid-template-columns: minmax(120px, 180px) repeat(4, minmax(60px, auto));
gap: 0.5rem;
align-items: center;
font-size: 0.8rem;
}
.job-phase-name {
color: #0f172a;
font-weight: 600;
}
.job-phase-metric {
color: #475569;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
.meta-label {
color: #64748b;
font-weight: 600;