From 39416cb1c05015e66279913e8c6fa640719b39da Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 7 Aug 2026 18:10:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20list=5Fprojects=20?= =?UTF-8?q?=E6=84=8F=E5=9B=BE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/api/cockpit_chat.dspy | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/wwwroot/api/cockpit_chat.dspy b/wwwroot/api/cockpit_chat.dspy index 00bcd29..64ef290 100644 --- a/wwwroot/api/cockpit_chat.dspy +++ b/wwwroot/api/cockpit_chat.dspy @@ -395,8 +395,9 @@ INTENT_PROMPT = """你是一个开发产线意图分类器。分析用户输入 - start_agent: 启动Agent自动执行任务 - agent_status: 查看Agent状态和交付件 - query: 查询当前状态 -- show_tasks: 查看当前项目的任务列表(如\"显示任务\"\"任务列表\"\"有哪些任务\") -- show_bugs: 查看当前项目/迭代的Bug列表(如\"显示Bug\"\"Bug列表\"\"有哪些Bug\") +- show_tasks: 查看当前项目的任务列表(如"显示任务""任务列表""有哪些任务") +- show_bugs: 查看当前项目/迭代的Bug列表(如"显示Bug""Bug列表""有哪些Bug") +- list_projects: 列出所有项目(如"显示所有项目""有哪些项目""项目列表") - skill_list: 列出已导入的企业开发技能(如"查看技能""有哪些skills") - skill_import: 导入本地技能文件(如"导入技能 /path/to/skill",注意:只限本地路径,不包含 git@ 或 .git URL) - devops: git/Shell 操作(如 git clone, git pull, 克隆仓库, 执行命令,注意:任何包含 git@ 或 .git 的请求都属于 devops) @@ -555,10 +556,11 @@ def _security_scan(text): SCOPE_GUIDE = """我可以帮你: -📁 项目管理 — "创建电商平台项目" / "切换到XXX项目" +📁 项目管理 — "创建电商平台项目" / "切换到XXX项目" / "显示所有项目" 🔄 迭代管理 — "创建Sprint3" / "查看迭代进度" 📝 提交任务 — "设计用户表结构" / "实现登录API" -🐛 Bug管理 — "登录页报500" / "我的Bug列表" +📋 任务查看 — "显示任务列表" / "项目任务" +🐛 Bug管理 — "登录页报500" / "显示Bug" 📊 查询 — "当前项目进度" / "有哪些迭代" 📚 技能管理 — "导入技能 /path/to/skill" / "查看技能列表" 请描述你的需求。""" @@ -829,6 +831,24 @@ if action == 'send_message': sev_emoji = sev_map.get(severity, '\u25cf') lines.append(f"{sev_emoji} {title} [{severity}] {status} ({str(bid)[:8]})") agent_reply = '\n'.join(lines) + elif intent_type == 'list_projects': + projects = await sor.sqlExe( + "SELECT id, name, status, project_type, created_at FROM sd_projects ORDER BY created_at DESC LIMIT 20", + {}) + if not projects: + agent_reply = "暂无项目。输入「创建XXX项目」来创建第一个项目。" + else: + lines = ["所有项目:"] + for p in projects: + name = getattr(p, 'name', '') or '' + status = getattr(p, 'status', '') or '' + ptype = getattr(p, 'project_type', '') or '' + pid = getattr(p, 'id', '') or '' + emoji = '📁' + if status == 'active': emoji = '🟢' + elif status == 'completed': emoji = '✅' + lines.append(f"{emoji} {name} [{ptype}] {status}") + agent_reply = '\n'.join(lines) elif intent_type == 'start_agent': pid = ctx['project_id'] if not pid: