fix: create_task 默认归当前迭代(最新迭代);_resolve_iteration_id 取当前迭代而非第一个

This commit is contained in:
ymq 2026-08-18 14:05:20 +08:00
parent 6add7ff4fa
commit 7ec0fb611f

View File

@ -34,6 +34,7 @@ SDL_TOOLS = [
"title": "任务标题",
"role": "目标角色(requirement/design/develop/test/deploy)",
"description": "任务详细描述",
"iteration_id": "归属迭代(可选,默认当前迭代)",
},
category="task",
),
@ -320,13 +321,27 @@ async def _h_create_task(sor, p, ctx):
role = _normalize_role(role)
tid = getID()
# 迭代归属:显式指定 > 当前迭代(该 project 最新创建的迭代)。
# 「当前迭代」概念:新建迭代后当前迭代即新建的那个,任务默认归到它。
iteration_name = (p.get("iteration_id", "") or "").strip()
if not iteration_name:
irecs = await sor.sqlExe(
"SELECT iteration_name FROM sd_iterations WHERE project_id=${pid}$ ORDER BY created_at DESC LIMIT 1",
{"pid": pid})
if irecs:
iteration_name = getattr(irecs[0], 'iteration_name', '') or ''
params = {"description": desc}
if iteration_name:
params["iteration_id"] = iteration_name
await sor.C("pipeline_tasks", {
"id": tid, "tenant_id": pid, "pipeline_id": "role_task",
"owner_id": ctx.get("user_id") or "user", "title": title,
"state": "submitted", "role": role,
"params": json.dumps({"description": desc}, ensure_ascii=False),
"params": json.dumps(params, ensure_ascii=False),
})
return f"OK: 已创建任务 {title}(角色: {role})"
return f"OK: 已创建任务 {title}(角色: {role},迭代: {iteration_name or '未分配'})"
async def _h_list_tasks(sor, p, ctx):
@ -819,7 +834,7 @@ async def _resolve_iteration_id(sor, pid, iteration_id):
return full, ""
return "", f"迭代不存在: {iteration_id}"
recs = await sor.sqlExe(
"SELECT id FROM sd_iterations WHERE project_id=${pid}$ ORDER BY created_at ASC LIMIT 1",
"SELECT id FROM sd_iterations WHERE project_id=${pid}$ ORDER BY created_at DESC LIMIT 1",
{"pid": pid})
if recs:
return getattr(recs[0], "id", ""), ""