fix(小宝预警): 透传风险日报证据
This commit is contained in:
@@ -4,6 +4,7 @@ import { calcXiaobaoVersionRisk } from './xiaobao-risk';
|
|||||||
import type { DevTask } from './dev-task';
|
import type { DevTask } from './dev-task';
|
||||||
import type { TestCase } from './test-case';
|
import type { TestCase } from './test-case';
|
||||||
import type { Bug } from './bug';
|
import type { Bug } from './bug';
|
||||||
|
import type { VersionDailyEvidence } from './xiaobao-risk-evidence';
|
||||||
|
|
||||||
function version(patch: any = {}) {
|
function version(patch: any = {}) {
|
||||||
return {
|
return {
|
||||||
@@ -104,3 +105,26 @@ test('calcXiaobaoVersionRisk marks blocked when critical Bug / blocked dev task
|
|||||||
assert.ok(risk.reasons.some((reason: { key: string }) => reason.key === 'critical_bug'));
|
assert.ok(risk.reasons.some((reason: { key: string }) => reason.key === 'critical_bug'));
|
||||||
assert.ok(risk.reasons.some((reason: { key: string }) => reason.key === 'blocked_work'));
|
assert.ok(risk.reasons.some((reason: { key: string }) => reason.key === 'blocked_work'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('calcXiaobaoVersionRisk preserves daily evidence on the returned risk object', () => {
|
||||||
|
const dailyEvidence: VersionDailyEvidence = {
|
||||||
|
todayDeliveries: [{ id: 'ev-1', title: '提交提测', summary: '完成核心流程', occurredAt: '2026-07-02T02:00:00.000Z' }],
|
||||||
|
todayProgress: [],
|
||||||
|
todayRisks: [],
|
||||||
|
progressNotes: [],
|
||||||
|
needsProgressItems: [],
|
||||||
|
recentActivityCount: 1,
|
||||||
|
lastActivityAt: '2026-07-02T02:00:00.000Z',
|
||||||
|
};
|
||||||
|
|
||||||
|
const risk = calcXiaobaoVersionRisk({
|
||||||
|
version: version(),
|
||||||
|
devTasks: [],
|
||||||
|
testCases: [],
|
||||||
|
bugs: [],
|
||||||
|
dailyEvidence,
|
||||||
|
now: new Date('2026-07-02T01:00:00.000Z'),
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(risk.dailyEvidence, dailyEvidence);
|
||||||
|
});
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type { DevTask } from './dev-task';
|
|||||||
import { STATUS_PROGRESS, getEstimateHours } from './dev-task';
|
import { STATUS_PROGRESS, getEstimateHours } from './dev-task';
|
||||||
import type { TestCase } from './test-case';
|
import type { TestCase } from './test-case';
|
||||||
import { getTestCaseEstimateHours } from './test-case';
|
import { getTestCaseEstimateHours } from './test-case';
|
||||||
|
import type { VersionDailyEvidence } from './xiaobao-risk-evidence';
|
||||||
import { WORK_HOURS, addWorkHours } from './work-hours';
|
import { WORK_HOURS, addWorkHours } from './work-hours';
|
||||||
|
|
||||||
export type XiaobaoRiskLevel = 'on_track' | 'attention' | 'at_risk' | 'likely_delayed' | 'blocked';
|
export type XiaobaoRiskLevel = 'on_track' | 'attention' | 'at_risk' | 'likely_delayed' | 'blocked';
|
||||||
@@ -55,6 +56,7 @@ export interface XiaobaoVersionRisk {
|
|||||||
remainingWorkHours: number;
|
remainingWorkHours: number;
|
||||||
reasons: RiskReason[];
|
reasons: RiskReason[];
|
||||||
silentRisks: SilentRisk[];
|
silentRisks: SilentRisk[];
|
||||||
|
dailyEvidence?: VersionDailyEvidence;
|
||||||
signals: XiaobaoRiskSignals;
|
signals: XiaobaoRiskSignals;
|
||||||
trend: {
|
trend: {
|
||||||
direction: 'up' | 'down' | 'flat' | 'unknown';
|
direction: 'up' | 'down' | 'flat' | 'unknown';
|
||||||
@@ -71,6 +73,7 @@ export interface CalcXiaobaoVersionRiskInput {
|
|||||||
now?: Date;
|
now?: Date;
|
||||||
snapshots?: Array<{ riskScore: number; createdAt?: string; date?: string }>;
|
snapshots?: Array<{ riskScore: number; createdAt?: string; date?: string }>;
|
||||||
silentRisks?: SilentRisk[];
|
silentRisks?: SilentRisk[];
|
||||||
|
dailyEvidence?: VersionDailyEvidence;
|
||||||
recentActivityCount?: number;
|
recentActivityCount?: number;
|
||||||
lastActivityAt?: string;
|
lastActivityAt?: string;
|
||||||
}
|
}
|
||||||
@@ -197,6 +200,7 @@ export function calcXiaobaoVersionRisk(input: CalcXiaobaoVersionRiskInput): Xiao
|
|||||||
remainingWorkHours,
|
remainingWorkHours,
|
||||||
reasons,
|
reasons,
|
||||||
silentRisks,
|
silentRisks,
|
||||||
|
dailyEvidence: input.dailyEvidence,
|
||||||
signals,
|
signals,
|
||||||
trend,
|
trend,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user