cockpit: workspace auto-create + requirement role keyword
This commit is contained in:
parent
23b0f94917
commit
b5892601ca
@ -41,7 +41,8 @@ def _guess_role(title):
|
|||||||
"""Guess agent role from task title keywords."""
|
"""Guess agent role from task title keywords."""
|
||||||
title_lower = (title or '').lower()
|
title_lower = (title or '').lower()
|
||||||
keywords = {
|
keywords = {
|
||||||
'design': ['设计', 'design', '架构', '方案', '需求', '原型', 'ui', 'ux'],
|
'requirement': ['需求分析', '需求文档', '需求规格', '需求', 'requirement', '分析需求', '调研'],
|
||||||
|
'design': ['设计', 'design', '架构', '方案', '原型', 'ui', 'ux'],
|
||||||
'develop': ['开发', '编码', '实现', '编写', 'develop', 'code', 'build', '重构', '修复'],
|
'develop': ['开发', '编码', '实现', '编写', 'develop', 'code', 'build', '重构', '修复'],
|
||||||
'test': ['测试', 'test', '验证', '检查', 'review', '评审'],
|
'test': ['测试', 'test', '验证', '检查', 'review', '评审'],
|
||||||
'deploy': ['部署', '发布', 'deploy', 'release', '上线', '配置'],
|
'deploy': ['部署', '发布', 'deploy', 'release', '上线', '配置'],
|
||||||
@ -657,7 +658,19 @@ if action == 'send_message':
|
|||||||
await _save_context(sor, uid, proj.id, '')
|
await _save_context(sor, uid, proj.id, '')
|
||||||
else:
|
else:
|
||||||
pid = getID()
|
pid = getID()
|
||||||
ws_dir = f"/d/pipeline/workspaces/{org_id}/{pname}"
|
# 创建工作目录:检测 /d 可写性,不可写时回退 /tmp
|
||||||
|
ws_base = '/d/pipeline/workspaces'
|
||||||
|
try:
|
||||||
|
if not os.path.isdir(os.path.dirname(ws_base)) or not os.access(os.path.dirname(ws_base), os.W_OK):
|
||||||
|
ws_base = '/tmp/pipeline_workspaces'
|
||||||
|
except Exception:
|
||||||
|
ws_base = '/tmp/pipeline_workspaces'
|
||||||
|
ws_dir = f"{ws_base}/{org_id}/{pname}"
|
||||||
|
try:
|
||||||
|
os.makedirs(ws_dir, exist_ok=True)
|
||||||
|
except Exception:
|
||||||
|
ws_dir = f"/tmp/pipeline_workspaces/{pname}"
|
||||||
|
os.makedirs(ws_dir, exist_ok=True)
|
||||||
await sor.C('sd_projects', {
|
await sor.C('sd_projects', {
|
||||||
'id': pid, 'name': pname, 'description': intent.get('description', ''),
|
'id': pid, 'name': pname, 'description': intent.get('description', ''),
|
||||||
'project_type': 'software', 'org_id': org_id, 'created_by': uid,
|
'project_type': 'software', 'org_id': org_id, 'created_by': uid,
|
||||||
@ -670,7 +683,7 @@ if action == 'send_message':
|
|||||||
'iteration_type': 'sprint', 'org_id': org_id, 'created_by': uid, 'status': 'active'
|
'iteration_type': 'sprint', 'org_id': org_id, 'created_by': uid, 'status': 'active'
|
||||||
})
|
})
|
||||||
await _save_context(sor, uid, pid, iid)
|
await _save_context(sor, uid, pid, iid)
|
||||||
agent_reply = f"✅ 项目「{pname}」已创建,默认迭代已就绪。现在可以提交任务了。"
|
agent_reply = f"✅ 项目「{pname}」已创建(工作目录:{ws_dir}),默认迭代已就绪。现在可以提交任务了。"
|
||||||
elif intent_type == 'select_project':
|
elif intent_type == 'select_project':
|
||||||
pname = intent.get('project_name', '')
|
pname = intent.get('project_name', '')
|
||||||
proj = await _find_project(sor, pname, org_id)
|
proj = await _find_project(sor, pname, org_id)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user