--- name: zentao-plan description: "禅道产品计划、版本(build)、发布(release)管理。当用户说「排个产品计划」「打个包」「建个版本」「发布上线」时使用。" --- # 禅道产品计划 / 版本 / 发布 **前置:先读 `zentao-shared`(尤其"路径参数不出现在 inputSchema 里"一节)。** --- ## 三者关系 ``` productplan 产品计划(做什么、什么时候做) build 版本/构建(某次打包产出,挂在执行下) release 发布(把某个/某几个 build 正式对外发布) ``` 三者是独立管理的实体,不是严格的父子层级——`release` 通过 `build` 字段关联具体的构建, `build` 通过 `executionID` 关联执行、`system` 关联应用,`productplan` 只挂产品,不关联 执行/构建。 --- ## 产品计划(productplan) ``` get_products_productID_productplans(productID, ...) get_productplans_planID(planID) 详情——注意参数叫 planID,不是 productplanID post_productplans({ payload: { productID, title, parent?, begin?, end?, branchID?, desc? } }) put_productplans_productplanID({ productplanID, payload: {...} }) # 改用的是 productplanID delete_productplans_productplanID({ productplanID }) ``` **详情接口和改/删接口的路径参数名不一样**(`planID` vs `productplanID`),照抄各自工具 名对应的字面参数名。`productID`/`title` 必填,`parent` 可以挂一个父计划形成层级。 --- ## 版本 / 构建(build) ``` get_projects_projectID_builds(projectID, ...) get_executions_executionID_builds(executionID, ...) post_builds({ payload: { executionID, product, name, system, builder, date, scmPath?, filePath?, desc? } }) put_builds_buildID({ buildID, payload: {...} }) delete_builds_buildID({ buildID }) ``` 必填字段比较多:`executionID`(注意是 `executionID` 不是 `execution`)、`product` (注意是 `product` 不是 `productID`)、`name`、`system`(所属应用,需要先有 `zentao-misc` 里的应用 ID)、`builder`(构建者)、`date`(打包日期)——**字段名在不同 实体间不统一是这套 API 的通病**(`zentao-task` 也提过 name/title、executionID/execution 的不一致),创建前对照该工具自己的 inputSchema 逐个字段确认,不要照抄其他实体的字段名。 没有单条版本详情接口,从列表里过滤。 --- ## 发布(release) ``` get_products_productID_releases(productID, ...) post_releases({ payload: { productID, system, name, build, date, status?, desc? } }) put_releases_releasID({ releasID, payload: {...} }) # 注意参数叫 releasID,不是 releaseID delete_releases_releasID({ releasID }) ``` 必填:`productID`/`system`(所属应用)/`name`(应用版本号)/`build`(包含的构建,**是字符 串数组**,可以关联多个构建,不是单个 ID)/`date`(计划发布日期)。 `status` 受限枚举:`wait` 未开始 | `normal` 已发布 | `fail` 发布失败 | `terminate` 停止维护 ——不像 bug/task 有专门的状态流转端点,发布状态直接在创建/修改时传 `status` 字段设置, 改状态就是 `put_releases_releasID({ releasID, payload: { status: "normal" } })`。 **没有单条发布详情接口**,从 `get_products_productID_releases` 列表里过滤。 **参数名注意**:路径参数字面拼写是 `releasID`(缺一个 `e`),跟 testcase 的 `testcasID` 是同一类官方 API 拼写坑,照抄不要纠正。