feat(版本详情): 优化任务统计与测试轮次

This commit is contained in:
Script Generator
2026-06-26 15:12:24 +08:00
parent 914e6180c1
commit 2d802318fa
16 changed files with 631 additions and 65 deletions

View File

@@ -0,0 +1,35 @@
import { formatActualDuration } from './work-hours';
export interface EffortSummaryInput {
aiEstimateHours?: number;
estimateHours?: number;
actualHours: number;
manhours: number;
}
export interface EffortSummaryMetric {
label: 'AI预估' | '执行预估' | '实际耗时' | '人力投入';
value: string;
}
export function sumPositiveHours<T>(items: readonly T[], getValue: (item: T) => number | undefined): number | undefined {
let total = 0;
for (const item of items) {
const value = getValue(item);
if (typeof value === 'number' && value > 0) total += value;
}
return total > 0 ? Number(total.toFixed(2)) : undefined;
}
export function buildEffortSummaryMetrics(input: EffortSummaryInput): EffortSummaryMetric[] {
return [
{ label: 'AI预估', value: formatOptionalHours(input.aiEstimateHours) },
{ label: '执行预估', value: formatOptionalHours(input.estimateHours) },
{ label: '实际耗时', value: formatActualDuration(input.actualHours) },
{ label: '人力投入', value: formatActualDuration(input.manhours) },
];
}
function formatOptionalHours(hours?: number): string {
return typeof hours === 'number' && hours > 0 ? formatActualDuration(hours) : '-';
}