zentao-task-creator / 禅道需求任务创建
使用原则
中文说明:本技能用于从已有禅道需求创建主任务和子任务,默认不创建新需求。它沉淀“产品主任务 + 后端/前端/测试/美术子任务 + 截止时间规则 + 负责人默认值”的流程。
- 只处理已有禅道需求创建或调整任务;如果用户要创建/变更需求本身,使用
zentao-requirement-submit或zentao-story-change。 - 优先用
zentaoCLI 读取 story、execution、已有 tasks;创建/编辑任务时优先使用禅道传统表单,因为 CLI/API 不一定支持父任务、截止时间、子类型等字段。 - 创建前必须查重:同一执行下已有同名主任务或同名子任务时,不重复创建,优先复用或询问用户是否更新。
- 不在最终回复、日志摘要中暴露账号、密码、Token、Cookie。
- 除非用户明确要求,不创建美术任务;美术是否需要必须先确认。
触发场景
用户出现以下表达时使用本技能:
- “帮我下任务 / 下主任务和子任务”
- “从这个禅道需求创建任务”
- “主任务默认分配给产品,子任务给后端/前端/测试”
- “设置任务截止时间 / 前后端比测试提前 / 不能周天”
- “平台部任务截止时间默认每周三”
输入收集
执行前收集或推断:
- 需求 ID:从
storyID=8947、story-view-8947、用户文字或最近刚提交的需求中识别。 - 执行/版本:优先使用 story 已关联 execution;如果多个执行,选择用户指定版本或进行中的执行。
- 主任务标题:默认使用 story 标题。
- 任务范围:后端、前端、测试、美术是否需要。默认建议后端/前端/测试;美术默认不创建,除非用户确认。
- 负责人:按默认映射或用户指定账号。
- 截止时间:用户明确给日期时按用户日期;未给时按“排期规则”。
- 项目归属/子类型:AI 项目、平台部、帐服、客服总台、客服后台、EGC 等。
默认负责人和字段映射
中文说明:以下账号是当前团队常用默认值,创建前如页面选项中不存在,应通过任务创建页选项确认,不要猜测提交。
| 角色 | 禅道任务类型 | 默认负责人 | 账号 |
|---|---|---|---|
| 产品/主任务 | 产品 design |
当前产品负责人/当前用户,默认陈远 | cheny |
| 后端 | 后端 devel |
陈立强 | chenlq |
| 前端 | Web web |
陈杰 | chenjie |
| 测试 | 测试 discuss |
陈宇楠 | chenyn |
| 美术 | 美术 study |
张倩文 | zhangqw |
平台部负责人规则
中文说明:平台部任务负责人规则与 AI 项目不同,不能直接套用 AI 项目的陈立强/陈杰默认值。
- 平台部前端任务默认指派张校辉,账号通常为
zhangxiaohui。 - 平台部后端任务需要在余浩和陈益之间人工确认;创建后端任务前必须询问用户“后端指派余浩还是陈益”,不要默认指派。
- 平台部测试任务默认指派林文强;账号需从禅道任务创建页下拉选项确认后使用。
- 平台部美术如用户未另行指定,仍按通用默认值:张倩文
zhangqw。 - AI/其他非平台部任务测试默认仍为陈宇楠
chenyn。 - 如果任务创建页中账号与上述账号不一致,以禅道页面下拉选项为准,并在最终回复中说明实际账号。
后端子类型规则
- AI 项目后端子类型默认选择
AI及禅道,禅道字段值通常为AI。 - 平台部项目多数后端子类型为
账服,禅道字段值通常为zf。 - 如果需求涉及
客服总台、客服后台、EGC、IGC、公共服等,创建后端任务前先向用户确认子类型。 - 如果用户已明确说“子类型用 xxx”,按用户最新口径执行。
排期规则
中文说明:排期默认以测试完成时间为验收节点,研发类任务提前完成,且所有任务截止日期不能落在周天。
- 用户明确给主任务/测试截止日期时:主任务和测试任务截止日期默认等于该日期。
- 用户未给截止日期且判断为平台部任务时:默认取当前日期之后最近一个周三作为主任务和测试任务截止日期。
- 用户未给截止日期且非平台部任务时:先向用户确认截止日期;不要擅自猜测。
- 后端、前端任务截止日期默认比测试任务提前 2 天。
- 如果后端/前端计算出的日期是周天,向前调整到周六;如果用户所在团队要求工作日,可再向前调整到周五并说明。
- 美术任务只有确认需要时创建;截止日期默认比前后端再提前 1-2 天,根据工作量判断,并避开周天。
- 如果任何目标日期落在周天,必须调整后再创建或编辑任务。
标准任务结构
- 主任务:
<需求标题>- 类型:产品
design - 关联 story:需求 ID
- 指派:产品负责人/当前用户
- 截止:测试截止日期
- 类型:产品
- 后端子任务:
<需求标题> 后端- 类型:后端
devel - 父任务:主任务 ID
- 子类型:按“后端子类型规则”
- 截止:测试截止日期提前 2 天并避开周天
- 类型:后端
- 前端子任务:
<需求标题> 前端- 类型:Web
web - 父任务:主任务 ID
- 截止:测试截止日期提前 2 天并避开周天
- 类型:Web
- 测试子任务:
<需求标题> 测试- 类型:测试
discuss - 父任务:主任务 ID
- 截止:测试截止日期
- 类型:测试
- 美术子任务:
<需求标题> 美术- 类型:美术
study - 父任务:主任务 ID
- 截止:按工作量比前后端提前 1-2 天,并避开周天
- 类型:美术
快速执行优先路径
中文说明:为缩短下任务时间,常规创建优先使用脚本 scripts/create_story_tasks_fast.mjs,不要再手写临时脚本逐个创建、逐个回查。只有脚本报错或需要非常规字段时,才回退到后面的手工表单流程。
推荐命令:
node /Users/bsg/.codex/skills/zentao-task-creator/scripts/create_story_tasks_fast.mjs --story <storyID> --backend <account> [--with-art] [--deadline YYYY-MM-DD] [--pool-id <poolID>]
脚本会一次性完成:
- 登录并读取 story、执行、模块、来源、类别和标题。
- 从执行任务列表查重;同名任务存在时复用,不重复创建。
- 从创建页校验负责人账号是否存在;
zentao users list无权限时不再额外查询用户列表。 - 先创建/复用主任务,随后创建后端、前端、测试,以及可选美术子任务,并挂到主任务下。
- 自动避开周天:研发截止=测试截止提前 2 天,美术截止=研发截止提前 2 天。
- 可选用
--pool-id将需求池记录关联到主任务,避免需求池仍显示未下单。 - 最后输出一份 JSON 回查结果,包含任务 ID、父任务、类型、负责人、截止日期和状态。
平台部常用示例:
node /Users/bsg/.codex/skills/zentao-task-creator/scripts/create_story_tasks_fast.mjs --story 8964 --backend yuh --with-art --pool-id 2659
快速路径注意事项:
- 平台部仍必须先确认后端是余浩
yuh还是陈益,再传--backend;不得默认猜。 - 默认平台部前端
zhangxiaohui、测试linwq、美术zhangqw;如果用户指定其他人,需先确认脚本是否支持,必要时回退手工流程。 - 不要提交
keywords、files[]、labels[]、空tag[]等任务表不稳定字段,避免Unknown column或字段类型错误。 - 脚本成功后无需再逐个运行
zentao task get;只在输出异常、用户要求明细复核、或字段看起来不一致时再逐个回查。
工作流程
0. 优先尝试快速脚本
- 信息齐全时直接运行“快速执行优先路径”的脚本;脚本输出即为最终回查依据。
- 脚本缺参数时只问必要问题:平台部后端负责人、美术是否需要、非平台部截止日期。
- 脚本失败时再进入下面的手工流程,并复用脚本已创建成功的任务,避免重复。
1. 读取需求和执行
zentao story get --id <storyID> --json
zentao tasks list --execution <executionID> --limit 500 --json
- 确认 story 标题、状态、产品、关联 execution。
- 如果 story 没有关联 execution,先让用户指定版本/执行,或使用需求提交流程关联执行。
- 在目标 execution 下查找同名任务,避免重复创建。
2. 确认任务范围
中文说明:如果用户没有明确哪些角色要下任务,先给建议并等待确认。常见默认建议是后端、前端、测试;美术通常不需要。
需要确认的问题:
- 是否创建后端、前端、测试、美术子任务?
- 后端子类型是否用默认值?AI 项目默认
AI及禅道;平台部默认账服。 - 如果是平台部任务:前端默认张校辉;测试默认林文强;后端必须确认指派余浩还是陈益。
- 是否有明确截止日期?平台部未给日期时默认最近一个周三。
3. 计算截止日期
- 先确定测试/主任务截止日期。
- 计算后端/前端截止日期:测试截止日期 - 2 天。
- 如结果为周天,向前调整 1 天。
- 美术截止日期:前后端截止日期 - 1 或 2 天,并避开周天。
- 输出或记录最终日期,避免创建后再批量修改。
4. 创建任务
优先使用禅道任务创建表单:
- 登录页:
/index.php?m=user&f=login。 - 创建页:
/index.php?m=task&f=create&executionID=<executionID>&storyID=<storyID>&moduleID=0&onlybody=yes。 - 请求头带
X-Requested-With: XMLHttpRequest,否则可能拿到首页壳页面。 - 关键字段:
execution=<executionID>category=featuresource=customer,除非用户指定其他来源type=design/devel/web/discuss/studysubtype=AI/zf/...,仅后端等需要时填写assignedTo[]=<account>创建页使用数组字段module=0或页面默认模块status=waitstory=<storyID>name=<任务标题>desc=关联需求 #<storyID>:<story标题>。截止日期:<date>。deadline=<YYYY-MM-DD>parent=<主任务ID>,创建子任务时填写
- 保存成功通常返回
保存成功或locate。
5. 编辑已有任务截止日期
中文说明:如果任务已经创建但排期规则变化,需要走任务编辑表单;REST PUT /api.php/v1/tasks/<id> 可能返回空响应且不生效。
- 编辑页:
/index.php?m=task&f=edit&taskID=<taskID>&onlybody=yes。 - 读取现有表单,保留
name、desc、story、parent、assignedTo、type、subtype、status、estimate、left等字段。 - 只更新
deadline和必要的desc/comment。 - 不要提交页面存在但数据库未必存在的扩展字段,例如提交后报
Unknown column时,应移除该字段重试。 - 不要提交空的
tag[]、labels[]等会触发“应当是数字”的字段。
6. 回查验证
创建或更新后必须回查:
zentao task get --id <taskID> --json
zentao tasks list --execution <executionID> --limit 500 --json
验证项:
- 主任务
story等于需求 ID,execution等于目标执行。 - 子任务
parent等于主任务 ID。 - 类型正确:产品/后端/Web/测试/美术。
- 后端子类型正确,例如
AI对应AI及禅道。 - 指派账号正确。
- 截止日期符合排期规则,且没有周天。
- 状态为
wait,除非用户要求其他状态。
异常处理
zentao users list无权限:从任务创建/编辑页的指派人下拉选项中确认账号。- 创建页不是表单而是首页壳页面:补
X-Requested-With: XMLHttpRequest,并检查页面标题包含“建任务”。 - CLI 创建任务缺字段:改用传统表单创建,CLI 不一定支持父任务、截止时间、子类型。
- REST 修改截止日期不生效:改用任务编辑表单提交。
- 表单报
Unknown column:移除非核心扩展字段,只保留任务基础字段后重试。 - 表单报
tag 应当是数字:不要提交空的tag[]、labels[]。 - 已有同名任务:不要重复创建;回查后按用户要求调整负责人、父任务或截止日期。
最终回复
最终回复只输出:
- 关联需求链接。
- 主任务和子任务 ID、标题、负责人、类型/子类型、截止日期。
- 未创建的角色及原因,例如“美术未创建,用户确认不需要”。
- 回查确认结果。