import { Card, Empty, Grid, Space, Tag, Typography } from '@arco-design/web-react' import { IconCalendar, IconCheckCircleFill, IconDashboard, IconFile, IconRobot, } from '@arco-design/web-react/icon' import type { Project, ProjectWorkspace } from './projects/project-types' const { Row, Col } = Grid const { Title, Text, Paragraph } = Typography export function WorkspacePage({ workspaces, onOpenTask }: { workspaces: ProjectWorkspace[]; onOpenTask: (project: Project, taskID: string) => void }) { const projects = workspaces.map((workspace) => workspace.project) const unfinishedTasks = workspaces.flatMap((workspace) => workspace.tasks .filter((task) => !task.completed) .map((task) => ({ ...task, project: workspace.project, })), ) const aiSessions = workspaces.flatMap((workspace) => workspace.aiSessions) const notes = workspaces.flatMap((workspace) => workspace.notes) const urgentProjects = projects.filter((project) => project.urgent).length const workspaceMetrics = [ { title: '项目总数', value: projects.length, delta: `${urgentProjects} 个高优先级`, icon: , color: 'arcoblue' }, { title: '未完成任务', value: unfinishedTasks.length, delta: '跨项目聚合', icon: , color: 'green' }, { title: 'AI 会话', value: aiSessions.length, delta: '项目内上下文', icon: , color: 'purple' }, { title: '知识资料', value: notes.length, delta: '笔记与资料合计', icon: , color: 'cyan' }, ] return (
工作台 所有项目的统一工作台,汇总项目任务、AI 会话和知识资产。
{workspaceMetrics.map((metric) => ( {metric.icon}
{metric.title} {metric.value} {metric.delta}
))}
未完成的任务 {unfinishedTasks.length}
{unfinishedTasks.length ? (
{unfinishedTasks.map((task) => ( ))}
) : ( )}
) }