feat(版本详情): 完善任务流程与风险预警

This commit is contained in:
Script Generator
2026-06-29 18:14:22 +08:00
parent b48a7e2049
commit b7d48f66aa
24 changed files with 3085 additions and 118 deletions

View File

@@ -112,6 +112,21 @@ function roundEffortHours(hours: number): number {
return Number(hours.toFixed(2));
}
export function needsDevTaskClaim(task: Pick<DevTask, 'assigneeId'>): boolean {
return !task.assigneeId?.trim();
}
export function hasDevTaskPlan(task: Pick<DevTask, 'expectedStartAt' | 'expectedEndAt'>): boolean {
if (!task.expectedStartAt || !task.expectedEndAt) return false;
const start = new Date(task.expectedStartAt).getTime();
const end = new Date(task.expectedEndAt).getTime();
return Number.isFinite(start) && Number.isFinite(end) && end > start;
}
export function canStartDevTask(task: Pick<DevTask, 'assigneeId' | 'expectedStartAt' | 'expectedEndAt'>): boolean {
return !needsDevTaskClaim(task) && hasDevTaskPlan(task);
}
export function getActualHours(task: DevTask, now: Date = new Date()): number {
if (!task.actualStartAt) return 0;
const end = task.actualEndAt ?? (task.status === 'submitted' ? task.updatedAt : now.toISOString());