新增发布 artifact validation summary view model

This commit is contained in:
2026-06-16 11:08:38 +08:00
parent ce2c145374
commit 82bb02de15
9 changed files with 163 additions and 3 deletions

View File

@@ -4,6 +4,8 @@ import {
createProjectReleaseGateActionPlan,
createProjectReleaseGateManifest,
createProjectReleaseGateResultMatrix,
createProjectReleaseReadinessArtifactValidation,
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
createProjectReleaseReadinessReport,
createProjectReleaseReadinessSummaryViewModel,
} from "../../../runtime/sdk/src/index.js";
@@ -171,4 +173,31 @@ assert.equal(
"promoted: L4-TOOL-DB",
);
const artifactValidationSummary = createProjectReleaseReadinessArtifactValidationSummaryViewModel(
createProjectReleaseReadinessArtifactValidation(report),
);
assert.equal(
artifactValidationSummary.apiName,
"project-release-readiness-artifact-validation-summary-view-model",
);
assert.equal(artifactValidationSummary.phase, "ready");
assert.equal(artifactValidationSummary.statusLine, "Ready: Artifact evidence complete");
assert.deepEqual(
artifactValidationSummary.rows.map(({ id, value }) => [id, value]),
[
["artifact", "project-release-readiness-report"],
["gate-count", "10/10"],
["gate-manifest", "ready"],
["gate-result-matrix", "ready"],
["gate-action-plan", "ready"],
["missing", "none"],
],
);
const staleArtifactValidationSummary = createProjectReleaseReadinessArtifactValidationSummaryViewModel(
createProjectReleaseReadinessArtifactValidation({}),
);
assert.equal(staleArtifactValidationSummary.phase, "blocked");
assert.match(staleArtifactValidationSummary.statusLine, /^Blocked: apiName, reportVersion/);
assert.equal(staleArtifactValidationSummary.rows.find(({ id }) => id === "gate-action-plan")?.value, "missing");
console.log("project_release_gate_manifest_node_smoke=ok");

View File

@@ -36,6 +36,7 @@ import {
createProjectReleaseGateManifest,
createProjectReleaseGateResultMatrix,
createProjectReleaseReadinessArtifactValidation,
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
createProjectReleaseReadinessReport,
createProjectReleaseReadinessSummaryViewModel,
parseProjectReleaseReadinessArtifactJson,
@@ -91,6 +92,10 @@ const requiredExports = [
["createProjectReleaseGateManifest", createProjectReleaseGateManifest],
["createProjectReleaseGateResultMatrix", createProjectReleaseGateResultMatrix],
["createProjectReleaseReadinessArtifactValidation", createProjectReleaseReadinessArtifactValidation],
[
"createProjectReleaseReadinessArtifactValidationSummaryViewModel",
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
],
["createProjectReleaseReadinessReport", createProjectReleaseReadinessReport],
["createProjectReleaseReadinessSummaryViewModel", createProjectReleaseReadinessSummaryViewModel],
["parseProjectReleaseReadinessArtifactJson", parseProjectReleaseReadinessArtifactJson],
@@ -255,7 +260,8 @@ const releaseReadinessArtifact = parseProjectReleaseReadinessArtifactJson(JSON.s
},
})));
assert.equal(releaseReadinessArtifact.apiName, "project-release-readiness-report");
assert.deepEqual(createProjectReleaseReadinessArtifactValidation(releaseReadinessArtifact), {
const releaseReadinessArtifactValidation = createProjectReleaseReadinessArtifactValidation(releaseReadinessArtifact);
assert.deepEqual(releaseReadinessArtifactValidation, {
apiName: "project-release-readiness-artifact-validation",
validationVersion: 1,
phase: "ready",
@@ -307,6 +313,12 @@ assert.deepEqual(createProjectReleaseReadinessArtifactValidation(releaseReadines
},
],
});
assert.equal(
createProjectReleaseReadinessArtifactValidationSummaryViewModel(
releaseReadinessArtifactValidation,
).statusLine,
"Ready: Artifact evidence complete",
);
assert.deepEqual(
createProjectReleaseReadinessArtifactValidation({}).missing,
[