展开promotion证据行
结论:workflow overview promotion candidate drilldown 现在展示8条evidence-ready候选的family、G-code path、source count和manifest-backed状态,hard block仍保持locked,baseline保持28/28/131/0。
This commit is contained in:
@@ -3990,6 +3990,20 @@ export function createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownVi
|
||||
sourceKind: classifyPromotionFamilySource(sourceFile),
|
||||
manifestBacked: candidate?.manifestChecked === true,
|
||||
}));
|
||||
const evidenceRows = candidateRows.map((row, index) => ({
|
||||
id: `evidence-${index + 1}`,
|
||||
label: row.id ?? `Evidence ${index + 1}`,
|
||||
value: row.gcodePath ?? "not provided",
|
||||
familyId: row.simConfigTarget ?? "not provided",
|
||||
sourceFileCount: Array.isArray(row.sourceFiles) ? row.sourceFiles.length : 0,
|
||||
manifestBacked: row.manifestChecked === true,
|
||||
status: row.complete === true &&
|
||||
row.currentNodeInventoryStatus === "PASS" &&
|
||||
row.blockedKind === "-" &&
|
||||
row.targetBrowserEvidence === "explicit-browser-diagnostics"
|
||||
? "evidence-ready"
|
||||
: "blocked",
|
||||
}));
|
||||
return {
|
||||
apiName: "ini-panel-shell-workflow-overview-promotion-candidate-drilldown-view-model",
|
||||
viewModelVersion: 1,
|
||||
@@ -4005,7 +4019,9 @@ export function createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownVi
|
||||
candidate,
|
||||
rows,
|
||||
sourceRows,
|
||||
evidenceRows,
|
||||
sourceFileCount: sourceRows.length,
|
||||
evidenceRowCount: evidenceRows.length,
|
||||
requiredReports,
|
||||
blockedFamilyExcluded,
|
||||
nodeInventoryReady,
|
||||
@@ -4029,11 +4045,19 @@ export function createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownRe
|
||||
...row,
|
||||
label: `${row.label} (${row.sourceKind})`,
|
||||
})),
|
||||
].map(({ id, label, value, sourceKind, manifestBacked }) => ({
|
||||
...(Array.isArray(viewModel?.evidenceRows) ? viewModel.evidenceRows : []).map((row) => ({
|
||||
...row,
|
||||
label: `${row.label} (${row.familyId})`,
|
||||
evidenceReady: row.status === "evidence-ready",
|
||||
})),
|
||||
].map(({ id, label, value, sourceKind, manifestBacked, familyId, sourceFileCount, evidenceReady }) => ({
|
||||
id,
|
||||
label,
|
||||
value: value == null ? "" : String(value),
|
||||
...(sourceKind ? { sourceKind } : {}),
|
||||
...(familyId ? { familyId } : {}),
|
||||
...(sourceFileCount != null ? { sourceFileCount: Number(sourceFileCount) } : {}),
|
||||
...(evidenceReady != null ? { evidenceReady: evidenceReady === true } : {}),
|
||||
...(manifestBacked != null ? { manifestBacked: manifestBacked === true } : {}),
|
||||
}));
|
||||
const ready = viewModel?.ready === true;
|
||||
@@ -4050,6 +4074,7 @@ export function createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownRe
|
||||
rows,
|
||||
rowCount: rows.length,
|
||||
sourceFileCount: viewModel?.sourceFileCount ?? 0,
|
||||
evidenceRowCount: viewModel?.evidenceRowCount ?? 0,
|
||||
dataset: viewModel?.dataset ?? {
|
||||
handoffPhase: ready ? "ready" : "blocked",
|
||||
handoffReady: ready ? "true" : "false",
|
||||
@@ -4154,6 +4179,12 @@ export function renderIniPanelShellWorkflowOverviewPromotionCandidateDrilldownSt
|
||||
term.dataset[`${effectiveRowDatasetPrefix}SourceKind`] = row.sourceKind;
|
||||
term.dataset[`${effectiveRowDatasetPrefix}ManifestBacked`] = row.manifestBacked ? "true" : "false";
|
||||
}
|
||||
if (row.familyId) {
|
||||
term.dataset[`${effectiveRowDatasetPrefix}FamilyId`] = row.familyId;
|
||||
term.dataset[`${effectiveRowDatasetPrefix}EvidenceReady`] = row.evidenceReady ? "true" : "false";
|
||||
term.dataset[`${effectiveRowDatasetPrefix}SourceFileCount`] = String(row.sourceFileCount ?? 0);
|
||||
term.dataset[`${effectiveRowDatasetPrefix}ManifestBacked`] = row.manifestBacked ? "true" : "false";
|
||||
}
|
||||
term.textContent = row.label;
|
||||
const detail = documentRef.createElement("dd");
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}Value`] = row.id;
|
||||
@@ -4162,6 +4193,12 @@ export function renderIniPanelShellWorkflowOverviewPromotionCandidateDrilldownSt
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}SourceKind`] = row.sourceKind;
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}ManifestBacked`] = row.manifestBacked ? "true" : "false";
|
||||
}
|
||||
if (row.familyId) {
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}FamilyId`] = row.familyId;
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}EvidenceReady`] = row.evidenceReady ? "true" : "false";
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}SourceFileCount`] = String(row.sourceFileCount ?? 0);
|
||||
detail.dataset[`${effectiveRowDatasetPrefix}ManifestBacked`] = row.manifestBacked ? "true" : "false";
|
||||
}
|
||||
detail.textContent = row.value;
|
||||
rowsNode.append(term, detail);
|
||||
}
|
||||
@@ -4171,6 +4208,7 @@ export function renderIniPanelShellWorkflowOverviewPromotionCandidateDrilldownSt
|
||||
rowCount: rows.length,
|
||||
rowIds: rows.map(({ id }) => id),
|
||||
sourceFileCount: rows.filter(({ sourceKind }) => Boolean(sourceKind)).length,
|
||||
evidenceRowCount: rows.filter(({ familyId }) => Boolean(familyId)).length,
|
||||
dataset: {
|
||||
handoffPhase: mountNode.dataset.handoffPhase,
|
||||
handoffReady: mountNode.dataset.handoffReady,
|
||||
|
||||
Reference in New Issue
Block a user