Sync latest TrueGrowth updates
Some checks failed
CI / main (push) Has been cancelled
CI / release-e2e (push) Has been cancelled

This commit is contained in:
jiam
2026-07-08 02:03:18 +08:00
parent 52636c91ae
commit 5119ac0ef8
102 changed files with 20985 additions and 1760 deletions

View File

@@ -143,3 +143,66 @@ export function getTaskElapsedTime(task: Task): number {
* formatDateTime(Date.now()) // Returns "2025-12-18 14:30:25"
*/
export const formatDateTime = formatDate;
export interface TaskTimelineItem {
label: string;
value: string;
}
function isValidTimestamp(timestamp: number | undefined): timestamp is number {
return (
typeof timestamp === 'number' &&
Number.isFinite(timestamp) &&
timestamp > 0
);
}
/**
* Builds the labeled absolute times shown in task-center rows.
*/
export function getTaskTimelineItems(task: Task): TaskTimelineItem[] {
const items: TaskTimelineItem[] = [];
if (isValidTimestamp(task.createdAt)) {
items.push({
label: '创建',
value: formatDateTime(task.createdAt),
});
}
const completedAt = isValidTimestamp(task.completedAt)
? task.completedAt
: task.updatedAt;
if (task.status === TaskStatus.COMPLETED && isValidTimestamp(completedAt)) {
items.push({
label: '完成',
value: formatDateTime(completedAt),
});
return items;
}
if (
(task.status === TaskStatus.FAILED ||
task.status === TaskStatus.CANCELLED) &&
isValidTimestamp(task.updatedAt)
) {
items.push({
label: task.status === TaskStatus.FAILED ? '失败' : '取消',
value: formatDateTime(task.updatedAt),
});
return items;
}
if (
task.status === TaskStatus.PROCESSING &&
isValidTimestamp(task.updatedAt) &&
task.updatedAt !== task.createdAt
) {
items.push({
label: '更新',
value: formatDateTime(task.updatedAt),
});
}
return items;
}