feat(小宝预警): 增加日报证据与风险趋势
This commit is contained in:
40
apps/web/lib/xiaobao-risk-trend.test.ts
Normal file
40
apps/web/lib/xiaobao-risk-trend.test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { buildRiskSignature, summarizeRiskTrend } from './xiaobao-risk-trend';
|
||||
import type { XiaobaoRiskSnapshot } from './xiaobao-risk-trend';
|
||||
|
||||
function snapshot(patch: Partial<XiaobaoRiskSnapshot>): XiaobaoRiskSnapshot {
|
||||
return {
|
||||
versionId: 'ver-1',
|
||||
date: '2026-06-27',
|
||||
riskScore: 38,
|
||||
riskLevel: 'attention',
|
||||
openBugCount: 0,
|
||||
failedTestCount: 0,
|
||||
blockedCount: 0,
|
||||
silentRiskCount: 0,
|
||||
confidence: 80,
|
||||
createdAt: '2026-06-27T01:00:00.000Z',
|
||||
...patch,
|
||||
};
|
||||
}
|
||||
|
||||
test('summarizeRiskTrend detects continuous rising risk across three snapshots', () => {
|
||||
const trend = summarizeRiskTrend([
|
||||
snapshot({ riskScore: 71, createdAt: '2026-06-29T01:00:00.000Z', date: '2026-06-29' }),
|
||||
snapshot({ riskScore: 38, createdAt: '2026-06-27T01:00:00.000Z', date: '2026-06-27' }),
|
||||
snapshot({ riskScore: 52, createdAt: '2026-06-28T01:00:00.000Z', date: '2026-06-28' }),
|
||||
]);
|
||||
|
||||
assert.equal(trend.direction, 'up');
|
||||
assert.equal(trend.delta, 33);
|
||||
assert.equal(trend.pattern, 'continuous_rising');
|
||||
});
|
||||
|
||||
test('buildRiskSignature changes when score and bug counts change', () => {
|
||||
const base = buildRiskSignature(snapshot({ riskScore: 52, openBugCount: 1 }));
|
||||
const changed = buildRiskSignature(snapshot({ riskScore: 71, openBugCount: 2 }));
|
||||
|
||||
assert.notEqual(base, changed);
|
||||
});
|
||||
Reference in New Issue
Block a user