import dayjs from 'dayjs'; import type { WorkbenchActivityItemSource, WorkbenchBannerSummarySource, WorkbenchFavoriteItemSource, WorkbenchKpiSource, WorkbenchMyRequirementGroupSource, WorkbenchMyTaskItemSource, WorkbenchProgressBarSource, WorkbenchProjectHealthCardSource, WorkbenchProjectItemSource, WorkbenchTeamTodoRowSource, WorkbenchTodoItemSource } from './homepage'; const now = dayjs(); const iso = (date: dayjs.Dayjs) => date.format('YYYY-MM-DD HH:mm:ss'); export const workbenchBannerSummaryMock = { todoCount: 8, upcomingCount: 2, weekDone: 12, weekTotal: 18, weekInProgress: 5, weekOverdue: 1 } satisfies WorkbenchBannerSummarySource; export const workbenchKpiMock = { todo: { count: 8, diffFromYesterday: 1 }, task: { count: 14, diffFromYesterday: -1 }, project: { count: 3, activeCount: 2 }, requirement: { count: 6, pendingReview: 2 } } satisfies WorkbenchKpiSource; export const workbenchTodoMock = [ { id: 'todo-1', category: 'review', title: '订单导出 V2 需求评审', deadline: iso(now.add(2, 'day').hour(18).minute(0)), source: '张三 · 收银台 V3', highPriority: true, routeKey: 'product_list' }, { id: 'todo-2', category: 'task', title: '支付回调接口联调', deadline: iso(now.add(1, 'day').hour(17).minute(30)), source: '收银台 V3 · 后端联调', routeKey: 'project_list' }, { id: 'todo-3', category: 'ticket', title: '工单 #1024 等待我处理', deadline: iso(now.hour(20).minute(0)), source: '王五 · 客户反馈', routeKey: 'ticket' }, { id: 'todo-4', category: 'mention', title: '需求「会员等级」中 @ 了你', deadline: null, source: '李四 · 会员中心', routeKey: 'product_list' }, { id: 'todo-5', category: 'task', title: '订单中心结算文档评审', deadline: iso(now.add(4, 'day').hour(15).minute(0)), source: '订单中心 · 文档', routeKey: 'project_list' }, { id: 'todo-6', category: 'review', title: 'API 返回结构调整评审', deadline: iso(now.subtract(1, 'day').hour(18).minute(0)), source: '赵六 · 收银台 V3', overdue: true, highPriority: true, routeKey: 'product_list' }, { id: 'todo-7', category: 'task', title: '会员等级提示文案校对', deadline: iso(now.add(3, 'day').hour(11).minute(0)), source: '会员中心 · 文案', routeKey: 'project_list' }, { id: 'todo-8', category: 'ticket', title: '工单 #1018 用户登录异常', deadline: iso(now.add(1, 'day').hour(10).minute(0)), source: '客户支持 · 紧急', highPriority: true, routeKey: 'ticket' } ] satisfies WorkbenchTodoItemSource[]; export const workbenchActivityMock = [ { id: 'act-1', actor: '张三', action: '提交了需求评审申请', target: '订单导出 V2', targetKind: 'requirement', time: iso(now.subtract(10, 'minute')) }, { id: 'act-2', actor: '李四', action: '完成了任务', target: '支付回调接口联调', targetKind: 'task', time: iso(now.subtract(2, 'hour')) }, { id: 'act-3', actor: '李四', action: '在需求中 @ 了你', target: '会员等级', targetKind: 'requirement', time: iso(now.subtract(1, 'day').hour(17).minute(23)), mentioned: true }, { id: 'act-4', actor: '王五', action: '提交了工单', target: '#1024 · 客户反馈', targetKind: 'ticket', time: iso(now.subtract(1, 'day').hour(15).minute(8)) }, { id: 'act-5', actor: '赵六', action: '把项目状态调整为', target: '试运行(订单中心)', targetKind: 'project', time: iso(now.subtract(2, 'day').hour(10).minute(0)) }, { id: 'act-6', actor: '系统', action: '提醒:你有 1 项任务即将逾期', target: 'API 返回结构调整评审', targetKind: 'requirement', time: iso(now.subtract(3, 'day').hour(9).minute(30)) }, { id: 'act-7', actor: '钱七', action: '更新了产品资料', target: '收银台 V3 · 定位说明', targetKind: 'product', time: iso(now.subtract(4, 'day').hour(16).minute(45)) } ] satisfies WorkbenchActivityItemSource[]; export const workbenchProjectMock = [ { id: 'prj-1', name: '收银台 V3', code: 'CASHIER-V3', status: 'active', myRole: '项目负责人', progress: 72, myTaskCount: 6, myPendingTaskCount: 2, lastActiveTime: iso(now.subtract(35, 'minute')) }, { id: 'prj-2', name: '会员中心', code: 'MEMBER', status: 'active', myRole: '后端负责人', progress: 58, myTaskCount: 4, myPendingTaskCount: 1, lastActiveTime: iso(now.subtract(3, 'hour')) }, { id: 'prj-3', name: '订单中心', code: 'ORDER-CENTER', status: 'preview', myRole: '产品经理', progress: 95, myTaskCount: 4, myPendingTaskCount: 0, lastActiveTime: iso(now.subtract(2, 'day').hour(10)) } ] satisfies WorkbenchProjectItemSource[]; export const workbenchMyTaskMock = [ { id: 't-1', title: '支付回调接口联调', statusCode: 'inProgress', statusLabel: '进行中', executionName: '收银台 V3 · 后端联调', projectName: '收银台 V3', priority: 'high', deadline: iso(now.add(1, 'day').hour(17)) }, { id: 't-2', title: '订单导出 V2 文档编写', statusCode: 'inProgress', statusLabel: '进行中', executionName: '订单中心 · 文档', projectName: '订单中心', priority: 'mid', deadline: iso(now.add(3, 'day').hour(12)) }, { id: 't-3', title: 'API 返回结构调整', statusCode: 'pending', statusLabel: '待开始', executionName: '收银台 V3 · 后端联调', projectName: '收银台 V3', priority: 'mid', deadline: iso(now.subtract(1, 'day').hour(18)) }, { id: 't-4', title: '会员等级文案校对', statusCode: 'inProgress', statusLabel: '进行中', executionName: '会员中心 · 文案', projectName: '会员中心', priority: 'low', deadline: iso(now.add(2, 'day').hour(15)) }, { id: 't-5', title: '收银台 H5 适配', statusCode: 'inProgress', statusLabel: '进行中', executionName: '收银台 V3 · 前端', projectName: '收银台 V3', priority: 'high', deadline: iso(now.hour(20)) } ] satisfies WorkbenchMyTaskItemSource[]; export const workbenchMyRequirementMock = [ { statusCode: 'pendingReview', statusLabel: '待评审', count: 3, tone: 'amber' }, { statusCode: 'reviewing', statusLabel: '评审中', count: 2, tone: 'sky' }, { statusCode: 'developing', statusLabel: '开发中', count: 5, tone: 'emerald' }, { statusCode: 'paused', statusLabel: '已暂停', count: 1, tone: 'rose' } ] satisfies WorkbenchMyRequirementGroupSource[]; export const workbenchTeamTodoMock = [ { projectId: 'prj-1', projectName: '收银台 V3', memberId: 'm-1', memberName: '张三', inProgress: 5, overdue: 2, weekDone: 3 }, { projectId: 'prj-1', projectName: '收银台 V3', memberId: 'm-2', memberName: '李四', inProgress: 3, overdue: 0, weekDone: 4 }, { projectId: 'prj-2', projectName: '会员中心', memberId: 'm-3', memberName: '王五', inProgress: 2, overdue: 1, weekDone: 2 }, { projectId: 'prj-3', projectName: '订单中心', memberId: 'm-4', memberName: '赵六', inProgress: 4, overdue: 0, weekDone: 5 } ] satisfies WorkbenchTeamTodoRowSource[]; export const workbenchProjectHealthMock = [ { projectId: 'prj-1', projectName: '收银台 V3', code: 'CASHIER-V3', health: 'yellow', riskCount: 2, overdueTasks: 3, backlogRequirements: 2 }, { projectId: 'prj-2', projectName: '会员中心', code: 'MEMBER', health: 'green', riskCount: 0, overdueTasks: 0, backlogRequirements: 1 }, { projectId: 'prj-3', projectName: '订单中心', code: 'ORDER', health: 'red', riskCount: 4, overdueTasks: 5, backlogRequirements: 6 } ] satisfies WorkbenchProjectHealthCardSource[]; export const workbenchProgressChartMock = [ { projectId: 'prj-1', projectName: '收银台 V3', weekCompletionRate: 78 }, { projectId: 'prj-2', projectName: '会员中心', weekCompletionRate: 62 }, { projectId: 'prj-3', projectName: '订单中心', weekCompletionRate: 45 } ] satisfies WorkbenchProgressBarSource[]; export const workbenchFavoriteMock = [ { id: 'fav-1', kind: 'product', title: '收银台 V3', source: '产品库' }, { id: 'fav-2', kind: 'project', title: '会员中心 · 一期', source: '项目库' }, { id: 'fav-3', kind: 'requirement', title: '订单导出 V2', source: '收银台 V3' }, { id: 'fav-4', kind: 'task', title: '支付回调接口联调', source: '收银台 V3 · 后端联调' } ] satisfies WorkbenchFavoriteItemSource[];