MCPcopy Create free account
hub / github.com/echoVic/blade-code / getStatistics

Method getStatistics

src/prompt/WorkflowManager.ts:589–631  ·  view source on GitHub ↗

* 获取统计信息

()

Source from the content-addressed store, hash-verified

587 * 获取统计信息
588 */
589 public getStatistics() {
590 const tasks = Array.from(this.tasks.values());
591 const totalTasks = tasks.length;
592 const completedTasks = tasks.filter(t => t.status === 'completed');
593 const inProgressTasks = tasks.filter(t => t.status === 'in-progress');
594 const blockedTasks = tasks.filter(t => t.status === 'blocked');
595
596 // 计算平均完成时间
597 const completedWithTime = completedTasks.filter(t => t.actualTime);
598 const averageCompletionTime =
599 completedWithTime.length > 0
600 ? Math.round(
601 completedWithTime.reduce((sum, t) => sum + (t.actualTime || 0), 0) /
602 completedWithTime.length
603 )
604 : null;
605
606 // 计算成功率
607 const finishedTasks = tasks.filter(t => t.status === 'completed' || t.status === 'cancelled');
608 const successRate =
609 finishedTasks.length > 0
610 ? Math.round((completedTasks.length / finishedTasks.length) * 100)
611 : 0;
612
613 // 计算当前负载
614 const currentLoad =
615 this.config.maxConcurrentTasks > 0
616 ? Math.round((inProgressTasks.length / this.config.maxConcurrentTasks) * 100)
617 : 0;
618
619 return {
620 totalTasks,
621 todo: tasks.filter(t => t.status === 'todo').length,
622 inProgress: inProgressTasks.length,
623 completed: completedTasks.length,
624 blocked: blockedTasks.length,
625 cancelled: tasks.filter(t => t.status === 'cancelled').length,
626 averageCompletionTime: averageCompletionTime ? `${averageCompletionTime}min` : null,
627 successRate,
628 currentLoad,
629 executableTasks: this.getExecutableTasks().length,
630 };
631 }
632
633 /**
634 * 获取工作流报告

Callers 2

generateTodoContentMethod · 0.95
generateReportMethod · 0.95

Calls 2

getExecutableTasksMethod · 0.95
filterMethod · 0.45

Tested by

no test coverage detected