fix(小宝预警): 接入静默风险证据
This commit is contained in:
@@ -15,7 +15,7 @@ export interface XiaobaoVersionRef {
|
||||
status?: string;
|
||||
productName?: string;
|
||||
projectName?: string;
|
||||
expectedReleaseDate?: string;
|
||||
expectedReleaseDate?: string | null;
|
||||
members?: Array<{ id?: string; name: string; role?: string }>;
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ export interface XiaobaoVersionRisk {
|
||||
versionId: string;
|
||||
riskScore: number;
|
||||
riskLevel: XiaobaoRiskLevel;
|
||||
expectedReleaseDate: string | null;
|
||||
confidence: number;
|
||||
confidenceLevel: XiaobaoConfidenceLevel;
|
||||
forecastReleaseDate?: string;
|
||||
@@ -86,7 +87,7 @@ export function calcXiaobaoVersionRisk(input: CalcXiaobaoVersionRiskInput): Xiao
|
||||
const devTasks = input.devTasks ?? [];
|
||||
const testCases = input.testCases ?? [];
|
||||
const bugs = input.bugs ?? [];
|
||||
const silentRisks = input.silentRisks ?? [];
|
||||
const silentRisks = input.dailyEvidence?.silentRisks ?? [];
|
||||
|
||||
const remainingDevHours = devTasks.reduce((sum, task) => {
|
||||
const estimate = getEstimateHours(task);
|
||||
@@ -164,6 +165,15 @@ export function calcXiaobaoVersionRisk(input: CalcXiaobaoVersionRiskInput): Xiao
|
||||
count: failedTestCount,
|
||||
});
|
||||
}
|
||||
if (silentRisks.length > 0) {
|
||||
reasons.push({
|
||||
key: 'silent_risk',
|
||||
title: '静默风险',
|
||||
detail: `发现 ${silentRisks.length} 个今日缺少进展或证据的风险项。`,
|
||||
severity: 'warning',
|
||||
count: silentRisks.length,
|
||||
});
|
||||
}
|
||||
|
||||
const signals: XiaobaoRiskSignals = {
|
||||
unfinishedCount,
|
||||
@@ -193,6 +203,7 @@ export function calcXiaobaoVersionRisk(input: CalcXiaobaoVersionRiskInput): Xiao
|
||||
versionId: input.version.id,
|
||||
riskScore,
|
||||
riskLevel,
|
||||
expectedReleaseDate: input.version.expectedReleaseDate ?? null,
|
||||
confidence,
|
||||
confidenceLevel: getConfidenceLevel(confidence),
|
||||
forecastReleaseDate,
|
||||
@@ -297,7 +308,7 @@ function getConfidenceLevel(confidence: number): XiaobaoConfidenceLevel {
|
||||
return 'low';
|
||||
}
|
||||
|
||||
function parseDate(iso?: string): Date | undefined {
|
||||
function parseDate(iso?: string | null): Date | undefined {
|
||||
if (!iso) return undefined;
|
||||
const date = new Date(iso);
|
||||
return Number.isNaN(date.getTime()) ? undefined : date;
|
||||
|
||||
Reference in New Issue
Block a user