@zhiyueyun/cli 0.2.16 → 0.2.17

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @zhiyueyun/cli
2
2
 
3
- 职阅开放平台官方 CLI。命令 Catalog、业务域映射和领域 Skill 随二进制一起发布,
3
+ 职阅开放平台官方 CLI。命令 Catalog、业务域映射和应用服务分组随二进制一起发布,
4
4
  本机只使用这份发布快照,运行时不会再拉内部仓库。
5
5
 
6
6
  ## 安装
@@ -18,16 +18,80 @@ printf '%s\n' 'zy_...' | zhiyue-cli login --api-key-stdin --check
18
18
 
19
19
  从开放平台下载并安装 `zhiyue-unified` Skill(ZIP 根目录即为 Skill 根)。setup 会安装或检查
20
20
  `zhiyue-cli`,再调用 `zhiyue-cli skills sync --destination <zhiyue-unified>/references`
21
- 把 CLI 内嵌的领域 Skill references 投影到统一 Skill。多个 Agent Host 可以共用
22
- 同一个 CLI。
21
+ 把 CLI 内嵌的领域 Skill references 投影到统一 Skill,并写入 `.zhiyue-skills-state.json`。
22
+ 多个 Agent Host 可以共用同一个 CLI。
23
23
 
24
24
  ```bash
25
25
  zhiyue-cli skills list
26
26
  zhiyue-cli skills read zhiyue-task
27
27
  zhiyue-cli skills sync --destination ~/.workbuddy/skills/zhiyue-unified/references
28
+ zhiyue-cli skills status --destination ~/.workbuddy/skills/zhiyue-unified/references
28
29
  ```
29
30
 
30
- 升级 CLI 后,在已安装的 `zhiyue-unified` 目录中再次运行 `scripts/setup.py`。
31
+ 升级 CLI 后,在已安装的 `zhiyue-unified` 目录中再次运行 `scripts/zhiyue_setup.py`
32
+ (或手动 `skills sync`)。若 `skills status` 返回 `refs_stale`,说明 references 仍来自旧 CLI。
33
+
34
+ ## 契约驱动的集中发布
35
+
36
+ - 应用开发者只维护业务代码与后端根目录的 `openapi.json`、`openapi-guide.md`;不手工维护生成的 CLI 命令和 references。
37
+ - 平台维护已发布契约、Scope 和业务域;CLI 对未映射业务域的已发布服务按应用分组。CLI 团队维护共享执行引擎、生成器及必要的组合命令。
38
+ - `make release-candidate VERSION=0.3.0` 只收集公开契约、构建、测试和生成 npm 候选包,不发布。冻结输入、来源清单与 tarball 位于 `.release/`。
39
+ - 来源清单记录全部已发布服务的版本/校验和、业务域分组、生成内容及引擎指纹。`python3 scripts/fetch_catalog.py --input-snapshot .release/catalog-inputs.json` 可以离线重建;输入漂移或手改生成内容会使发布校验失败。
40
+ - 在开放平台套件页下载同版本候选 ZIP 进行验证;之后由发布负责人运行 `bash scripts/publish-all.sh 0.3.0 --publish-prepared` 发布已验证的 tarball(校验完整性,不重新收集输入),最后点击“核验 CLI 后发布”。平台核验 npm 上的 CLI 来源,失败不替换已有套件。
41
+ - 周更窗口可运行 `bash scripts/publish-all.sh <新CLI版本> --skip-unchanged`;只有契约或引擎改变才发布。该命令会写 npm,必须由发布负责人明确执行;紧急修复可独立发布。
42
+ - 使用下方自动同步服务时,CLI 成功发布后会调用开放平台 M2M 接口发布对应套件;相同 CLI 版本重试时不重复创建版本。若套件发布失败,下一次定时同步会根据 npm 已发布来源补做发布。
43
+ - 应用、CLI、套件版本分别管理;文档或指南变更也必须提升应用版本。同一套件版本不能替换不同内容。CLI 回退不等于后端接口回退。
44
+ - 普通命令仍输出 JSON 成功信封;SSE 操作即时输出逐行 JSON `{ "event": "message", "data": ... }`,错误写 stderr 并以非零码退出。上传仍使用声明的 binary 字段发送 multipart。
45
+
46
+ ## 自动同步服务
47
+
48
+ 服务通过 `npm run sync-service` 启动,默认监听 `127.0.0.1:3000`。开放平台调用使用 `POST /api/sync`,再用 `GET /api/sync/jobs/<jobId>` 查询结果;两条接口分别要求 M2M Scope `cli-sync:run` 和 `cli-sync:read`。原有的 `POST /sync`、`GET /jobs/<jobId>` 使用 `SYNC_TRIGGER_TOKEN`,保留给不经过开放平台的直接定时调用。`GET /healthz` 提供健康状态。同步任务互斥运行,重复触发时返回 `409`。
49
+
50
+ 服务只从进程环境读取凭据,不读取或写入仓库内的 `.env` 文件。启动前配置:
51
+
52
+ | Environment variable | Purpose |
53
+ | --- | --- |
54
+ | `SYNC_TRIGGER_TOKEN` | 直接调用 `/sync` 时使用的 Bearer Token;使用开放平台 `/api/` 接口时可不配置 |
55
+ | `YEEAUTH_ENDPOINT` | 校验开放平台 M2M Token 的 YeeAuth HTTPS 根地址 |
56
+ | `GITLAB_HOST` | GitLab REST API 的 HTTPS 主机 |
57
+ | `GITLAB_TOKEN` | 通过 GitLab REST API 读取归档并提交变更的 Token |
58
+ | `SYNC_GIT_REMOTE` | 目标 GitLab 仓库 HTTPS 地址;容器部署时必填,不得包含凭据 |
59
+ | `SYNC_GIT_BRANCH` | 同步提交推送到的现有分支 |
60
+ | `SYNC_COMMIT_NAME` / `SYNC_COMMIT_EMAIL` | 自动提交的 Git 身份 |
61
+ | `NPM_TOKEN` | 发布 `@zhiyueyun/cli` 的 npm Token |
62
+ | `ENV_SECRET_KEY` | 解密共享环境变量中 `ENC(...)` 值的 AES-256-GCM 密钥 |
63
+ | `OPEN_PLATFORM_BASE_URL` | 开放平台 HTTPS 根地址,例如 `https://open.example.com` |
64
+ | `OPEN_PLATFORM_ACCESS_KEY` / `OPEN_PLATFORM_SECRET_KEY` | 具备套件发布权限的 M2M 凭据 |
65
+ | `OPEN_PLATFORM_ORG_ID` | M2M Token 使用的组织 ID |
66
+ | `SYNC_HOST` / `SYNC_PORT` | 监听地址和端口;默认 `127.0.0.1:3000` |
67
+ | `NPM_REGISTRY` | npm registry;默认 `https://registry.npmjs.org/` |
68
+
69
+ `GITLAB_TOKEN` 通过 `PRIVATE-TOKEN` 请求头调用 GitLab REST API,需对目标仓库有 API 读取和提交权限(通常需 `api` scope);它不用于 Git HTTPS Basic 认证。`NPM_TOKEN` 需要具备 `@zhiyueyun/cli` 发布权限。把这些值注入服务进程环境,不要提交到 Git 或放入 HTTP 请求。服务从 `SYNC_GIT_REMOTE` 解析项目路径,或在本地运行时读取仓库 origin;GitLab group ID 不参与该流程。
70
+
71
+ 软件工厂当前会把部署配置里的普通 `environmentVariables` 写成 `deploy/values.yaml` 明文 `value`。不要在那里填写任何 Token 或 Secret。该部署配置目前只提供固定的 `zhiyue-shared-env` Secret 引用;若该共享 Secret 不适合承载这组发布凭据,就需要在集群 Secret 管理路径中为服务注入专属 Secret。
72
+
73
+ M2M 应用还需获授 `open-platform:publishUnifiedSkill`。服务先读取当前套件;若 CLI 版本不同,再申请短期 M2M Token 并调用套件发布接口。套件版本从 `0.1.0` 开始,后续每次成功发布递增 patch。
74
+
75
+ 服务启动时会使用 `ENV_SECRET_KEY` 解密共享环境变量中的 `ENC(...)` 值,格式与软件工厂一致;未包装的原始值会直接使用。不要在部署配置的普通 environmentVariables 中填写 Token,避免覆盖共享 Secret。
76
+
77
+ 仓库根目录的 `openapi.json` 和 `openapi-guide.md` 是供开放平台上传的服务发布包。发布服务编码使用 `coralreef-cli`,文档版本为 `1.0.0`。上传后调用方通过开放平台网关访问 `/api/sync` 和 `/api/sync/jobs/{jobId}`;上游服务使用 `YEEAUTH_ENDPOINT` 校验网关换发的 RS256 Token。
78
+
79
+ 仓库包含用于软件工厂/Kubernetes 部署的 `Dockerfile`。镜像安装 Node、Go、Make、Python 和 Bash;容器通过 `SYNC_GIT_REMOTE` 指定目标仓库,不依赖把 `.git` 目录或 Git HTTPS 凭据打进镜像。部署时将监听端口设为 3000,并让服务只通过受控网络或 TLS 入口供定时任务访问。容器默认监听 `0.0.0.0:3000`;直接在本机运行脚本时默认监听 `127.0.0.1:3000`。
80
+
81
+ 触发请求只接受固定动作,不接受命令、版本或分支参数。服务通过 GitLab REST API 下载分支归档,在临时目录同步平台 Catalog;与 npm 已发布最高稳定版本的契约及引擎来源一致时跳过 CLI 发布并检查套件,否则选择未占用版本、构建并校验候选包,再通过 Commits API 提交生成内容并发布已校验的 tarball。仓库没有新变更、旧 npm 包缺少来源信息时,仍会构建发布,避免上次发布失败后被误判为无变化。GitLab 和 npm Token 通过请求头及临时 npm 配置使用,任务结束后清理。若定时器不在本机运行,请把监听地址限制在可信网络,并通过防火墙或反向代理保护端口。
82
+
83
+ CLI 自动版本以 npm 已发布的最高稳定版本为基准,优先递增 patch:`0.2.16 → 0.2.17 → … → 0.2.100 → 0.3.0`。patch 已达到或超过 100 时,下一版本递增 minor 并将 patch 归零;minor 和 major 不自动设置上限。不受仓库中未发布版本或 npm `latest` 标签回退影响;例如仓库为未发布的 `0.3.0`、npm 最高稳定版本为 `0.2.16` 时,重建 `0.2.17`。发布失败重试不会消耗新版本;npm 尚无稳定版本时使用仓库初始版本。此规则仅用于 CLI,平台套件保留独立版本规则。
84
+
85
+ 直接调用本机服务时的定时器请求示例:
86
+
87
+ ```bash
88
+ curl -X POST http://127.0.0.1:3000/sync \
89
+ -H 'Authorization: Bearer <SYNC_TRIGGER_TOKEN>'
90
+ ```
91
+
92
+ ## 生成资料的来源
93
+
94
+ 接口参数、响应、示例及错误来自 Catalog;多操作流程和字段传递来自应用指南。`api://operationId` 自动关联实际 CLI 命令,未对个人开放的操作明确标注没有 CLI 入口。领域索引同时链接 Tag 接口参考和 `references/guides/<serviceCode>.md` 业务流程;`skills sync` 会保留该子目录。
31
95
 
32
96
  ## 命令
33
97
 
@@ -35,14 +99,25 @@ zhiyue-cli skills sync --destination ~/.workbuddy/skills/zhiyue-unified/referenc
35
99
  | --- | --- |
36
100
  | `doctor` | 检查 CLI、凭据和内嵌 Catalog 快照 |
37
101
  | `login` / `logout` | 管理个人 API Key |
38
- | `domains` | 列出内嵌业务域 |
39
- | `domain lookup <serviceCode>` | 查询内嵌 `serviceDomainMap` |
102
+ | `domains` | 列出内嵌业务域和应用服务分组 |
103
+ | `domain lookup <serviceCode>` | 查询内嵌服务分组映射 |
40
104
  | `schema [operationId]` | 查看操作参数、Scope 和命令路径 |
105
+ | `api list [--domain] [--service] [--search] [--featured]` | 发现 Catalog 操作;`--featured` 只看应用声明的推荐入口 |
106
+ | `api call <operationId>` | 按稳定 operationId 调用任意已发布、个人可用的 Catalog 操作 |
41
107
  | `catalog list` | 查看 CLI 内嵌的 Command Catalog 与映射 |
42
- | `skills list/read` | 查看 CLI 内嵌的共享规则和领域 references |
43
- | `skills sync` | 同步 CLI 内嵌的领域 references 到一个已安装的 `zhiyue-unified` |
108
+ | `skills list/read` | 查看 CLI 内嵌的共享规则和服务分组 references |
109
+ | `skills sync` | 同步 CLI 内嵌的业务域与应用 references 到一个已安装的 `zhiyue-unified` |
110
+ | `skills status` | 检查已安装 references 是否与当前 CLI 版本对齐 |
44
111
  | `<domain> <resource> <action>` | 经开放平台网关调用业务能力 |
45
112
 
113
+ 领域命令只承载应用在 `x-open-platform.cli.featured` 中声明的推荐接口;迁移期未声明该字段的旧接口保留原有领域命令。所有其他个人可用接口仍可通过 `api call <operationId>` 调用。
114
+
115
+ 推荐入口的数量由应用开发者自行决定,没有最少或最多限制;3–8 个只是初始参考,可以更多或全部具备个人 CLI 调用资格的接口。未选择的操作显式写 `featured: false`;Guide 用 `api://operationId` 描述业务顺序。CLI 不根据接口名字猜测高频。
116
+
46
117
  写操作必须先以 `--dry-run` 预览,获得确认后再加 `--yes`。
47
118
 
48
119
  每次业务调用只使用目标 serviceCode 的小范围 Token,由网关再换成操作级 Token。CLI 将 service Token 按 serviceCode 缓存到期前的短暂时间(目录 700、文件 600),不持久化操作级 Token。
120
+
121
+ ## 源码导航
122
+
123
+ - [目录结构与功能](docs/CLI_STRUCTURE.md) — 职阅 CLI 树与命令面
package/bin/zhiyue-cli.js CHANGED
@@ -14,21 +14,22 @@ const BUNDLED_BINARIES = {
14
14
  'win32-x64': 'native/win32-x64/zhiyue-cli.exe',
15
15
  };
16
16
 
17
- const resolveBundledBinary = (platform, arch) => BUNDLED_BINARIES[`${platform}-${arch}`];
17
+ const resolveBundledBinary = (platform, arch) => BUNDLED_BINARIES[platform + '-' + arch];
18
18
 
19
19
  const main = () => {
20
- const key = `${process.platform}-${process.arch}`;
20
+ const key = process.platform + '-' + process.arch;
21
21
  const relativeBinary = resolveBundledBinary(process.platform, process.arch);
22
22
  if (!relativeBinary) {
23
23
  console.error(
24
- `zhiyue-cli: unsupported platform ${key} (supported: ${Object.keys(BUNDLED_BINARIES).join(', ')})`,
24
+ 'zhiyue-cli: unsupported platform ' + key +
25
+ ' (supported: ' + Object.keys(BUNDLED_BINARIES).join(', ') + ')',
25
26
  );
26
27
  process.exit(1);
27
28
  }
28
29
 
29
30
  const bin = join(__dirname, '..', relativeBinary);
30
31
  if (!existsSync(bin)) {
31
- console.error(`zhiyue-cli: bundled binary is missing for ${key}. Reinstall @zhiyueyun/cli.`);
32
+ console.error('zhiyue-cli: bundled binary is missing for ' + key + '. Reinstall @zhiyueyun/cli.');
32
33
  process.exit(1);
33
34
  }
34
35
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhiyueyun/cli",
3
- "version": "0.2.16",
3
+ "version": "0.2.17",
4
4
  "description": "Official Zhiyue Open Platform CLI with embedded command metadata and Agent Skills",
5
5
  "keywords": [
6
6
  "cli",
@@ -21,7 +21,12 @@
21
21
  },
22
22
  "files": [
23
23
  "bin/zhiyue-cli.js",
24
- "native",
24
+ "native/darwin-arm64/zhiyue-cli",
25
+ "native/darwin-x64/zhiyue-cli",
26
+ "native/linux-arm64/zhiyue-cli",
27
+ "native/linux-x64/zhiyue-cli",
28
+ "native/win32-arm64/zhiyue-cli.exe",
29
+ "native/win32-x64/zhiyue-cli.exe",
25
30
  "README.md"
26
31
  ],
27
32
  "scripts": {
@@ -29,6 +34,7 @@
29
34
  "build:all": "make build-all",
30
35
  "test": "make test",
31
36
  "check": "make check",
37
+ "sync-service": "node scripts/sync-service.js",
32
38
  "prepublishOnly": "python3 scripts/check_release_snapshot.py && test -f bin/zhiyue-cli.js && test -f internal/registry/catalog.json && test -f skills/zhiyue-shared/SKILL.md && make build-all"
33
39
  },
34
40
  "os": [
@@ -43,5 +49,230 @@
43
49
  "engines": {
44
50
  "node": ">=16"
45
51
  },
46
- "license": "MIT"
52
+ "license": "MIT",
53
+ "zhiyueRelease": {
54
+ "schemaVersion": "1.0",
55
+ "domainChecksum": "32f2f96f262401521aab7fb69efbc76d8308f43ecc11d0e16811383ee819c3df",
56
+ "services": [
57
+ {
58
+ "serviceCode": "announcement-management",
59
+ "version": "1.2.0",
60
+ "checksum": "0735f498f1cb237f3739c86cafc9860e1e563240f729d90e24299365be5e967b"
61
+ },
62
+ {
63
+ "serviceCode": "business-trip",
64
+ "version": "3.2.0",
65
+ "checksum": "fc0f638adb5603feb5b1cc6964c51712e7eb67cfebd994378f5282922bac2a2d"
66
+ },
67
+ {
68
+ "serviceCode": "comment-management",
69
+ "version": "2.3.0",
70
+ "checksum": "119fd0a30a685828c54e469b8432fe6552e67beaa73a93af7a99a62cbc49ccef"
71
+ },
72
+ {
73
+ "serviceCode": "company-profile-management",
74
+ "version": "2.1.0",
75
+ "checksum": "e88337207dbbb7de9b7711b88253c85af00309c6b9cc6440ef99891798863f39"
76
+ },
77
+ {
78
+ "serviceCode": "contract-management",
79
+ "version": "3.3.0",
80
+ "checksum": "ffc6c495c474ac830e8638485bfc3ae9c9c26a97f7e966bf0efcdf8cf74d56b5"
81
+ },
82
+ {
83
+ "serviceCode": "coral-platform-management",
84
+ "version": "2.3.4",
85
+ "checksum": "11ecc0571e3da5d62b0b19db658c12102b54b8fd91ed999f4d759d583a9adae3"
86
+ },
87
+ {
88
+ "serviceCode": "coralreefcli",
89
+ "version": "1.0.2",
90
+ "checksum": "bb13fc935587f013b4deba31d53bb7d15be50776d7f13754b051da5f2d5f7b2e"
91
+ },
92
+ {
93
+ "serviceCode": "easy-recorder",
94
+ "version": "2.0.0",
95
+ "checksum": "34bf38b37bfd987930cada1b4183fb89b3ee4a0aef1aca3195091544b3ccb398"
96
+ },
97
+ {
98
+ "serviceCode": "enterprise-service",
99
+ "version": "1.1.0",
100
+ "checksum": "21739e1509fd0aafc2c44b355a3c06994c871f1e79bd2d5b46511240019dd611"
101
+ },
102
+ {
103
+ "serviceCode": "file-management",
104
+ "version": "2.2.1",
105
+ "checksum": "999fed2abc360d246936d74d23d93ba67c89903efc08b7204fdb44a903d121b2"
106
+ },
107
+ {
108
+ "serviceCode": "finance-management",
109
+ "version": "1.3.0",
110
+ "checksum": "a5345263b3467d24baefc12f1a47d668ce4fe943ae1db0478ebd0d696114fdab"
111
+ },
112
+ {
113
+ "serviceCode": "form-engine",
114
+ "version": "0.2.0",
115
+ "checksum": "1cc2d7c413b73ef42e8e13f71c0a45aabb94df2045017c6c1eadbbfa686faeda"
116
+ },
117
+ {
118
+ "serviceCode": "greenplant-server",
119
+ "version": "1.3.0",
120
+ "checksum": "ac176fcd7b7ed56c396d2d8c8e124364d23eccfc946dcf9487d5013325b7c637"
121
+ },
122
+ {
123
+ "serviceCode": "hr-domain",
124
+ "version": "2.6.0",
125
+ "checksum": "4f774090793ddbeb7cb537a9460bd7094ecde4c51073476a28e7a49393b6418a"
126
+ },
127
+ {
128
+ "serviceCode": "intelligent-writing",
129
+ "version": "1.0.7",
130
+ "checksum": "7b7676b2ba11266f85d1829b6f04726ab36011dd05573dfbc458ddf3852cc88d"
131
+ },
132
+ {
133
+ "serviceCode": "investment",
134
+ "version": "1.1.0",
135
+ "checksum": "290c215ef9d8773983d7474f81be88b9826b766b9e2facbc6c60c72aff50ba89"
136
+ },
137
+ {
138
+ "serviceCode": "knowledge-management",
139
+ "version": "1.2.2",
140
+ "checksum": "da5e7f74c20653f64fd4c36af4283f0c267810b512460eddb4afa932e38803ce"
141
+ },
142
+ {
143
+ "serviceCode": "lead-management",
144
+ "version": "1.0.0",
145
+ "checksum": "a6aafe5f7b65b97f878504c0652dcc5a6b782ae2eaae71a09be8f7ab3618cf7b"
146
+ },
147
+ {
148
+ "serviceCode": "llm-management",
149
+ "version": "1.5.2",
150
+ "checksum": "1dd4b7d00064e804dccedc5360d3357f183516ba77a5dbb3d09a1f73e9603ce6"
151
+ },
152
+ {
153
+ "serviceCode": "meeting-room",
154
+ "version": "6.0.0",
155
+ "checksum": "5093e568d434ff4499729558286c8dd796382dedbb5d0d5dbe4a82749f2dc0c0"
156
+ },
157
+ {
158
+ "serviceCode": "meta-platform",
159
+ "version": "3.2.0",
160
+ "checksum": "e8d6616cef7b84338e5b10b8648b87b39d0d3f9b30e1def768731ead232c875e"
161
+ },
162
+ {
163
+ "serviceCode": "news-broadcast",
164
+ "version": "1.2.0",
165
+ "checksum": "158e39a036312d6d460a39b03d3be7176c9e52210f9e645a1d02af090aa794bc"
166
+ },
167
+ {
168
+ "serviceCode": "notification-platform",
169
+ "version": "1.0.0",
170
+ "checksum": "3654b432956e2baaac57737e12c4fe1e572a80d67a211f69b60246b6f090e5ea"
171
+ },
172
+ {
173
+ "serviceCode": "office-supplies",
174
+ "version": "2.0.0",
175
+ "checksum": "262e8509b3d98385d8333377775a1d990094857a8cdaf3bd928148ea7f073d1b"
176
+ },
177
+ {
178
+ "serviceCode": "office-supplies-management",
179
+ "version": "2.0.2",
180
+ "checksum": "b4a73e5fc9a828df11d15e4a05b2588497b4dca946d11c3dcf80bd50421d9b81"
181
+ },
182
+ {
183
+ "serviceCode": "open-platform",
184
+ "version": "7.3.1",
185
+ "checksum": "65728a5e949b3982d0ae3e19e61c08a773198f978fa5569ca82e2c93ddc5b9a4"
186
+ },
187
+ {
188
+ "serviceCode": "organization-admin",
189
+ "version": "4.13.0",
190
+ "checksum": "1c1e674173b6bff0d757bd67f799080c41d30d203741b99508bc2c4541905df8"
191
+ },
192
+ {
193
+ "serviceCode": "personal-setting",
194
+ "version": "1.1.0",
195
+ "checksum": "4978eaa56323e8f983b16b4ffd822d5ccdc5d91ba6d4446aca42fdb7da7a7158"
196
+ },
197
+ {
198
+ "serviceCode": "policy-publichub",
199
+ "version": "1.1.3",
200
+ "checksum": "33ac3fb95e6c0025ca582267af7ccac159679be42101acd134a48b916b3f3d9d"
201
+ },
202
+ {
203
+ "serviceCode": "product-management",
204
+ "version": "2.1.0",
205
+ "checksum": "4dcf5a7d65fe72d6cc80b7f78f9424a32738cbca4d86d7f7f6d4096cf45cacea"
206
+ },
207
+ {
208
+ "serviceCode": "project-management",
209
+ "version": "1.2.0",
210
+ "checksum": "1d149eaef3cd34a56f104a43b4d9778b986775b181be3bcc3ed71d54abefbc11"
211
+ },
212
+ {
213
+ "serviceCode": "reimburse-management",
214
+ "version": "1.5.0",
215
+ "checksum": "eb5b771c3f2b9d1a56fff2382c423bf9c6982a83bffdf815748105a3d2a22d12"
216
+ },
217
+ {
218
+ "serviceCode": "schedule-management",
219
+ "version": "1.2.2",
220
+ "checksum": "6a1a230a44afd622ee76fa388724f5dd42bc484e71619f7cf2069b20e64bfd60"
221
+ },
222
+ {
223
+ "serviceCode": "ssf-server",
224
+ "version": "1.1.0",
225
+ "checksum": "c93bb9581153db8f4add1d4c29cf5ed144db18b1efe2d5c8a3d74b6411ab938d"
226
+ },
227
+ {
228
+ "serviceCode": "task-management",
229
+ "version": "2.4.0",
230
+ "checksum": "60f90b4fc5452e41955ddd225a7e32fa24a59eb3857391e2c642e5bbc39be31b"
231
+ },
232
+ {
233
+ "serviceCode": "timed-task",
234
+ "version": "1.1.0",
235
+ "checksum": "3d4682e59bf0aaa534ce643a87bbacae24a4bc845386637d645ded9c38d5d1e7"
236
+ },
237
+ {
238
+ "serviceCode": "work-record",
239
+ "version": "1.1.0",
240
+ "checksum": "b2d683a646f7918ae52d54bf562fac782dbd6e988d8be12bf52ba166f46f8bbc"
241
+ },
242
+ {
243
+ "serviceCode": "workflow-management",
244
+ "version": "2.1.2",
245
+ "checksum": "71bd9b44a490e7e458aeb9338127d9781587f1e588e3bfd08accae43b0b6a153"
246
+ },
247
+ {
248
+ "serviceCode": "workorder-management",
249
+ "version": "1.2.0",
250
+ "checksum": "e72de98a52720818e4837ec506245c02e83d7e749e2e7dc934aef97619e3d0bb"
251
+ },
252
+ {
253
+ "serviceCode": "zy-crm",
254
+ "version": "3.0.0",
255
+ "checksum": "90e8b6eaa3ba5ec6fbc5ed4950c1d45af250ad3dab7e242a810b4db48ab9fc06"
256
+ },
257
+ {
258
+ "serviceCode": "zy-qms",
259
+ "version": "1.1.1",
260
+ "checksum": "0221c733966ca9fb46176d9fd6e99bafa064a110d5407d5aceb1a9ff8212bf93"
261
+ },
262
+ {
263
+ "serviceCode": "zy-wms",
264
+ "version": "2.0.2",
265
+ "checksum": "edbb04675d30bcf0fb45248491ddd333812d6380a17f0de41ffb3a570e89ab65"
266
+ },
267
+ {
268
+ "serviceCode": "制度与公共中心开放 API policy-publichub",
269
+ "version": "1.1.4",
270
+ "checksum": "35b6b1105ba446a71b2d7af7d89e641b96ab0d0aa5b7ac836d0b2ff980307bcf"
271
+ }
272
+ ],
273
+ "runtimeChecksum": "7e70283697bc0c68824ddf64e902ae4feaeef0d5ec7d3e6df4d2550a53d51931",
274
+ "inputChecksum": "d03357512bb6b999dfe5d772ac80ffd11c037f509b35bbd2820159d268b5a7d8",
275
+ "sourceChecksum": "17d57aef78b9194bd7189e2bed70b52c2ccc9493f145aac67fa4b623bf1336b9",
276
+ "contentChecksum": "6cc377c4e5f8e71132e6aa02ba0d65dce9fe200925f382e778ed3ff944c7a7b2"
277
+ }
47
278
  }