feat(web): 工作台前端 API 客户端 + TodoList 组件
- actionInbox.ts 新增 WorkbenchStats/TeamOverview 类型和 stats()/team() API - 新建 workbench/TodoList.tsx 待办列表组件(分页 + 类型/优先级标签)
This commit is contained in:
@@ -42,6 +42,35 @@ export interface ThreadResponse {
|
||||
available_actions: ActionDefinition[];
|
||||
}
|
||||
|
||||
export interface WorkbenchStats {
|
||||
total_pending: number;
|
||||
ai_suggestion_pending: number;
|
||||
urgent_alerts: number;
|
||||
followup_due: number;
|
||||
completion_rate: number | null;
|
||||
}
|
||||
|
||||
export interface TeamMemberOverview {
|
||||
user_id: string;
|
||||
name: string;
|
||||
title: string;
|
||||
pending_count: number;
|
||||
completed_count: number;
|
||||
overdue_count: number;
|
||||
completion_rate: number;
|
||||
}
|
||||
|
||||
export interface TeamOverview {
|
||||
members: TeamMemberOverview[];
|
||||
risk_distribution: {
|
||||
high: number;
|
||||
medium: number;
|
||||
low: number;
|
||||
};
|
||||
total_pending: number;
|
||||
total_completed: number;
|
||||
}
|
||||
|
||||
export const actionInboxApi = {
|
||||
list: async (params?: {
|
||||
status?: string;
|
||||
@@ -63,4 +92,20 @@ export const actionInboxApi = {
|
||||
}>(`/health/action-inbox/${encodeURIComponent(sourceRef)}/thread`);
|
||||
return data.data;
|
||||
},
|
||||
|
||||
stats: async () => {
|
||||
const { data } = await client.get<{
|
||||
success: boolean;
|
||||
data: WorkbenchStats;
|
||||
}>('/health/action-inbox/stats');
|
||||
return data.data;
|
||||
},
|
||||
|
||||
team: async () => {
|
||||
const { data } = await client.get<{
|
||||
success: boolean;
|
||||
data: TeamOverview;
|
||||
}>('/health/action-inbox/team');
|
||||
return data.data;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user