ai-project-manage-cli 8.0.10 → 8.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.
@@ -3997,7 +3997,7 @@ function expectedArtifactPath(target, packageId) {
3997
3997
  if (target === "frontend") {
3998
3998
  return `/data/artifacts/vue/${packageId}/dist.zip`;
3999
3999
  }
4000
- return `/data/artifacts/springboot/${packageId}/manifest.json`;
4000
+ return `/data/artifacts/springboot/${packageId}/jars.zip`;
4001
4001
  }
4002
4002
  async function handleWebIdePackage(cfg, msg, signal) {
4003
4003
  const workdir = requireRemoteWorkdir(msg.workdir);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-project-manage-cli",
3
- "version": "8.0.10",
3
+ "version": "8.0.12",
4
4
  "description": "命令行工具:后续用于调用平台后端 API 完成运维与自动化操作",
5
5
  "type": "module",
6
6
  "private": false,
@@ -12,8 +12,9 @@
12
12
 
13
13
  - **禁止**修改业务代码、提交 Git、创建 PR。
14
14
  - **禁止**为修依赖或修编译错误而改代码 / 装依赖 / 改 lockfile;构建失败 → 以错误结束。
15
- - **禁止**在仓库工作区内留下交付用 zip / 拷贝后的 jar;临时文件只用 `/data/` 下目录(如 `/data/artifacts/.tmp/<packageId>/`),成功后可删临时目录。
15
+ - **禁止**在仓库工作区内留下交付用 zip;临时文件只用 `/data/` 下目录(如 `/data/artifacts/.tmp/<packageId>/`),成功后可删临时目录。
16
16
  - 临时目录与最终产物均在 `/data` 下,不要用 `/tmp`。
17
+ - 后端交付 jar 的路径与文件名**只**来自 deploy 文档;禁止在本规则中写死具体项目的 jar 清单。
17
18
 
18
19
  ### target=frontend(Vue)
19
20
 
@@ -25,48 +26,36 @@
25
26
 
26
27
  `/data/artifacts/vue/<packageId>/dist.zip`
27
28
 
29
+ **压缩结构(必须)**:zip 内顶层就是名为 `dist` 的目录,解压后得到 `dist/…`,**禁止**出现 `dist/dist/…`。
30
+
31
+ - 正确:在**含有 `dist` 的父目录**执行,例如
32
+ `zip -r /data/artifacts/vue/<packageId>/dist.zip dist`
33
+ (把目录名 `dist` 打进包,不要先 `cd dist` 再压当前目录)。
34
+ - 错误:`cd dist && zip -r … .`(解压后没有顶层 `dist`);或把整个前端仓/多套一层 `dist` 再压(解压成 `dist/dist`)。
35
+
28
36
  6. 缺产物或构建失败 → 调用 **SetPackageFailed**(传入失败原因)后结束。
29
37
 
30
38
  ### target=backend(SpringBoot)
31
39
 
32
- 1. 按 deploy 文档进入后端目录,执行 `mvn clean package`(或以文档为准)。
33
- 2. 按文档收集**全量**需交付的 jar sql(增量规则若文档另有说明则从其规定;无说明则收文档列出的全部)。
34
- 3. 对每个文件算内容 hash(sha256),写入全局池(已存在同 hash 则跳过复制):
35
-
36
- - jar → `/data/artifacts/springboot/jars/<hash>.jar`
37
- - sql → `/data/artifacts/springboot/sqls/<hash>.sql`(或保留扩展名,文件名主体为 hash)
38
-
39
- 4. 写入清单(**仅**此目录放 manifest,不要堆 jar/sql 副本):
40
-
41
- `/data/artifacts/springboot/<packageId>/manifest.json`
42
-
43
- 5. manifest 示例(字段名与结构须一致;值按实际填写):
44
-
45
- ```json
46
- {
47
- "packageId": "pkg_…",
48
- "projectId": "clx…",
49
- "target": "backend",
50
- "baseBranch": "release/1.0",
51
- "createdAt": "2026-09-02T07:00:00.000Z",
52
- "commitId": "a1b2c3d4…",
53
- "jars": [
54
- {
55
- "name": "app-1.2.3.jar",
56
- "hash": "e3b0…b855",
57
- "path": "/data/artifacts/springboot/jars/e3b0…b855.jar"
58
- }
59
- ],
60
- "sqls": [
61
- {
62
- "name": "20260301_add_col.sql",
63
- "hash": "2c26…e7ae",
64
- "path": "/data/artifacts/springboot/sqls/2c26…e7ae.sql"
65
- }
66
- ]
67
- }
68
- ```
40
+ 1. 按 deploy 文档进入后端目录,执行文档写明的构建命令(通常 `mvn clean package`)。
41
+ 2. **只**收集 deploy 文档标明的交付 jar(路径/文件名/glob 以文档为准)。**禁止**全量收集 `target/lib`、**禁止**打包 SQL、**禁止**在规则或命令里写死具体 jar 名。
42
+ 3. 确认文档列出的每个 jar 均已生成;缺任一文件 → SetPackageFailed。
43
+ 4. 在 `/data` 下将上述 jar **打成一个 zip**(勿在工作区生成交付 zip),落到:
44
+
45
+ `/data/artifacts/springboot/<packageId>/jars.zip`
46
+
47
+ **压缩结构(必须)**:zip 内顶层直接是各个 `.jar` 文件(解压后同级列出 jar),**禁止**多套一层无意义目录,也禁止把整个 `lib` 目录原样打进包。
48
+
49
+ 示例(路径与文件列表须来自 deploy,勿照抄本例文件名):
50
+
51
+ ```bash
52
+ mkdir -p /data/artifacts/springboot/<packageId> /data/artifacts/.tmp/<packageId>
53
+ # 按 deploy 文档把待交付 jar 拷到临时目录后:
54
+ cd /data/artifacts/.tmp/<packageId>
55
+ zip /data/artifacts/springboot/<packageId>/jars.zip ./*.jar
56
+ ```
69
57
 
58
+ 5. 可选:同目录写 `commitId.txt`(后端仓 `git rev-parse HEAD` 一行),非必须。
70
59
  6. 构建或落盘失败 → 调用 **SetPackageFailed**(传入失败原因)后结束。
71
60
 
72
61
  ### 结束