按接续文件text31持续推进

结论:已将五项evidence expansion从API/smoke推进到real simulation diagnostics panel和release URL/INI workflow完整列表可见面;baseline保持82/82/77/0,promotionAllowed保持false。
This commit is contained in:
2026-06-20 08:26:55 +08:00
parent fab42a8bdb
commit 8a1c4699b1
13 changed files with 265 additions and 4 deletions

View File

@@ -1757,6 +1757,7 @@ M2
<div><span>Shortcut</span><strong data-diagnostics="shortcut">-</strong></div>
<div class="promotion-family-panel" data-promotion-family-rows></div>
<div class="promotion-candidate-panel" data-promotion-candidate-summary></div>
<div class="promotion-candidate-panel" data-evidence-expansion-summary></div>
<div class="tool-table-mini" data-axis-shell="tool-table">
<table aria-label="Loaded tool table">
<thead>
@@ -2788,6 +2789,67 @@ M2
return summary;
}
function createVirtualHalEvidenceExpansionSummary(
report = createVirtualHalSimConfigEvidenceExpansionReport(),
) {
const rows = Array.isArray(report.rows) ? report.rows : [];
const readyRows = rows.filter((row) => row.complete === true);
const blockedRows = rows.filter((row) => row.complete !== true);
const promotionAllowedRows = rows.filter((row) => row.promotionAllowed === true);
const preferredRow = rows[0] ?? null;
const ready = report.complete === true &&
report.inventoryBaselineUnchanged === true &&
report.promotionAllowed === false &&
readyRows.length === rows.length &&
blockedRows.length === 0 &&
promotionAllowedRows.length === 0;
return {
apiName: "real-browser-simulation-evidence-expansion-summary",
summaryVersion: 1,
phase: ready ? "ready" : "blocked",
ready,
candidateCount: rows.length,
readyCandidateCount: readyRows.length,
preferredCandidateId: preferredRow?.id ?? null,
candidateIds: rows.map((row) => row.id),
gcodePaths: rows.map((row) => row.gcodePath),
sourceFileCount: new Set(rows.flatMap((row) => row.sourceFiles ?? [])).size,
promotionAllowedCount: promotionAllowedRows.length,
inventoryBaselineUnchanged: report.inventoryBaselineUnchanged === true,
rows: [
{ id: "candidate-count", label: "Expansion", value: `${readyRows.length}/${rows.length} ready` },
{ id: "preferred-candidate", label: "First case", value: preferredRow?.id ?? "missing" },
{ id: "candidate-list", label: "Cases", value: rows.map((row) => row.id).join(", ") || "missing" },
{ id: "source-files", label: "Source files", value: `${new Set(rows.flatMap((row) => row.sourceFiles ?? [])).size}` },
{ id: "promotion-allowed", label: "Allowed", value: `${promotionAllowedRows.length} baseline changes` },
{ id: "inventory-baseline", label: "Inventory", value: report.inventoryBaselineUnchanged === true ? "unchanged" : "changing" },
],
};
}
function renderEvidenceExpansionSummary(summary = createVirtualHalEvidenceExpansionSummary()) {
const container = document.querySelector("[data-evidence-expansion-summary]");
if (!container) {
return summary;
}
container.textContent = "";
document.body.dataset.evidenceExpansionReady = summary.ready ? "true" : "false";
document.body.dataset.evidenceExpansionCount = String(summary.candidateCount);
document.body.dataset.evidenceExpansionReadyCount = String(summary.readyCandidateCount);
for (const row of summary.rows) {
const item = document.createElement("div");
item.dataset.evidenceExpansionSummaryRow = row.id;
const label = document.createElement("span");
label.textContent = row.label;
const value = document.createElement("strong");
value.dataset.evidenceExpansionSummaryValue = row.id;
value.textContent = row.value;
item.append(label, value);
container.append(item);
}
return summary;
}
function renderMachineStatusDom(machineStatus) {
const statusMap = {
"spindle-state": machineStatus.spindle.state,
@@ -2828,8 +2890,10 @@ M2
renderLimitsHomeState(createVirtualHalLimitsHomeState());
renderMillturnUserMProcessState();
const promotionCandidateReport = createVirtualHalSimConfigPromotionCandidateReport();
const evidenceExpansionReport = createVirtualHalSimConfigEvidenceExpansionReport();
renderPromotionFamilyRows(promotionCandidateReport);
renderPromotionCandidateSummary(createVirtualHalPromotionCandidateSummary(promotionCandidateReport));
renderEvidenceExpansionSummary(createVirtualHalEvidenceExpansionSummary(evidenceExpansionReport));
document.querySelector("[data-axis-machine-control-state]")?.setAttribute("data-state", "ready");
return cloneVirtualHalState();
}
@@ -4333,6 +4397,7 @@ M2
getVirtualHalSimConfigSourceCoverageReport: () => createVirtualHalSimConfigSourceCoverageReport(),
getVirtualHalSimConfigPromotionCandidateReport: () => createVirtualHalSimConfigPromotionCandidateReport(),
getVirtualHalSimConfigEvidenceExpansionReport: () => createVirtualHalSimConfigEvidenceExpansionReport(),
getVirtualHalEvidenceExpansionSummary: () => renderEvidenceExpansionSummary(),
getVirtualHalPromotionCandidateSummary: () => renderPromotionCandidateSummary(),
getVirtualHalPromotionFamilyRows: () => renderPromotionFamilyRows(),
getVirtualHalSimConfigMacroLoadFixtureReport: () => createVirtualHalSimConfigMacroLoadFixtureReport(),