ai-project-manage-cli 2.0.11 → 2.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/cli.d.ts +25 -9
- package/dist/api/cli.d.ts.map +1 -1
- package/dist/api/client.d.ts +2 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/request-config.d.ts +3 -2
- package/dist/api/request-config.d.ts.map +1 -1
- package/dist/api/request-config.js +8 -4
- package/dist/api/request-config.js.map +1 -1
- package/dist/cli/commands/get.d.ts.map +1 -1
- package/dist/cli/commands/get.js +37 -13
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/set.d.ts.map +1 -1
- package/dist/cli/commands/set.js +0 -8
- package/dist/cli/commands/set.js.map +1 -1
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +44 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/package.json +1 -2
- package/templates/skills/apm-apply-change/SKILL.md +1 -1
- package/templates/skills/apm-auto-dev/SKILL.md +1 -1
- package/templates/skills/apm-fixbug/SKILL.md +53 -115
package/dist/api/cli.d.ts
CHANGED
|
@@ -41,6 +41,18 @@ export type CliDefectRow = {
|
|
|
41
41
|
export type ResCliResourceRequirementDefectsList = {
|
|
42
42
|
list: CliDefectRow[];
|
|
43
43
|
};
|
|
44
|
+
/** 对应 lpm-server `POST /cli/resource/requirement/developers/branch-names` */
|
|
45
|
+
export type ReqCliResourceRequirementDevelopersBranchNamesList = {
|
|
46
|
+
id: number;
|
|
47
|
+
};
|
|
48
|
+
export type CliDeveloperBranchNameRow = {
|
|
49
|
+
branchName: string | null;
|
|
50
|
+
/** 工作目录绝对路径(与缺陷列表 `workdir` 一致,用于本地过滤) */
|
|
51
|
+
workdir: string;
|
|
52
|
+
};
|
|
53
|
+
export type ResCliResourceRequirementDevelopersBranchNamesList = {
|
|
54
|
+
list: CliDeveloperBranchNameRow[];
|
|
55
|
+
};
|
|
44
56
|
/** 对应 lpm-server `POST /cli/resource/requirement` */
|
|
45
57
|
export type ReqCliResourceRequirementGet = {
|
|
46
58
|
id: number;
|
|
@@ -107,15 +119,6 @@ export type ResCliResourceRequirementTestCasesImport = {
|
|
|
107
119
|
status: string;
|
|
108
120
|
}[];
|
|
109
121
|
};
|
|
110
|
-
/** 对应 lpm-server `POST /cli/resource/requirement/status/pending-test` */
|
|
111
|
-
export type ReqCliResourceRequirementPendingTestSet = {
|
|
112
|
-
id: number;
|
|
113
|
-
};
|
|
114
|
-
export type ResCliResourceRequirementPendingTestSet = {
|
|
115
|
-
id: number;
|
|
116
|
-
workitemId: string;
|
|
117
|
-
status: string;
|
|
118
|
-
};
|
|
119
122
|
/** 对应 lpm-server `POST /cli/log/report` */
|
|
120
123
|
export type ReqCliResourceDevelopLogPayloadReport = {
|
|
121
124
|
developLogId: string;
|
|
@@ -148,4 +151,17 @@ export type ResCliLogDeveloperStatusSet = {
|
|
|
148
151
|
reviewReply: string | null;
|
|
149
152
|
branchName: string | null;
|
|
150
153
|
};
|
|
154
|
+
/** 对应 lpm-server `POST /cli/status` */
|
|
155
|
+
export type ReqCliStatusSet = {
|
|
156
|
+
entity: "defect";
|
|
157
|
+
defectId: string;
|
|
158
|
+
} | {
|
|
159
|
+
entity: "requirement";
|
|
160
|
+
requirementId: number;
|
|
161
|
+
};
|
|
162
|
+
export type ResCliStatusSet = {
|
|
163
|
+
entity: "defect" | "requirement";
|
|
164
|
+
id: string | number;
|
|
165
|
+
status: string;
|
|
166
|
+
};
|
|
151
167
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/api/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/api/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/api/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.d.ts
CHANGED
|
@@ -13,13 +13,14 @@ declare const api: ApiClient<{
|
|
|
13
13
|
readonly variablesGet: import("listpage-http").EndpointConfig<void, import("./cli").ResCliVariables>;
|
|
14
14
|
readonly resourceRequirementGet: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementGet, import("./cli").ResCliResourceRequirementGet>;
|
|
15
15
|
readonly resourceRequirementDefectsList: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementDefectsList, import("./cli").ResCliResourceRequirementDefectsList>;
|
|
16
|
+
readonly resourceRequirementDevelopersBranchNamesList: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementDevelopersBranchNamesList, import("./cli").ResCliResourceRequirementDevelopersBranchNamesList>;
|
|
16
17
|
readonly resourceRequirementCommentSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementCommentSet, import("./cli").ResCliResourceRequirementCommentSet>;
|
|
17
18
|
readonly resourceRequirementDeveloperBranchNameSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementDeveloperBranchNameSet, import("./cli").ResCliResourceRequirementCommentSet>;
|
|
18
19
|
readonly resourceRequirementContentSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementContentSet, import("./cli").ResCliResourceRequirementContentSet>;
|
|
19
20
|
readonly resourceRequirementTestCasesImport: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementTestCasesImport, import("./cli").ResCliResourceRequirementTestCasesImport>;
|
|
20
|
-
readonly resourceRequirementPendingTestSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceRequirementPendingTestSet, import("./cli").ResCliResourceRequirementPendingTestSet>;
|
|
21
21
|
readonly resourceDevelopLogPayloadReport: import("listpage-http").EndpointConfig<import("./cli").ReqCliResourceDevelopLogPayloadReport, import("./cli").ResCliResourceDevelopLogPayloadReport>;
|
|
22
22
|
readonly logDeveloperStatusSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliLogDeveloperStatusSet, import("./cli").ResCliLogDeveloperStatusSet>;
|
|
23
|
+
readonly statusSet: import("listpage-http").EndpointConfig<import("./cli").ReqCliStatusSet, import("./cli").ResCliStatusSet>;
|
|
23
24
|
};
|
|
24
25
|
readonly employee: {
|
|
25
26
|
readonly auth: import("listpage-http").EndpointConfig<import("./cli").ReqCliLoginByEmployee, import("./cli").ResCliLoginByEmployee>;
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,aAAa,CAAC,CAAC;AAExD,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAkB1E;AAID,QAAA,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,aAAa,CAAC,CAAC;AAExD,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAkB1E;AAID,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;EAGP,CAAC;AAEH,eAAe,GAAG,CAAC"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export type { ApiClient } from "listpage-http";
|
|
|
2
2
|
export { ApiError, ERROR_CODE_NETWORK, RequestTimeoutException, defineEndpoint, } from "listpage-http";
|
|
3
3
|
export { createApmClient, type ApmClient, type CreateApmClientOptions, } from "./client";
|
|
4
4
|
export { requestConfig, type RequestConfig } from "./request-config";
|
|
5
|
-
export type { CliDefectRow, ReqCliLogDeveloperStatusSet, ReqCliLoginByEmployee, ReqCliResourceDevelopLogPayloadReport, ReqCliResourceRequirementCommentSet, ReqCliResourceRequirementDefectsList, ReqCliResourceRequirementDeveloperBranchNameSet, ReqCliResourceRequirementGet, ReqCliResourceRequirementTestCasesImport, ReqCliVariablesGet, ResCliLoginByEmployee, ResCliLogDeveloperStatusSet, ResCliResourceDevelopLogPayloadReport, ResCliResourceRequirementCommentSet, ResCliResourceRequirementDefectsList, ResCliResourceRequirementDeveloperBranchNameSet, ResCliResourceRequirementGet, ResCliResourceRequirementTestCasesImport, ResCliVariables, } from "./cli";
|
|
5
|
+
export type { CliDefectRow, ReqCliLogDeveloperStatusSet, ReqCliLoginByEmployee, ReqCliResourceDevelopLogPayloadReport, ReqCliResourceRequirementCommentSet, ReqCliResourceRequirementDefectsList, ReqCliResourceRequirementDeveloperBranchNameSet, ReqCliResourceRequirementGet, ReqCliResourceRequirementTestCasesImport, ReqCliStatusSet, ReqCliVariablesGet, ResCliLoginByEmployee, ResCliLogDeveloperStatusSet, ResCliResourceDevelopLogPayloadReport, ResCliResourceRequirementCommentSet, ResCliResourceRequirementDefectsList, ResCliResourceRequirementDeveloperBranchNameSet, ResCliResourceRequirementGet, ResCliResourceRequirementTestCasesImport, ResCliStatusSet, ResCliVariables, } from "./cli";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,KAAK,SAAS,EACd,KAAK,sBAAsB,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,EACrB,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,EACxC,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,EACxC,eAAe,GAChB,MAAM,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,KAAK,SAAS,EACd,KAAK,sBAAsB,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,EACrB,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,EACxC,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,EACxC,eAAe,EACf,eAAe,GAChB,MAAM,OAAO,CAAC"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import type { ReqCliLogDeveloperStatusSet, ReqCliLoginByEmployee, ReqCliResourceDevelopLogPayloadReport, ReqCliResourceRequirementCommentSet, ReqCliResourceRequirementContentSet, ReqCliResourceRequirementDefectsList, ReqCliResourceRequirementDeveloperBranchNameSet, ReqCliResourceRequirementGet, ReqCliResourceRequirementTestCasesImport,
|
|
1
|
+
import type { ReqCliLogDeveloperStatusSet, ReqCliLoginByEmployee, ReqCliResourceDevelopLogPayloadReport, ReqCliResourceRequirementCommentSet, ReqCliResourceRequirementContentSet, ReqCliResourceRequirementDefectsList, ReqCliResourceRequirementDevelopersBranchNamesList, ReqCliResourceRequirementDeveloperBranchNameSet, ReqCliResourceRequirementGet, ReqCliResourceRequirementTestCasesImport, ReqCliStatusSet, ResCliLoginByEmployee, ResCliLogDeveloperStatusSet, ResCliResourceDevelopLogPayloadReport, ResCliResourceRequirementCommentSet, ResCliResourceRequirementContentSet, ResCliResourceRequirementDefectsList, ResCliResourceRequirementDevelopersBranchNamesList, ResCliResourceRequirementGet, ResCliResourceRequirementTestCasesImport, ResCliStatusSet, ResCliVariables } from "./cli";
|
|
2
2
|
export declare const requestConfig: {
|
|
3
3
|
readonly cli: {
|
|
4
4
|
readonly variablesGet: import("listpage-http").EndpointConfig<void, ResCliVariables>;
|
|
5
5
|
readonly resourceRequirementGet: import("listpage-http").EndpointConfig<ReqCliResourceRequirementGet, ResCliResourceRequirementGet>;
|
|
6
6
|
readonly resourceRequirementDefectsList: import("listpage-http").EndpointConfig<ReqCliResourceRequirementDefectsList, ResCliResourceRequirementDefectsList>;
|
|
7
|
+
readonly resourceRequirementDevelopersBranchNamesList: import("listpage-http").EndpointConfig<ReqCliResourceRequirementDevelopersBranchNamesList, ResCliResourceRequirementDevelopersBranchNamesList>;
|
|
7
8
|
readonly resourceRequirementCommentSet: import("listpage-http").EndpointConfig<ReqCliResourceRequirementCommentSet, ResCliResourceRequirementCommentSet>;
|
|
8
9
|
readonly resourceRequirementDeveloperBranchNameSet: import("listpage-http").EndpointConfig<ReqCliResourceRequirementDeveloperBranchNameSet, ResCliResourceRequirementCommentSet>;
|
|
9
10
|
readonly resourceRequirementContentSet: import("listpage-http").EndpointConfig<ReqCliResourceRequirementContentSet, ResCliResourceRequirementContentSet>;
|
|
10
11
|
readonly resourceRequirementTestCasesImport: import("listpage-http").EndpointConfig<ReqCliResourceRequirementTestCasesImport, ResCliResourceRequirementTestCasesImport>;
|
|
11
|
-
readonly resourceRequirementPendingTestSet: import("listpage-http").EndpointConfig<ReqCliResourceRequirementPendingTestSet, ResCliResourceRequirementPendingTestSet>;
|
|
12
12
|
readonly resourceDevelopLogPayloadReport: import("listpage-http").EndpointConfig<ReqCliResourceDevelopLogPayloadReport, ResCliResourceDevelopLogPayloadReport>;
|
|
13
13
|
readonly logDeveloperStatusSet: import("listpage-http").EndpointConfig<ReqCliLogDeveloperStatusSet, ResCliLogDeveloperStatusSet>;
|
|
14
|
+
readonly statusSet: import("listpage-http").EndpointConfig<ReqCliStatusSet, ResCliStatusSet>;
|
|
14
15
|
};
|
|
15
16
|
readonly employee: {
|
|
16
17
|
/** 登录等鉴权(路径落在 `/cli/employee/auth`,便于与业务接口区分) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-config.d.ts","sourceRoot":"","sources":["../../src/api/request-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,qCAAqC,EACrC,mCAAmC,EACnC,mCAAmC,EACnC,oCAAoC,EACpC,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,
|
|
1
|
+
{"version":3,"file":"request-config.d.ts","sourceRoot":"","sources":["../../src/api/request-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,qCAAqC,EACrC,mCAAmC,EACnC,mCAAmC,EACnC,oCAAoC,EACpC,kDAAkD,EAClD,+CAA+C,EAC/C,4BAA4B,EAC5B,wCAAwC,EAExC,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qCAAqC,EACrC,mCAAmC,EACnC,mCAAmC,EACnC,oCAAoC,EACpC,kDAAkD,EAElD,4BAA4B,EAC5B,wCAAwC,EACxC,eAAe,EACf,eAAe,EAChB,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;QA2EtB,iDAAiD;;;CAO3C,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC"}
|
|
@@ -16,6 +16,10 @@ exports.requestConfig = {
|
|
|
16
16
|
method: "POST",
|
|
17
17
|
path: "/cli/resource/requirement/defects",
|
|
18
18
|
}),
|
|
19
|
+
resourceRequirementDevelopersBranchNamesList: (0, listpage_http_1.defineEndpoint)({
|
|
20
|
+
method: "POST",
|
|
21
|
+
path: "/cli/resource/requirement/developers/branch-names",
|
|
22
|
+
}),
|
|
19
23
|
resourceRequirementCommentSet: (0, listpage_http_1.defineEndpoint)({
|
|
20
24
|
method: "POST",
|
|
21
25
|
path: "/cli/resource/requirement/comment",
|
|
@@ -32,10 +36,6 @@ exports.requestConfig = {
|
|
|
32
36
|
method: "POST",
|
|
33
37
|
path: "/cli/resource/requirement/test-cases/import",
|
|
34
38
|
}),
|
|
35
|
-
resourceRequirementPendingTestSet: (0, listpage_http_1.defineEndpoint)({
|
|
36
|
-
method: "POST",
|
|
37
|
-
path: "/cli/resource/requirement/status/pending-test",
|
|
38
|
-
}),
|
|
39
39
|
resourceDevelopLogPayloadReport: (0, listpage_http_1.defineEndpoint)({
|
|
40
40
|
method: "POST",
|
|
41
41
|
path: "/cli/log/report",
|
|
@@ -44,6 +44,10 @@ exports.requestConfig = {
|
|
|
44
44
|
method: "POST",
|
|
45
45
|
path: "/cli/status/developer",
|
|
46
46
|
}),
|
|
47
|
+
statusSet: (0, listpage_http_1.defineEndpoint)({
|
|
48
|
+
method: "POST",
|
|
49
|
+
path: "/cli/status",
|
|
50
|
+
}),
|
|
47
51
|
},
|
|
48
52
|
employee: {
|
|
49
53
|
/** 登录等鉴权(路径落在 `/cli/employee/auth`,便于与业务接口区分) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-config.js","sourceRoot":"","sources":["../../src/api/request-config.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;
|
|
1
|
+
{"version":3,"file":"request-config.js","sourceRoot":"","sources":["../../src/api/request-config.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AA6BlC,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE;QACH,YAAY,EAAE,IAAA,8BAAc,EAAsC;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;SAC3B,CAAC;QACF,sBAAsB,EAAE,IAAA,8BAAc,EAGpC;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,2BAA2B;SAClC,CAAC;QACF,8BAA8B,EAAE,IAAA,8BAAc,EAG5C;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,mCAAmC;SAC1C,CAAC;QACF,4CAA4C,EAAE,IAAA,8BAAc,EAG1D;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,mDAAmD;SAC1D,CAAC;QACF,6BAA6B,EAAE,IAAA,8BAAc,EAG3C;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,mCAAmC;SAC1C,CAAC;QACF,yCAAyC,EAAE,IAAA,8BAAc,EAGvD;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iDAAiD;SACxD,CAAC;QACF,6BAA6B,EAAE,IAAA,8BAAc,EAG3C;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,mCAAmC;SAC1C,CAAC;QACF,kCAAkC,EAAE,IAAA,8BAAc,EAGhD;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6CAA6C;SACpD,CAAC;QACF,+BAA+B,EAAE,IAAA,8BAAc,EAG7C;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;SACxB,CAAC;QACF,qBAAqB,EAAE,IAAA,8BAAc,EAGnC;YACA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB;SAC9B,CAAC;QACF,SAAS,EAAE,IAAA,8BAAc,EAAmC;YAC1D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;SACpB,CAAC;KACH;IACD,QAAQ,EAAE;QACR,iDAAiD;QACjD,IAAI,EAAE,IAAA,8BAAc,EAA+C;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE,KAAK;SACpB,CAAC;KACH;CACO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgI1D"}
|
package/dist/cli/commands/get.js
CHANGED
|
@@ -17,22 +17,18 @@ const DEFECT_STATUS_LABEL = {
|
|
|
17
17
|
FIXED: "已解决",
|
|
18
18
|
REOPENED: "重新打开",
|
|
19
19
|
};
|
|
20
|
-
function defectStatusLabel(status) {
|
|
21
|
-
return DEFECT_STATUS_LABEL[status] ?? status;
|
|
22
|
-
}
|
|
23
20
|
function buildDefectMarkdown(row) {
|
|
24
|
-
return `##
|
|
25
|
-
${defectStatusLabel(row.status)}
|
|
26
|
-
|
|
27
|
-
## 缺陷内容
|
|
21
|
+
return `## 缺陷内容
|
|
28
22
|
${row.title}
|
|
23
|
+
|
|
24
|
+
## 原因复盘
|
|
29
25
|
`;
|
|
30
26
|
}
|
|
31
27
|
function buildStatusYaml(defects) {
|
|
32
28
|
const lines = ["# 缺陷状态", "defects:"];
|
|
33
29
|
for (const d of defects) {
|
|
34
30
|
lines.push(` "${d.id}":`);
|
|
35
|
-
lines.push(` status: ${d.status}`);
|
|
31
|
+
lines.push(` status: ${DEFECT_STATUS_LABEL[d.status]}`);
|
|
36
32
|
}
|
|
37
33
|
return `${lines.join("\n")}\n`;
|
|
38
34
|
}
|
|
@@ -88,10 +84,6 @@ ${res.comments
|
|
|
88
84
|
.description("按需求 ID 拉取当前登录员工名下的缺陷列表,并写入 .apm/workitems/<id>/bugs/")
|
|
89
85
|
.argument("<id>", "需求 ID", parseRequirementId)
|
|
90
86
|
.action(async (requirementId) => {
|
|
91
|
-
const config = (0, apm_config_1.loadApmConfig)();
|
|
92
|
-
if (!config.auth.token?.trim()) {
|
|
93
|
-
throw new Error("未登录:请先执行 apm login");
|
|
94
|
-
}
|
|
95
87
|
const res = await client_1.default.cli.resourceRequirementDefectsList({
|
|
96
88
|
id: requirementId,
|
|
97
89
|
});
|
|
@@ -112,7 +104,39 @@ ${res.comments
|
|
|
112
104
|
}
|
|
113
105
|
const statusPath = path_1.default.join(bugsDir, "status.yaml");
|
|
114
106
|
(0, node_fs_1.writeFileSync)(statusPath, buildStatusYaml(matched), "utf8");
|
|
115
|
-
console.log(`已写入 ${matched.length} 条缺陷到 ${bugsDir},并更新 status.yaml
|
|
107
|
+
console.log(`已写入 ${matched.length} 条缺陷到 ${bugsDir},并更新 status.yaml`);
|
|
108
|
+
});
|
|
109
|
+
getCmd
|
|
110
|
+
.command("branch-name")
|
|
111
|
+
.alias("branchName")
|
|
112
|
+
.description("按需求 ID 获取当前开发目录对应的分支名(服务端返回列表,本地按工作目录路径过滤)")
|
|
113
|
+
.argument("<id>", "需求 ID", parseRequirementId)
|
|
114
|
+
.action(async (requirementId) => {
|
|
115
|
+
const res = await client_1.default.cli.resourceRequirementDevelopersBranchNamesList({
|
|
116
|
+
id: requirementId,
|
|
117
|
+
});
|
|
118
|
+
const currentDir = path_1.default.resolve(process.cwd());
|
|
119
|
+
const matched = res.list.filter((row) => {
|
|
120
|
+
const wd = row.workdir?.trim();
|
|
121
|
+
if (!wd) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
return wd === currentDir;
|
|
125
|
+
});
|
|
126
|
+
if (matched.length === 0) {
|
|
127
|
+
const hint = res.list.length > 0
|
|
128
|
+
? `服务端返回 ${res.list.length} 条记录,工作目录均与当前目录不一致。当前目录:${currentDir}`
|
|
129
|
+
: "服务端未返回任何开发者分支记录";
|
|
130
|
+
throw new Error(`未找到与当前开发目录匹配的分支条目。${hint}`);
|
|
131
|
+
}
|
|
132
|
+
if (matched.length > 1) {
|
|
133
|
+
throw new Error(`存在 ${matched.length} 条工作目录与当前目录一致的记录,无法唯一确定分支名`);
|
|
134
|
+
}
|
|
135
|
+
const name = matched[0].branchName?.trim();
|
|
136
|
+
if (!name) {
|
|
137
|
+
throw new Error("已匹配到当前开发目录对应的开发者记录,但分支名尚未设置(可先通过相应流程写入分支名)");
|
|
138
|
+
}
|
|
139
|
+
console.log(name);
|
|
116
140
|
});
|
|
117
141
|
}
|
|
118
142
|
//# sourceMappingURL=get.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6G1D"}
|
package/dist/cli/commands/set.js
CHANGED
|
@@ -95,13 +95,5 @@ function registerSetCommands(program) {
|
|
|
95
95
|
});
|
|
96
96
|
console.log(`已设置分支「${res.branchName ?? name}」,开发者状态=${res.status}`);
|
|
97
97
|
});
|
|
98
|
-
setCmd
|
|
99
|
-
.command("pendingTest")
|
|
100
|
-
.description("将服务端需求状态设为待测试(PENDING_TEST)")
|
|
101
|
-
.argument("<id>", "需求 ID", parseRequirementId)
|
|
102
|
-
.action(async (id) => {
|
|
103
|
-
await client_1.default.cli.resourceRequirementPendingTestSet({ id });
|
|
104
|
-
console.log(`需求状态已设为待测试`);
|
|
105
|
-
});
|
|
106
98
|
}
|
|
107
99
|
//# sourceMappingURL=set.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":";;;;;AAcA,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":";;;;;AAcA,kDA6GC;AA3HD,qCAAmD;AACnD,0DAA6B;AAE7B,8DAAmC;AACnC,oEAAqE;AAErE,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAEhE,MAAM;SACH,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CACV,oDAAoD,CACrD;SACA,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CACxB,OAAO,CAAC,GAAG,EAAE,EACb,gBAAgB,EAChB,MAAM,CAAC,EAAE,CAAC,EACV,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,gBAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,wDAAwD,CACzD;SACA,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAC3B,OAAO,CAAC,GAAG,EAAE,EACb,gBAAgB,EAChB,MAAM,CAAC,EAAE,CAAC,EACV,YAAY,CACb,CAAC;QACF,IAAI,CAAC,IAAA,oBAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,gBAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,oDAAoD,CACrD;SACA,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CACxB,OAAO,CAAC,GAAG,EAAE,EACb,gBAAgB,EAChB,MAAM,CAAC,EAAE,CAAC,EACV,aAAa,CACd,CAAC;QACF,IAAI,CAAC,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,IAAA,yCAAqB,EAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,gBAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC;YAC3D,aAAa,EAAE,EAAE;YACjB,KAAK;SACN,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,wDAAwD,CACzD;SACA,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;SAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAY,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,MAAM,gBAAG,CAAC,GAAG,CAAC,yCAAyC,CAAC;YAClE,EAAE;YACF,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CACT,SAAS,GAAG,CAAC,UAAU,IAAI,IAAI,WAAW,GAAG,CAAC,MAAM,EAAE,CACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AAEP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerStatusCommands = registerStatusCommands;
|
|
7
|
+
const client_1 = __importDefault(require("../../api/client"));
|
|
8
|
+
function parseStatusEntity(value) {
|
|
9
|
+
if (value === "defect" || value === "requirement") {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
throw new Error(`无效的实体类型: ${value},仅支持 defect / requirement`);
|
|
13
|
+
}
|
|
14
|
+
function parsePositiveInt(value, name) {
|
|
15
|
+
const n = Number.parseInt(value, 10);
|
|
16
|
+
if (!Number.isFinite(n) || n < 1) {
|
|
17
|
+
throw new Error(`无效的${name}: ${value}`);
|
|
18
|
+
}
|
|
19
|
+
return n;
|
|
20
|
+
}
|
|
21
|
+
function registerStatusCommands(program) {
|
|
22
|
+
program
|
|
23
|
+
.command("status")
|
|
24
|
+
.description("流转实体状态:defect 按当前状态自动推进(待处理→处理中→待验证);requirement:待开发→待测试")
|
|
25
|
+
.argument("<entity>", "实体类型:defect | requirement", parseStatusEntity)
|
|
26
|
+
.argument("<id>", "缺陷 ID(defect)或需求 ID(requirement)")
|
|
27
|
+
.action(async (entity, id) => {
|
|
28
|
+
if (entity === "defect") {
|
|
29
|
+
const res = await client_1.default.cli.statusSet({
|
|
30
|
+
entity,
|
|
31
|
+
defectId: id,
|
|
32
|
+
});
|
|
33
|
+
console.log(`缺陷状态已流转:${res.id} -> ${res.status}`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const requirementId = parsePositiveInt(id, "需求 ID");
|
|
37
|
+
const res = await client_1.default.cli.statusSet({
|
|
38
|
+
entity,
|
|
39
|
+
requirementId,
|
|
40
|
+
});
|
|
41
|
+
console.log(`需求状态已流转:${res.id} -> ${res.status}`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":";;;;;AAoBA,wDAwBC;AA3CD,8DAAmC;AAInC,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,2BAA2B,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,0DAA0D,CAC3D;SACA,QAAQ,CAAC,UAAU,EAAE,2BAA2B,EAAE,iBAAiB,CAAC;SACpE,QAAQ,CAAC,MAAM,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,MAAoB,EAAE,EAAU,EAAE,EAAE;QACjD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,gBAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBAClC,MAAM;gBACN,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,gBAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAClC,MAAM;YACN,aAAa;SACd,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ const get_1 = require("./cli/commands/get");
|
|
|
8
8
|
const init_1 = require("./cli/commands/init");
|
|
9
9
|
const publish_1 = require("./cli/commands/publish");
|
|
10
10
|
const set_1 = require("./cli/commands/set");
|
|
11
|
+
const status_1 = require("./cli/commands/status");
|
|
11
12
|
const update_1 = require("./cli/commands/update");
|
|
12
13
|
const ws_1 = require("./cli/commands/ws");
|
|
13
14
|
const constants_1 = require("./core/constants");
|
|
@@ -19,6 +20,7 @@ const program = new commander_1.Command()
|
|
|
19
20
|
(0, auth_1.registerAuthCommands)(program);
|
|
20
21
|
(0, get_1.registerGetCommands)(program);
|
|
21
22
|
(0, set_1.registerSetCommands)(program);
|
|
23
|
+
(0, status_1.registerStatusCommands)(program);
|
|
22
24
|
(0, ws_1.registerWsCommands)(program);
|
|
23
25
|
(0, update_1.registerUpdateCommands)(program);
|
|
24
26
|
(0, init_1.registerInitCommands)(program);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,8CAA2D;AAC3D,kDAA+D;AAC/D,4CAAyD;AACzD,8CAA2D;AAC3D,oDAAiE;AACjE,4CAAyD;AACzD,kDAA+D;AAC/D,0CAAuD;AACvD,gDAAwE;AAExE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;KAC1B,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,+BAAmB,CAAC;KAChC,OAAO,CAAC,2BAAe,CAAC,CAAC;AAE5B,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,yBAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,yBAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,uBAAkB,EAAC,OAAO,CAAC,CAAC;AAC5B,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,8CAA2D;AAC3D,kDAA+D;AAC/D,4CAAyD;AACzD,8CAA2D;AAC3D,oDAAiE;AACjE,4CAAyD;AACzD,kDAA+D;AAC/D,kDAA+D;AAC/D,0CAAuD;AACvD,gDAAwE;AAExE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;KAC1B,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,+BAAmB,CAAC;KAChC,OAAO,CAAC,2BAAe,CAAC,CAAC;AAE5B,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,yBAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,yBAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,uBAAkB,EAAC,OAAO,CAAC,CAAC;AAC5B,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-project-manage-cli",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "AI 项目管理 CLI 工具,结合飞书项目实现AI项目开发工作流",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
"apm:comment:help": "node ./dist/cli.js comment --help",
|
|
32
32
|
"apm:comment:update": "node ./dist/cli.js comment update",
|
|
33
33
|
"apm:comment:process": "node ./dist/cli.js comment process",
|
|
34
|
-
"apm:set:pending-test": "node ./dist/cli.js set pendingTest",
|
|
35
34
|
"apm:requirement:help": "node ./dist/cli.js requirement --help",
|
|
36
35
|
"apm:requirement:test-case:import": "node ./dist/cli.js requirement test-case import",
|
|
37
36
|
"apm:requirement:branch:set-status": "node ./dist/cli.js requirement branch set-status",
|
|
@@ -5,7 +5,7 @@ description: 在 .apm/workitems/<requirementId>/ 按 tasks.md 逐项实现、勾
|
|
|
5
5
|
|
|
6
6
|
# APM 工作项:按任务实现
|
|
7
7
|
|
|
8
|
-
根据工作项目录下的 **`tasks.md`** 驱动实现:**读规划 → 做代码 → 对账元数据 → 勾选 → 单独 commit
|
|
8
|
+
根据工作项目录下的 **`tasks.md`** 驱动实现:**读规划 → 做代码 → 对账元数据 → 勾选 → 单独 commit**,直至全部完成或遇硬阻塞;上下文以 **`.apm/workitems/<requirementId>/`** 内文件为准。
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apm-fixbug
|
|
3
|
-
description:
|
|
3
|
+
description: 基于 requirementId 与 `.apm/workitems/<id>/bugs/` 下的 status.yaml、缺陷 Markdown 执行标准化缺陷修复:开发前准备 → 按「待处理」循环修复并落盘复盘 → 推送 → 调用 code-deploy 部署测试环境;当用户明确声明使用该技能时触发。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 缺陷修复流程
|
|
@@ -8,152 +8,90 @@ description: 基于分支名和缺陷描述执行标准化的缺陷修复流程
|
|
|
8
8
|
## 目的
|
|
9
9
|
|
|
10
10
|
使用本技能可基于以下输入执行一致的端到端缺陷修复流程:
|
|
11
|
-
- `
|
|
12
|
-
- `
|
|
13
|
-
- `defectId`:缺陷 ID(可选;用于调用 CLI 更新缺陷状态)
|
|
11
|
+
- `requirementId`:需求 id(与 `.apm/workitems/<requirementId>/` 目录一致)
|
|
12
|
+
- 缺陷清单以 `apm get defect <requirementId>` 同步后的本地文件为准(见步骤 1)
|
|
14
13
|
|
|
15
|
-
**主 Agent 收尾(必选)**:在协调子 Agent
|
|
14
|
+
**主 Agent 收尾(必选)**:在协调子 Agent 完成各步骤后,**必须在面向用户的最终回复中附上一张 Markdown 表格**,逐行对应每个步骤,汇总**执行状态**(如:已完成 / 已跳过 / 失败)与**简要说明**(关键结果、commit、失败原因等),便于审阅者核对流程是否闭环。
|
|
16
15
|
|
|
17
16
|
## 输入
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
- `branchName`
|
|
21
|
-
- `bugDescription`
|
|
22
|
-
- `defectId`(可选)
|
|
18
|
+
**输入(必填)** `requirementId`:需求 id
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
## 本地缺陷文件约定(必读)
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
严格按以下顺序执行,且每一步都必须由子 Agent 独立执行并回传结果。
|
|
29
|
-
|
|
30
|
-
### 步骤 1 — 子 Agent:分支切换与未提交处理
|
|
31
|
-
|
|
32
|
-
1. 执行 `git fetch origin`,确保可获取最新远程分支信息。
|
|
33
|
-
2. 记录 `TARGET=<branchName>` 与当前分支 `CURRENT`,并检查工作区是否有未提交变更(staged/unstaged/untracked)。
|
|
34
|
-
3. 若 `CURRENT != TARGET` 且工作区有变更:先执行 `git stash push -u` 保存现场,再切换到 `TARGET`。
|
|
35
|
-
4. 若 `CURRENT == TARGET` 且工作区有变更:不要 stash,直接将当前改动作为“修复前检查点”提交,提交文案需明确说明这是 bugfix 前的检查点(例如:`chore: checkpoint before bugfix on <branchName>`)。
|
|
36
|
-
5. 切换到 `TARGET`:本地分支不存在时,从远程跟踪分支创建并切换。
|
|
37
|
-
6. 若在第 3 步执行过 stash,切换成功后不要自动 `stash pop`,避免与后续修复流程冲突。
|
|
38
|
-
7. 最终必须确认当前分支与 `branchName` 完全一致。
|
|
39
|
-
|
|
40
|
-
**完成判定**:当前分支等于 `branchName`,且步骤 3/4 的语义已正确执行(按分支状态选择了 stash 或 checkpoint commit)。
|
|
41
|
-
|
|
42
|
-
### 步骤 2 — 子 Agent:按缺陷描述修改代码
|
|
43
|
-
|
|
44
|
-
1. 基于 `bugDescription` 复现并分析缺陷。
|
|
45
|
-
2. 实施最小化、针对性的修复。
|
|
46
|
-
3. 运行相关验证(tests/lint/build 或最接近的校验命令)。
|
|
47
|
-
4. 若验证失败,持续迭代直至通过;如遇阻塞,输出具体报错信息并说明阻塞点。
|
|
48
|
-
|
|
49
|
-
**完成判定**:修复代码已落地,且验证通过;或明确输出可复现的阻塞错误与原因。
|
|
50
|
-
|
|
51
|
-
### 步骤 3 — 子 Agent:更新分支对应的变更说明文件
|
|
52
|
-
|
|
53
|
-
代码改动稳定后,必须调用技能 `mr-review-brief` 生成评审说明内容;随后定位当前分支产出的 workitem 名称 `<name>`,并处理 `.apm/workitems/<name>/change.md`:
|
|
54
|
-
- 若文件不存在:创建该文件并写入本次变更说明。
|
|
55
|
-
- 若文件已存在:在原文件上更新内容,反映本次最新变更。
|
|
56
|
-
|
|
57
|
-
变更说明应包含:
|
|
58
|
-
- 功能变更摘要
|
|
59
|
-
- 自检项
|
|
60
|
-
- 发布备注/注意事项
|
|
22
|
+
同步命令 `apm get defect <requirementId>` 会在如下路径落盘(**不要**臆造路径):
|
|
61
23
|
|
|
62
|
-
|
|
24
|
+
- 状态汇总:`.apm/workitems/<requirementId>/bugs/status.yaml`
|
|
25
|
+
- 结构示例:根键 `defects`,下挂 `"<缺陷数字 id>"`,每项含 `status`,取值为中文:**已创建**、**待处理**、**处理中**、**待验证**、**已解决**、**重新打开**(与 CLI 生成一致)。
|
|
26
|
+
- 缺陷正文:`.apm/workitems/<requirementId>/bugs/<id>.md`(`<id>` 与 `status.yaml` 中键一致)
|
|
63
27
|
|
|
64
|
-
|
|
28
|
+
本流程**仅将「待处理」视为待修复队列**;循环直至不存在状态为「待处理」的缺陷后,进入部署步骤。
|
|
65
29
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
1. 先执行 `git status`;若存在未跟踪或已修改文件,执行 `git add -A`。
|
|
69
|
-
2. 若存在暂存变更,则执行 `git commit`;commit 文案必须明确描述“本次改了什么”,必要时补充变更原因。
|
|
70
|
-
3. 记录本次 bugfix 提交的 `commit id`(例如 `git rev-parse --short HEAD`),供下一步留痕文件使用。
|
|
71
|
-
|
|
72
|
-
**完成判定**:本次 bugfix commit 已创建成功,且已拿到对应 `commit id`。
|
|
73
|
-
|
|
74
|
-
### 步骤 5 — 子 Agent:落盘 bugfix 留痕文档
|
|
75
|
-
|
|
76
|
-
在完成步骤 4 后,定位当前分支产出的 workitem 名称 `<name>`,在 `.apm/workitems/<name>/` 下写入本次留痕文档:
|
|
77
|
-
|
|
78
|
-
1. 文件名规则:`bugfixN.md`,其中 `N` 为递增序号(`1/2/3/...`)。
|
|
79
|
-
- 若目录中无 `bugfix*.md`,创建 `bugfix1.md`。
|
|
80
|
-
- 若已有 `bugfix1.md`、`bugfix2.md`...,本次创建下一个序号文件(如 `bugfix3.md`)。
|
|
81
|
-
2. 文档内容必须包含以下结构(按顺序):
|
|
82
|
-
- 一级标题:`# <commit id>`(标题直接使用步骤 4 产出的 commit id)
|
|
83
|
-
- `## Bug 描述`:写入 `bugDescription` 的关键信息
|
|
84
|
-
- `## 解决方案`:说明本次修复的实现方案
|
|
85
|
-
- `## 原因复盘`:说明问题根因、为何发生、后续如何避免
|
|
86
|
-
3. 该文件用于沉淀每次 bug 修复记录,禁止覆盖历史 `bugfixN.md`。
|
|
87
|
-
4. 写入内容时使用以下固定模板(将占位符替换为实际内容):
|
|
88
|
-
|
|
89
|
-
```markdown
|
|
90
|
-
# <commit id>
|
|
91
|
-
|
|
92
|
-
## Bug 描述
|
|
93
|
-
<一句话描述现象 + 影响范围>
|
|
94
|
-
|
|
95
|
-
## 解决方案
|
|
96
|
-
- <改动点 1>
|
|
97
|
-
- <改动点 2>
|
|
98
|
-
|
|
99
|
-
## 原因复盘
|
|
100
|
-
- 根因:<根因说明>
|
|
101
|
-
- 触发条件:<在什么条件下触发>
|
|
102
|
-
- 防再发措施:<测试/校验/流程上的防护>
|
|
103
|
-
```
|
|
30
|
+
## 执行步骤
|
|
104
31
|
|
|
105
|
-
|
|
32
|
+
严格按以下顺序执行,且每一步都必须由子 Agent 独立执行并回传结果。
|
|
106
33
|
|
|
107
|
-
|
|
34
|
+
### 步骤 1 — 子 Agent:开发前的准备
|
|
108
35
|
|
|
109
|
-
|
|
36
|
+
1. 执行 `apm get branchName <requirementId>` 获取目标开发分支名 `branchName`。
|
|
37
|
+
2. 开发工作区准备
|
|
38
|
+
1. 执行 `git fetch origin`,确保可获取最新远程分支信息。
|
|
39
|
+
2. 记录 `TARGET=<branchName>` 与当前分支 `CURRENT`,并检查工作区是否有未提交变更(staged/unstaged/untracked)。
|
|
40
|
+
3. 若 `CURRENT != TARGET` 且工作区有变更:先执行 `git stash push -u` 保存现场,再切换到 `TARGET`。
|
|
41
|
+
4. 若 `CURRENT == TARGET` 且工作区有变更:不要 stash,直接将当前改动作为「修复前检查点」提交,提交文案需明确说明这是 bugfix 前的检查点(例如:`chore: checkpoint before bugfix on <branchName>`)。
|
|
42
|
+
5. 切换到 `TARGET`:本地分支不存在时,从远程跟踪分支创建并切换。
|
|
43
|
+
6. 若在第 3 步执行过 stash,切换成功后不要自动 `stash pop`,避免与后续修复流程冲突。
|
|
44
|
+
7. 最终必须确认当前分支与 `branchName` 完全一致。
|
|
45
|
+
3. 执行 `apm get defect <requirementId>` 同步 BUG 状态与内容到 `.apm/workitems/<requirementId>/bugs/`(含 `status.yaml` 与各 `<id>.md`)。
|
|
110
46
|
|
|
111
|
-
|
|
112
|
-
2. 若推送失败,输出失败原因并将流程标记为失败,不得宣称完成。
|
|
47
|
+
**完成判定**:已在目标分支上,且本地 bugs 目录已与远端缺陷列表同步。
|
|
113
48
|
|
|
114
|
-
|
|
115
|
-
- 推送成功
|
|
116
|
-
- 工作区干净(或仅保留需用户自行处理的 stash 提示)
|
|
49
|
+
### 步骤 2 — 子 Agent:按 bugs 清单循环修复
|
|
117
50
|
|
|
118
|
-
|
|
51
|
+
#### 2.1 每轮开始:确定队列并登记 Todo
|
|
119
52
|
|
|
120
|
-
|
|
53
|
+
1. 使用 **Read** 读取 `.apm/workitems/<requirementId>/bugs/status.yaml`,解析 `defects` 下各缺陷的 `status`,**仅**将状态为 **「待处理」** 的缺陷 id 列入本轮待办。
|
|
54
|
+
2. 调用 **TodoWrite**,为当前所有仍处于「待处理」的缺陷各建一条 todo(标题或内容中写明缺陷 id),用于跟踪处理进度;后续每完成一个缺陷的闭环(至「待验证」并已推送)后,须将该缺陷对应 todo 标为已完成,并在下一轮开始时可按最新 `status.yaml` 刷新待办列表。
|
|
121
55
|
|
|
122
|
-
|
|
123
|
-
2. 在仓库根目录调用 CLI,将当前缺陷状态更新为 `RESOLVED`:
|
|
56
|
+
若**没有任何**「待处理」缺陷:跳过 2.2,直接进入**步骤 3**。
|
|
124
57
|
|
|
125
|
-
|
|
126
|
-
apm requirement defect set-status --defect-id <defectId> --status RESOLVED
|
|
127
|
-
```
|
|
58
|
+
#### 2.2 单个缺陷处理(对其中一个「待处理」缺陷执行;完成后回到 2.1)
|
|
128
59
|
|
|
129
|
-
|
|
60
|
+
1. **读取缺陷文档**:根据 `status.yaml` 中的缺陷 id,用 Read 读取同目录下的 `<id>.md`(例如 `123.md`)。
|
|
61
|
+
2. **标为处理中**:将该缺陷在 `status.yaml` 中的 `status` 改为 **「处理中」**;并在同一 `<id>.md` 中同步该状态(例如在文首增加一行 `**状态**:处理中`,或新增 `## 状态` 小节——全仓库保持一致即可),保证 YAML 与 Markdown 一致。**随后**执行 `apm status defect <id>`(`<id>` 与 `status.yaml` 键、文件名一致),由服务端按当前状态自动流转(此处应为「待处理」→「处理中」);若命令失败,不得进入本缺陷的代码修复,须先排查登录/权限或与服务端状态是否一致。
|
|
62
|
+
3. **修复代码**:依据 `<id>.md` 中的缺陷描述复现、定位并实施**最小化**修复;运行相关验证(tests / lint / build 或项目最接近的校验命令),失败则迭代直至通过或明确输出阻塞信息。
|
|
63
|
+
4. **复盘落盘**:在**同一** `<id>.md` 中**新增**二级标题 `## 复盘`,将根因分析、结论与必要说明写在**该标题下**(勿覆盖「缺陷内容」等与同步相关的固定段落)。
|
|
64
|
+
5. **标为待验证**:将该缺陷在 `status.yaml` 中的 `status` 改为 **「待验证」**;并同步更新 `<id>.md` 中的状态展示,与 YAML 一致。**随后**执行 `apm status defect <id>`,由服务端按当前状态自动流转(此处应为「处理中」→「待验证」);若命令失败,不得进入提交推送步骤,须先修复阻塞(含服务端状态与本流程不一致的情况)。
|
|
65
|
+
6. **提交并推送**:执行 `git add -A`(或按项目规范纳入本次改动),`git commit`,提交说明须能识别对应缺陷(含 id 或标题关键词);将当前分支推送到远程(`git push` 或 `git push -u origin "<branchName>"`)。推送失败则本流程标记失败并停止,不得宣称该缺陷已闭环。
|
|
66
|
+
7. **循环**:回到 **2.1**(重新 Read `status.yaml`、更新 TodoWrite),继续处理剩余的「待处理」缺陷,直至不存在「待处理」。
|
|
130
67
|
|
|
131
|
-
|
|
68
|
+
**完成判定**:`status.yaml` 中已无非预期的「待处理」项(全部已按流程进入「待验证」或同步结果本身无待处理项);且每次提交均已推送成功。
|
|
132
69
|
|
|
133
|
-
### 步骤
|
|
70
|
+
### 步骤 3 — 子 Agent:部署测试环境
|
|
134
71
|
|
|
135
|
-
1.
|
|
136
|
-
2. 调用技能
|
|
137
|
-
3.
|
|
72
|
+
1. 本步骤须在**步骤 2 的循环结束后**执行(所有待处理缺陷已处理完毕,或同步后本就没有待处理项)。
|
|
73
|
+
2. 调用技能 **`code-deploy`**,按目标项目根目录 `.apm/deploy/README.md` 执行部署;**未说明目标环境时,以 `code-deploy` 技能为准,默认部署到测试环境**。
|
|
74
|
+
3. 若部署失败,输出失败原因并将流程标记为失败,不得宣称全流程完成。
|
|
138
75
|
|
|
139
|
-
**完成判定**:`
|
|
76
|
+
**完成判定**:`code-deploy` 按该技能约定执行完毕且未判定为失败。
|
|
140
77
|
|
|
141
78
|
### 汇总表格式(主 Agent 最终输出)
|
|
142
79
|
|
|
143
|
-
主 Agent
|
|
80
|
+
主 Agent 在流程结束时的表格应至少包含以下列,行数覆盖**步骤 1~3**:
|
|
144
81
|
|
|
145
82
|
| 步骤 | 内容概要 | 状态 | 说明 |
|
|
146
83
|
|------|----------|------|------|
|
|
147
|
-
| 1 |
|
|
148
|
-
| 2 |
|
|
149
|
-
|
|
|
84
|
+
| 1 | 分支与工作区准备、同步 defect | 已完成 | 例:已在 `feat/xxx`,已 `apm get defect` |
|
|
85
|
+
| 2 | 读取 status.yaml、TodoWrite、循环修复与推送 | 已完成 | 例:3 个缺陷已待验证,commit `abc123`,已 push |
|
|
86
|
+
| 3 | code-deploy 测试环境 | 已完成 | 例:已按 `.apm/deploy/README.md` 执行 |
|
|
150
87
|
|
|
151
88
|
状态列建议统一用语:`已完成`、`已跳过`(并写明跳过原因)、`失败`(并附报错或阻塞点)。
|
|
152
89
|
|
|
153
90
|
## 约束
|
|
154
91
|
|
|
155
92
|
- 主 Agent 交付本流程结果时,应以「步骤汇总表」为主、文字为辅;禁止仅用零散叙述代替逐步状态说明。
|
|
156
|
-
- 存在未提交变更时,禁止跳过步骤 1
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
93
|
+
- 存在未提交变更时,禁止跳过步骤 1 中的工作区与分支整理(除非该步已明确处理)。
|
|
94
|
+
- 当前分支与 `branchName` 不一致时,禁止进入步骤 2 的修复循环。
|
|
95
|
+
- **仅**根据 `status.yaml` 中 **「待处理」** 驱动修复队列,不要跳过 Read / TodoWrite 的登记与更新。
|
|
96
|
+
- 修复须保持最小改动,并与 `<id>.md` 中的缺陷描述一致。
|
|
97
|
+
- 步骤 3 完成前,不得宣称「缺陷修复与部署全流程」已完成。
|