/** * AI 助手欢迎界面快捷提示配置 * * 根据不同页面场景显示相关的快捷提示,帮助用户快速开始对话 * 提示内容基于 DooTask MCP 工具的实际能力设计 */ import {languageName} from "../../language"; // SVG 图标定义 const SVG_ICONS = { // 任务/待办 task: '', // 列表/概览 list: '', // 搜索 search: '', // 日历/时间 calendar: '', // 文档/报告 document: '', // 添加/新建 plus: '', // 消息/对话 message: '', // 分析/图表 chart: '', // 警告/逾期 alert: '', // 文件夹 folder: '', // 编辑/优化 edit: '', // 用户/团队 user: '', // 发送 send: '', // 时钟/截止 clock: '', // 完成/勾选 check: '', }; /** * 根据当前语言获取文本 */ function getText(textObj) { if (typeof textObj === 'string') { return textObj; } const isZh = languageName && languageName.includes('zh'); return isZh ? textObj.zh : textObj.en; } /** * 获取当前场景的快捷提示列表 * @param {Object} store - Vuex store 实例 * @param {Object} routeParams - 路由参数 * @returns {Array} 快捷提示列表 [{ text, svg }] */ export function getWelcomePrompts(store, routeParams = {}) { const routeName = store.state.routeName; const promptsMap = { // 主要管理页面 'manage-dashboard': getDashboardPrompts, 'manage-project': getProjectPrompts, 'manage-messenger': getMessengerPrompts, 'manage-calendar': getCalendarPrompts, 'manage-file': getFilePrompts, // 独立页面 'single-task': getSingleTaskPrompts, 'single-task-content': getSingleTaskPrompts, 'single-dialog': getSingleDialogPrompts, 'single-file': getSingleFilePrompts, 'single-file-task': getSingleFileTaskPrompts, 'single-report-edit': getSingleReportEditPrompts, 'single-report-detail': getSingleReportDetailPrompts, }; const getPrompts = promptsMap[routeName]; const rawPrompts = getPrompts ? getPrompts(store, routeParams) : getDefaultPrompts(); // 转换文本为当前语言 return rawPrompts.map(item => ({ text: getText(item.text), svg: item.svg, })); } /** * 仪表盘提示 - 聚焦任务管理和工作安排 */ function getDashboardPrompts(store) { const dashboardTask = store.getters.dashboardTask || {}; const prompts = []; const overdueCount = dashboardTask.overdue_count || 0; const todayCount = dashboardTask.today_count || 0; // 根据实际数据动态调整提示 if (overdueCount > 0) { prompts.push({ text: { zh: `列出我的 ${overdueCount} 个逾期任务`, en: `List my ${overdueCount} overdue tasks`, }, svg: SVG_ICONS.alert, }); } if (todayCount > 0) { prompts.push({ text: { zh: `今天要完成哪些任务?`, en: `What tasks are due today?`, }, svg: SVG_ICONS.calendar, }); } // 补充通用提示 prompts.push( { text: { zh: '我本周有哪些任务?', en: 'What are my tasks this week?' }, svg: SVG_ICONS.list, }, { text: { zh: '哪些任务需要我协助?', en: 'Which tasks need my assistance?' }, svg: SVG_ICONS.user, }, ); return prompts.slice(0, 4); } /** * 项目页提示 - 聚焦项目任务管理 */ function getProjectPrompts(store) { const project = store.getters.projectData || {}; if (!project.id) { // 项目列表页 return [ { text: { zh: '我参与了哪些项目?', en: 'Which projects am I involved in?' }, svg: SVG_ICONS.folder, }, { text: { zh: '哪个项目有逾期任务?', en: 'Which project has overdue tasks?' }, svg: SVG_ICONS.alert, }, ]; } // 项目详情页 - 提供具体操作 const projectName = project.name || ''; return [ { text: { zh: '这个项目还有多少未完成的任务?', en: 'How many incomplete tasks in this project?', }, svg: SVG_ICONS.list, }, { text: { zh: '帮我在这个项目创建一个任务', en: 'Help me create a task in this project', }, svg: SVG_ICONS.plus, }, { text: { zh: '这个项目有哪些逾期任务?', en: 'What tasks are overdue in this project?', }, svg: SVG_ICONS.alert, }, { text: { zh: '查看项目成员的任务分配', en: 'View task assignments by member', }, svg: SVG_ICONS.user, }, ]; } /** * 消息页提示 - 聚焦沟通和消息查找 */ function getMessengerPrompts(store) { const dialogId = store.state.dialogId; const dialogs = store.state.cacheDialogs || []; const dialog = dialogs.find(d => d.id === dialogId); if (!dialog) { // 消息列表页 return [ { text: { zh: '给某人发送一条消息', en: 'Send a message to someone' }, svg: SVG_ICONS.send, }, { text: { zh: '搜索包含关键词的聊天', en: 'Search chats containing keyword' }, svg: SVG_ICONS.search, }, ]; } // 对话详情页 const dialogName = dialog.name || ''; return [ { text: { zh: '查看这个对话最近的消息', en: 'View recent messages in this chat', }, svg: SVG_ICONS.message, }, { text: { zh: '搜索对话中的文件', en: 'Search files in this chat', }, svg: SVG_ICONS.search, }, { text: { zh: '给对方发一条消息', en: 'Send a message', }, svg: SVG_ICONS.send, }, ]; } /** * 日历页提示 - 聚焦时间维度的任务查看 */ function getCalendarPrompts() { return [ { text: { zh: '今天有哪些任务到期?', en: 'What tasks are due today?' }, svg: SVG_ICONS.calendar, }, { text: { zh: '本周有哪些任务要完成?', en: 'What tasks are due this week?' }, svg: SVG_ICONS.list, }, { text: { zh: '下周的任务安排', en: 'Tasks scheduled for next week' }, svg: SVG_ICONS.clock, }, ]; } /** * 文件页提示 - 聚焦文件查找 */ function getFilePrompts() { return [ { text: { zh: '搜索文件名包含...', en: 'Search files named...' }, svg: SVG_ICONS.search, }, { text: { zh: '查看我最近的文件', en: 'View my recent files' }, svg: SVG_ICONS.folder, }, ]; } /** * 任务详情提示 - 聚焦当前任务的操作 */ function getSingleTaskPrompts() { return [ { text: { zh: '帮我添加一个子任务', en: 'Help me add a subtask' }, svg: SVG_ICONS.plus, }, { text: { zh: '修改这个任务的截止时间', en: 'Change the due date of this task' }, svg: SVG_ICONS.clock, }, { text: { zh: '将这个任务标记为完成', en: 'Mark this task as complete' }, svg: SVG_ICONS.check, }, { text: { zh: '查看这个任务的附件', en: 'View attachments of this task' }, svg: SVG_ICONS.folder, }, ]; } /** * 对话页提示 */ function getSingleDialogPrompts() { return [ { text: { zh: '查看最近的消息记录', en: 'View recent messages' }, svg: SVG_ICONS.message, }, { text: { zh: '发送一条消息', en: 'Send a message' }, svg: SVG_ICONS.send, }, ]; } /** * 文件预览提示 */ function getSingleFilePrompts() { return [ { text: { zh: '查看这个文件的详情', en: 'View file details' }, svg: SVG_ICONS.document, }, { text: { zh: '搜索类似的文件', en: 'Search similar files' }, svg: SVG_ICONS.search, }, ]; } /** * 任务附件提示 */ function getSingleFileTaskPrompts() { return [ { text: { zh: '查看这个任务的所有附件', en: 'View all attachments of this task' }, svg: SVG_ICONS.folder, }, { text: { zh: '查看任务详情', en: 'View task details' }, svg: SVG_ICONS.task, }, ]; } /** * 汇报编辑提示 - 聚焦汇报生成 */ function getSingleReportEditPrompts() { return [ { text: { zh: '根据本周任务生成周报', en: 'Generate weekly report from tasks' }, svg: SVG_ICONS.document, }, { text: { zh: '根据今天任务生成日报', en: 'Generate daily report from tasks' }, svg: SVG_ICONS.calendar, }, { text: { zh: '查看我上周的汇报', en: 'View my last week\'s report' }, svg: SVG_ICONS.search, }, ]; } /** * 汇报详情提示 */ function getSingleReportDetailPrompts() { return [ { text: { zh: '标记为已读', en: 'Mark as read' }, svg: SVG_ICONS.check, }, { text: { zh: '查看这个人的其他汇报', en: 'View other reports from this person' }, svg: SVG_ICONS.list, }, ]; } /** * 默认提示 - 通用场景 */ function getDefaultPrompts() { return [ { text: { zh: '我有哪些未完成的任务?', en: 'What tasks do I have pending?' }, svg: SVG_ICONS.task, }, { text: { zh: '搜索任务或项目', en: 'Search tasks or projects' }, svg: SVG_ICONS.search, }, { text: { zh: '帮我写一份工作汇报', en: 'Help me write a work report' }, svg: SVG_ICONS.document, }, ]; }