import 'package:flutter/material.dart'; import '../app/app_metadata.dart'; import '../models/app_models.dart'; class MockData { static const quickActions = [ QuickAction( title: '写代码', icon: Icons.code_rounded, caption: '生成组件、修复 bug、搭建原型', ), QuickAction( title: '分析文档', icon: Icons.description_rounded, caption: '长文总结、要点抽取、风险提示', ), QuickAction( title: '生成 PPT', icon: Icons.slideshow_rounded, caption: '提纲生成、页面结构、讲述逻辑', ), QuickAction( title: '数据分析', icon: Icons.analytics_rounded, caption: '表格解读、趋势拆解、指标洞察', ), QuickAction( title: '设计方案', icon: Icons.draw_rounded, caption: '产品方案、交互思路、界面方向', ), QuickAction( title: '邮件处理', icon: Icons.mail_outline_rounded, caption: '总结线程、起草回复、提炼行动项', ), QuickAction( title: '自动化任务', icon: Icons.auto_mode_rounded, caption: '定时执行、跨工具协同、持续追踪', ), ]; static const recentSessions = [ RecentSession( title: '设计新的桌面 IA', timestamp: '12 分钟前', summary: '重排主导航,压平二级结构,保持 Assistant 为首页。', ), RecentSession( title: '梳理任务执行历史', timestamp: '今天 14:20', summary: '合并 Queue / Running / Failed 的追踪口径。', ), RecentSession( title: '检查 Gateway 轻量控制面', timestamp: '昨天', summary: '减少运维感,更多强调 AI 控制平面状态。', ), ]; static const taskMetrics = [ MetricSummary( label: 'Total', value: '128', caption: '总任务数', icon: Icons.layers_rounded, ), MetricSummary( label: 'Running', value: '12', caption: '当前运行中', icon: Icons.play_circle_outline_rounded, status: StatusInfo('Stable', StatusTone.success), ), MetricSummary( label: 'Failed', value: '3', caption: '需要人工介入', icon: Icons.error_outline_rounded, status: StatusInfo('Watch', StatusTone.warning), ), MetricSummary( label: 'Scheduled', value: '18', caption: '已排程任务', icon: Icons.event_repeat_rounded, ), ]; static const queueTasks = [ TaskSummary( name: 'Design Desktop IA Shell', owner: 'Coding Agent', status: StatusInfo('Queued', StatusTone.neutral), startedAt: '预计 16:50', duration: 'ETA 4m', surface: 'Assistant', ), TaskSummary( name: 'Daily Report Draft', owner: 'Job Autopilot', status: StatusInfo('Queued', StatusTone.neutral), startedAt: '预计 17:00', duration: 'ETA 2m', surface: 'Scheduled', ), ]; static const runningTasks = [ TaskSummary( name: 'XWorkmate Workspace Prototype', owner: 'Coding Agent', status: StatusInfo('Running', StatusTone.accent), startedAt: '刚刚', duration: '8m 12s', surface: 'Assistant', ), TaskSummary( name: 'Market Monitor Rollup', owner: 'Research Agent', status: StatusInfo('Streaming', StatusTone.success), startedAt: '16:12', duration: '2m 43s', surface: 'Tasks', ), ]; static const historyTasks = [ TaskSummary( name: 'Slack Thread Summarization', owner: 'Research Agent', status: StatusInfo('Completed', StatusTone.success), startedAt: '今天 15:10', duration: '3m 42s', surface: 'CoreSetup', ), TaskSummary( name: 'Resume Scan Batch', owner: 'Job Autopilot', status: StatusInfo('Completed', StatusTone.success), startedAt: '今天 13:25', duration: '6m 03s', surface: 'Tasks', ), ]; static const failedTasks = [ TaskSummary( name: 'Connector Credential Refresh', owner: 'Browser Agent', status: StatusInfo('Failed', StatusTone.danger), startedAt: '今天 14:03', duration: '58s', surface: 'Secrets', ), ]; static const scheduledTasks = [ TaskSummary( name: 'Morning Standup Digest', owner: 'Job Autopilot', status: StatusInfo('Scheduled', StatusTone.accent), startedAt: '明天 08:40', duration: 'Daily', surface: 'Tasks', ), TaskSummary( name: 'Inbox Triage', owner: 'Research Agent', status: StatusInfo('Scheduled', StatusTone.accent), startedAt: '18:00', duration: 'Every 3h', surface: 'Tasks', ), ]; static const workspaceModules = [ ModuleSummary( name: 'Workspace Overview', description: '统一管理默认模型、默认 Agent、团队策略与入口偏好。', status: StatusInfo('Ready', StatusTone.success), meta: '3 workspaces · 12 members', icon: Icons.apartment_rounded, ), ]; static const gatewayModules = [ ModuleSummary( name: 'LLM API', description: 'Healthy · version $kAppVersion · 3 nodes · 12 active sessions', status: StatusInfo('Healthy', StatusTone.success), meta: '87 runs today', icon: Icons.wifi_tethering_rounded, ), ModuleSummary( name: 'Edge Relay', description: 'Tokyo relay handling cross-region session routing.', status: StatusInfo('Healthy', StatusTone.success), meta: '3 active sessions', icon: Icons.hub_rounded, ), ]; static const nodeModules = [ ModuleSummary( name: 'Mac mini studio-01', description: 'Desktop automation node with screenshot + shell access.', status: StatusInfo('Healthy', StatusTone.success), meta: 'CPU 42% · RAM 61%', icon: Icons.desktop_mac_rounded, ), ModuleSummary( name: 'Cloud sandbox', description: 'Ephemeral workload node for heavy research tasks.', status: StatusInfo('Warning', StatusTone.warning), meta: 'Retry queue elevated', icon: Icons.cloud_queue_rounded, ), ]; static const nodes = [ NodeSummary( name: 'Mac mini studio-01', type: 'local', region: 'Shanghai', heartbeat: '12s ago', load: '42%', status: StatusInfo('Healthy', StatusTone.success), ), NodeSummary( name: 'Edge relay tokyo', type: 'edge', region: 'Tokyo', heartbeat: '28s ago', load: '31%', status: StatusInfo('Healthy', StatusTone.success), ), NodeSummary( name: 'Sandbox remote-03', type: 'remote', region: 'Frankfurt', heartbeat: '2m ago', load: '76%', status: StatusInfo('Warning', StatusTone.warning), ), ]; static const agents = [ AgentSummary( name: 'Browser Agent', description: '网页探索、采集、表单操作与流程验证。', status: StatusInfo('Idle', StatusTone.neutral), lastRun: '18 分钟前', capabilities: ['Browse', 'Capture', 'Validate'], ), AgentSummary( name: 'Coding Agent', description: '读写代码、生成补丁、解释实现与验证构建。', status: StatusInfo('Running', StatusTone.accent), lastRun: '刚刚', capabilities: ['Code', 'Patch', 'Tests'], ), AgentSummary( name: 'Research Agent', description: '检索资料、比对来源、收敛结论。', status: StatusInfo('Idle', StatusTone.neutral), lastRun: '43 分钟前', capabilities: ['Search', 'Compare', 'Synthesis'], ), AgentSummary( name: 'Job Autopilot', description: '持续接单、编排子任务、回收输出物。', status: StatusInfo('Running', StatusTone.success), lastRun: '2 分钟前', capabilities: ['Delegation', 'Scheduling', 'Reports'], ), AgentSummary( name: 'Custom Agent', description: '面向团队流程定制的草稿 Agent。', status: StatusInfo('Draft', StatusTone.warning), lastRun: '未运行', capabilities: ['Custom Prompt', 'Tools', 'Context'], ), ]; static const skills = [ SkillSummary( name: 'db-migration-runbook', type: 'Runbook', source: 'Local skill', status: StatusInfo('Enabled', StatusTone.success), version: '1.4.0', modules: 'Tasks · Modules', ), SkillSummary( name: 'playwright', type: 'Automation', source: 'Shared skill', status: StatusInfo('Enabled', StatusTone.success), version: '2.1.3', modules: 'Modules · Secrets', ), SkillSummary( name: 'vercel-deploy', type: 'Deployment', source: 'Hub', status: StatusInfo('Preview', StatusTone.accent), version: '0.9.2', modules: 'Modules', ), ]; static const agentModules = [ ModuleSummary( name: 'Job Autopilot', description: '持续接单、自动整理输出物、分发下一步行动。', status: StatusInfo('Running', StatusTone.success), meta: 'Queue depth 4', icon: Icons.auto_awesome_motion_rounded, ), ModuleSummary( name: 'Coding Agent', description: '负责读写代码、补丁生成、编译检查与解释。', status: StatusInfo('Running', StatusTone.accent), meta: 'GPT-5 Code', icon: Icons.terminal_rounded, ), ]; static const skillModules = [ ModuleSummary( name: 'db-migration-runbook', description: '面向数据库迁移和演练的工作指引 skill。', status: StatusInfo('Installed', StatusTone.success), meta: 'Last updated 2d ago', icon: Icons.menu_book_rounded, ), ModuleSummary( name: 'playwright', description: '桌面与浏览器自动化能力封装。', status: StatusInfo('Installed', StatusTone.success), meta: 'Used in 18 runs', icon: Icons.web_asset_rounded, ), ]; static const clawHubModules = [ ModuleSummary( name: 'Hub Registry', description: '统一查看共享模块、预设 Agent 与团队模板。', status: StatusInfo('Connected', StatusTone.accent), meta: '24 shared assets', icon: Icons.grid_view_rounded, ), ]; static const connectorModules = [ ModuleSummary( name: 'Slack Connector', description: '线程总结、消息派发与任务回写。', status: StatusInfo('Warning', StatusTone.warning), meta: '480 events / day', icon: Icons.forum_rounded, ), ModuleSummary( name: 'Email Relay', description: '日报投递、邮件摘要与草稿生成。', status: StatusInfo('Healthy', StatusTone.success), meta: '126 messages / day', icon: Icons.mail_rounded, ), ]; static const connectors = [ ConnectorSummary( name: 'Vault', description: '管理远程 secret reference 与轮换策略。', status: StatusInfo('Connected', StatusTone.success), lastSync: '2 分钟前', permission: 'Read / Write', ), ConnectorSummary( name: 'GitHub', description: '用于 issue、PR 和仓库自动化。', status: StatusInfo('Connected', StatusTone.success), lastSync: '5 分钟前', permission: 'Repo scoped', ), ConnectorSummary( name: 'Google Drive', description: '读取文档、表格与共享目录。', status: StatusInfo('Pending', StatusTone.warning), lastSync: '未同步', permission: 'Awaiting OAuth', ), ConnectorSummary( name: 'Slack', description: '消息接入、线程总结、任务回写。', status: StatusInfo('Warning', StatusTone.warning), lastSync: '12 分钟前', permission: 'Messages', ), ConnectorSummary( name: 'MCP', description: '连接本地或远程 MCP 服务器。', status: StatusInfo('Connected', StatusTone.success), lastSync: '刚刚', permission: 'Tool access', ), ConnectorSummary( name: 'Local FS', description: '本地文件系统读写与目录索引。', status: StatusInfo('Connected', StatusTone.success), lastSync: '实时', permission: 'Workspace only', ), ]; static const vaultSecrets = [ SecretSummary( name: 'OPENAI_API_KEY', scope: 'Workspace', status: StatusInfo('Healthy', StatusTone.success), updatedAt: '2 小时前', provider: 'Vault', ), SecretSummary( name: 'SLACK_BOT_TOKEN', scope: 'Connector', status: StatusInfo('Rotating', StatusTone.warning), updatedAt: '昨天', provider: 'Vault', ), ]; static const localSecrets = [ SecretSummary( name: 'LOCAL_AGENT_CACHE', scope: 'Desktop', status: StatusInfo('Local', StatusTone.neutral), updatedAt: '今天', provider: 'Keychain', ), ]; static const providerSecrets = [ SecretSummary( name: '1Password', scope: 'Provider', status: StatusInfo('Connected', StatusTone.success), updatedAt: '刚刚', provider: 'Provider', ), SecretSummary( name: 'AWS Secrets Manager', scope: 'Provider', status: StatusInfo('Draft', StatusTone.warning), updatedAt: '未配置', provider: 'Provider', ), ]; static const secretReferences = [ SecretReference( name: 'indeed_cookie', provider: 'Vault', module: 'Job Autopilot', status: StatusInfo('In use', StatusTone.success), maskedValue: '••••••••4ae7', ), SecretReference( name: 'github_token', provider: 'Vault', module: 'Coding Agent', status: StatusInfo('In use', StatusTone.success), maskedValue: 'ghp_••••••8k2m', ), SecretReference( name: 'openai_key', provider: 'Local', module: 'Gateway', status: StatusInfo('Warning', StatusTone.warning), maskedValue: 'sk-••••••••••', ), ]; static const providers = [ ProviderSummary( name: 'HashiCorp Vault', description: '远程 secret provider,支持 namespace、TTL 和审计。', status: StatusInfo('Connected', StatusTone.success), capabilities: ['KV', 'TTL', 'Audit'], ), ProviderSummary( name: 'Environment Variables', description: '适合本地开发与 CI 运行时注入。', status: StatusInfo('Available', StatusTone.neutral), capabilities: ['Runtime', 'Process', 'Masking'], ), ProviderSummary( name: 'Local File', description: '为离线桌面环境提供本地加密存储。', status: StatusInfo('Enabled', StatusTone.success), capabilities: ['Encrypted', 'Local', 'Backup'], ), ProviderSummary( name: 'External Secret Manager', description: '预留给企业第三方 secret manager 的接入位。', status: StatusInfo('Draft', StatusTone.warning), capabilities: ['Enterprise', 'Sync', 'Policy'], ), ]; static const auditSecrets = [ AuditSummary( time: '16:12', action: 'Rotate token', provider: 'Vault', target: 'github_token', module: 'Coding Agent', status: StatusInfo('Success', StatusTone.success), ), AuditSummary( time: '15:40', action: 'Read secret', provider: 'Vault', target: 'indeed_cookie', module: 'Job Autopilot', status: StatusInfo('Success', StatusTone.success), ), AuditSummary( time: '14:52', action: 'Resolve reference', provider: 'Local', target: 'openai_key', module: 'Gateway', status: StatusInfo('Warning', StatusTone.warning), ), ]; static const generalSettings = [ SettingSummary( title: 'Default launch surface', description: '始终保持 Assistant 为默认首页。', value: 'Assistant', ), SettingSummary( title: 'Command palette shortcut', description: '桌面全局入口,Cmd/Ctrl + K。', value: 'Enabled', ), ]; static const workspaceSettings = [ SettingSummary( title: 'Data path', description: '本地运行数据与缓存目录。', value: '/opt/data', ), SettingSummary( title: 'Repo path', description: '默认代码工作区根目录。', value: '/opt/data/workspace', ), SettingSummary( title: 'Default agent', description: '新建任务时默认挂载的 Agent。', value: 'Coding Agent', ), ]; static const gatewaySettings = [ SettingSummary( title: 'Gateway default route', description: '控制面启动后默认挂载的主路由。', value: 'LLM API', ), SettingSummary( title: 'Session retention', description: '会话日志保留策略。', value: '14 days', ), ]; static const appearanceSettings = [ SettingSummary( title: 'Theme', description: '桌面浅色优先,同时支持暗色主题。', value: 'Auto / Manual', ), SettingSummary( title: 'Dense tables', description: '关闭后保持更轻的桌面留白。', value: 'Off', ), ]; static const providerSettings = [ SettingSummary( title: 'Module provider source', description: '决定 Skills / Agents / Connectors 的拉取来源。', value: 'ClawHub', ), SettingSummary( title: 'Connector sync policy', description: '共享模块更新时的同步行为。', value: 'Manual review', ), ]; static const diagnosticSettings = [ SettingSummary( title: 'Gateway health snapshot', description: '最近一次诊断汇总。', value: 'Healthy', ), SettingSummary( title: 'Local data directory', description: '本地运行数据与缓存入口。', value: '/opt/data/', ), ]; static const experimentalSettings = [ SettingSummary( title: 'Floating detail drawer', description: '在宽屏下保留右侧抽屉式详情。', value: 'Enabled', ), SettingSummary( title: 'Desktop inline previews', description: '在 Tasks 和 Secrets 中显示更多 hover 预览。', value: 'Preview', ), ]; static const aboutSettings = [ SettingSummary( title: kSystemAppName, description: 'Flutter Material 3 UI shell for macOS and Windows.', value: kAppVersionLabel, ), SettingSummary( title: 'Build channel', description: 'Prototype only, mock data mode.', value: 'Desktop alpha', ), ]; static const workspaces = [ WorkspaceProfile( name: 'XWorkmate Design Lab', role: 'Owner', members: '12 members', region: 'Asia Pacific', ), WorkspaceProfile( name: 'Client Operations', role: 'Editor', members: '8 members', region: 'Global', ), ]; static const accountSessions = [ TaskSummary( name: 'MacBook Pro · Desktop App', owner: 'This device', status: StatusInfo('Active', StatusTone.success), startedAt: '今天 16:00', duration: 'Current', surface: 'Desktop', ), TaskSummary( name: 'Windows workstation', owner: 'Remote sign-in', status: StatusInfo('Idle', StatusTone.neutral), startedAt: '昨天', duration: '23h ago', surface: 'Desktop', ), ]; static DetailPanelData taskDetail(TaskSummary task) { return DetailPanelData( title: task.name, subtitle: 'Task Detail', icon: Icons.bolt_rounded, status: task.status, description: '任务来自 ${task.surface},当前由 ${task.owner} 持有。', meta: [task.surface, task.owner, task.duration], actions: const ['打开', '重试', '复制链接'], sections: [ DetailSection( title: 'Execution', items: [ DetailItem(label: '开始时间', value: task.startedAt), DetailItem(label: '耗时', value: task.duration), DetailItem(label: '状态', value: task.status.label), ], ), ], ); } static DetailPanelData moduleDetail(ModuleSummary module) { return DetailPanelData( title: module.name, subtitle: 'Module Detail', icon: module.icon, status: module.status, description: module.description, meta: [module.meta, module.status.label], actions: const ['打开', '配置', '查看状态'], sections: [ DetailSection( title: 'Overview', items: [ DetailItem(label: '状态', value: module.status.label), DetailItem(label: '摘要', value: module.meta), ], ), ], ); } static DetailPanelData secretDetail(SecretSummary secret) { return DetailPanelData( title: secret.name, subtitle: 'Secret Detail', icon: Icons.key_rounded, status: secret.status, description: '该密钥当前归属 ${secret.scope},由 ${secret.provider} 管理。', meta: [secret.scope, secret.provider, secret.updatedAt], actions: const ['查看审计', '轮换', '复制引用'], sections: [ DetailSection( title: 'Metadata', items: [ DetailItem(label: 'Scope', value: secret.scope), DetailItem(label: 'Provider', value: secret.provider), DetailItem(label: 'Updated', value: secret.updatedAt), ], ), ], ); } static DetailPanelData workspaceDetail(WorkspaceProfile workspace) { return DetailPanelData( title: workspace.name, subtitle: 'Workspace Detail', icon: Icons.apartment_rounded, status: const StatusInfo('Healthy', StatusTone.success), description: '工作区用于组织共享模块、成员权限和默认执行策略。', meta: [workspace.role, workspace.members, workspace.region], actions: const ['切换', '管理成员', '查看策略'], sections: [ DetailSection( title: 'Profile', items: [ DetailItem(label: 'Role', value: workspace.role), DetailItem(label: 'Members', value: workspace.members), DetailItem(label: 'Region', value: workspace.region), ], ), ], ); } }