Rework story engine flow and reorganize project docs
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
36
src/services/storyEngine/releaseGateReport.ts
Normal file
36
src/services/storyEngine/releaseGateReport.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type {
|
||||
NarrativeQaReport,
|
||||
ReleaseGateReport,
|
||||
SimulationRunResult,
|
||||
} from '../../types';
|
||||
|
||||
export function buildReleaseGateReport(params: {
|
||||
qaReport: NarrativeQaReport | null | undefined;
|
||||
simulationResults: SimulationRunResult[];
|
||||
unresolvedThreadCount: number;
|
||||
}) {
|
||||
const issueCount = params.qaReport?.issues.length ?? 0;
|
||||
const blockingIssues = [
|
||||
...(params.qaReport?.issues.filter((issue) => issue.severity === 'high').map((issue) => issue.summary) ?? []),
|
||||
...(params.unresolvedThreadCount > 5 ? ['活跃线程过多,可能会导致结局收束不稳。'] : []),
|
||||
];
|
||||
const status =
|
||||
blockingIssues.length > 0
|
||||
? 'block'
|
||||
: issueCount > 0
|
||||
? 'warn'
|
||||
: 'pass';
|
||||
|
||||
return {
|
||||
generatedAt: new Date().toISOString(),
|
||||
status,
|
||||
summary:
|
||||
status === 'pass'
|
||||
? '当前版本通过 narrative release gate。'
|
||||
: status === 'warn'
|
||||
? '当前版本可继续观察,但仍有若干 narrative 风险。'
|
||||
: '当前版本存在 narrative 阻断问题,不建议发布。',
|
||||
blockingIssues,
|
||||
simulationCoverage: params.simulationResults.length,
|
||||
} satisfies ReleaseGateReport;
|
||||
}
|
||||
Reference in New Issue
Block a user