create-zleap-app 0.10.0 → 0.10.2

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.
Files changed (30) hide show
  1. package/index.js +24 -2
  2. package/lib/scaffold.js +10 -0
  3. package/package.json +4 -4
  4. package/skills/zleap-cloud-app/SKILL.md +6 -6
  5. package/skills/zleap-cloud-app/references/app-runtime.md +82 -75
  6. package/skills/zleap-cloud-app/references/cloud-functions.md +230 -43
  7. package/skills/zleap-cloud-app/references/console-database.md +8 -0
  8. package/skills/zleap-cloud-app/references/console-members.md +44 -30
  9. package/skills/zleap-cloud-app/references/limits.md +57 -56
  10. package/skills/zleap-cloud-app/references/manifest.md +36 -35
  11. package/skills/zleap-cloud-app/references/permissions.md +40 -47
  12. package/skills/zleap-cloud-app/references/sdk-database-files.md +116 -49
  13. package/skills/zleap-cloud-app/references/status-codes.md +126 -94
  14. package/skills/zleap-cloud-app/references/triggers.md +24 -24
  15. package/skills/zleap-cloud-app-release/SKILL.md +5 -2
  16. package/skills/zleap-cloud-app-release/references/app-center-install.md +64 -52
  17. package/skills/zleap-cloud-app-release/references/app-center-publish.md +118 -49
  18. package/skills/zleap-cloud-app-release/references/console-functions.md +12 -4
  19. package/skills/zleap-cloud-app-release/references/console-legacy-release.md +5 -2
  20. package/skills/zleap-cloud-app-release/references/console-members.md +44 -30
  21. package/skills/zleap-cloud-app-release/references/console-release.md +39 -28
  22. package/skills/zleap-cloud-app-release/references/console-workspace.md +32 -16
  23. package/skills/zleap-cloud-app-release/references/dev-to-production.md +330 -113
  24. package/skills/zleap-cloud-app-release/references/permissions.md +40 -47
  25. package/skills/zleap-cloud-app-release/references/status-codes.md +126 -94
  26. package/templates/react-ts/AGENTS.md +2 -2
  27. package/templates/react-ts/README.md +1 -1
  28. package/templates/react-ts/package.json +3 -0
  29. package/templates/react-ts/scripts/zleap.mjs +25 -3
  30. package/templates/react-ts/src/cloud/client.ts +2 -2
@@ -17,6 +17,10 @@
17
17
  > 触发器没有单独的标签页。Manifest 里每个触发器只绑定一项能力,
18
18
  > 所以它显示在**对应能力详情的「触发器」子标签**里。
19
19
 
20
+ (截图:云函数页,见文档站)
21
+
22
+ 云函数页:未激活时提示「云函数还不能运行,需要把签名版本激活到开发环境」并给出「去激活」;函数列表只读展示 Manifest 声明。
23
+
20
24
  两个标签页只在**开发环境**下完整出现。切到**生产环境**时只剩只读的「后台能力」视图,顶部提示
21
25
  「生产环境只读:可以查看本人后台能力的调用记录与结果;函数调试、授权和触发器请在开发环境操作。」
22
26
  这里只显示**你本人**在生产环境的激活与调用记录(没有时显示「生产环境还没有你的调用记录。」);
@@ -41,7 +45,7 @@
41
45
  >
42
46
  > 需要把签名版本激活到开发环境。
43
47
 
44
- 右侧按钮「**去激活**」跳到版本页的「开发环境:云函数激活」(appid 应用)或[版本与激活](console-legacy-release.md)页(旧应用)。
48
+ 右侧按钮「**去激活**」跳到发布页:appid 应用是「版本管理」下方的「开发环境:云函数激活」,旧应用是[版本与激活](console-legacy-release.md)页。
45
49
 
46
50
  ### 函数表格
47
51
 
@@ -156,7 +160,8 @@ Provider 有三种类型,写在 `manifest.json` 的 `backend.providers` 里:
156
160
  >
157
161
  > 按当前实现,在这里点「允许后台运行」「撤销授权」「重新授权」,都会**解除安装上的已签名发布绑定**。
158
162
  > 以 Node 云函数(`managed_function`)为执行方的能力随后会报 `FUNCTION_RELEASE_REQUIRED`,
159
- > 需要回到[版本与激活](console-legacy-release.md#激活开发)再点一次「**激活开发**」。
163
+ > 需要回到发布页再点一次「**激活开发**」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
164
+ > 旧应用在[版本与激活](console-legacy-release.md#激活开发)页。
160
165
  > 安装已绑定发布时,确认框里会提前提示这一点;保存后面板顶部出现「**发布绑定已解除**」提示,侧栏「云函数」旁同步显示「未激活」。
161
166
  >
162
167
  > 「激活开发」**不要求**先允许后台运行,两者可以任意顺序完成;但只有两者都做了,后台能力才会真正执行。
@@ -498,12 +503,15 @@ Cron 用**五个字段**描述执行时间,依次为**分钟、小时、日期
498
503
 
499
504
  ### 函数状态一直是「已声明」,不是「可调用」
500
505
 
501
- 安装还没有绑定已签名发布。到[版本与激活](console-legacy-release.md)完成「验证并签发」和「激活开发」(appid 应用在「版本管理」下方的「开发环境:云函数激活」里操作;线上用户由「发布为线上版本」自动完成)。
506
+ 安装还没有绑定已签名发布。到发布页完成「验证并签发」和「激活开发」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
507
+ 旧应用在[版本与激活](console-legacy-release.md)。appid 应用也可以在项目里运行
508
+ `npx zleap-app prepare <app_id> --version-id <id>`,效果等同(只准备开发环境)。appid 应用的线上用户由「发布为线上版本」自动准备,不需要手动激活。
502
509
 
503
510
  ### 试运行或 `callFunction` 报 `FUNCTION_RELEASE_REQUIRED`
504
511
 
505
512
  Node 云函数只运行已签名并激活的版本。常见原因:还没激活;或激活后又在这里改过后台授权(会解除绑定)。
506
- 回到[版本与激活](console-legacy-release.md#激活开发)再点「激活开发」,然后重新加载应用。
513
+ 回到发布页点「**激活开发**」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
514
+ 旧应用在[版本与激活](console-legacy-release.md#激活开发)页;然后重新加载应用。
507
515
 
508
516
  ### 「后台能力」里看不到我的能力
509
517
 
@@ -4,8 +4,10 @@
4
4
 
5
5
  > **只适用于旧应用**(注意)
6
6
  >
7
- > 本页只适用于用旧 `app_key` 命名空间上传的应用,以及带云函数应用在**开发环境**里的云函数激活。
7
+ > 本页只适用于用旧 `app_key` 命名空间上传的应用(包括它们上传应用包时自动登记的发布候选)。
8
8
  > 在控制台「创建应用」得到 `appid`(`zl…`)的应用,上线统一用「[版本管理](console-release.md#版本管理)」,不需要签名、激活、门禁这些步骤。
9
+ > appid 应用在开发环境里要跑云函数时,用的是「版本管理」页下方的同名区块「**开发环境:云函数激活**」,
10
+ > 操作步骤与本页相同,但入口不在本页。
9
11
 
10
12
  ## 概览
11
13
 
@@ -189,7 +191,8 @@
189
191
 
190
192
  确认后服务端读取应用包字节,生成签名证明,再按「验证签名证明」同样的规则验签。通过后候选变为「**已就绪**」。
191
193
 
192
- - 发布者可以签发**自己的**候选;系统管理员可以代签他人的候选(「flowAdminNote」所说的代签)。
194
+ - 发布者可以签发**自己的**候选。页头的「你是系统管理员:也可代其他发布者完成第 2 步的签名」描述的是系统管理员的能力;
195
+ 但本页的发布记录只查询**当前发布者(你)名下**的候选,所以在这个页面里看不到、也点不到他人的候选,代签没有入口。
193
196
  - 只有草稿 / 校验中的候选能签发;已就绪的候选不能重新签。
194
197
  - 服务端签发的证明里,审批有效期为**签发后 7 天**(若签名密钥更早到期则以密钥到期为准)。这会影响[生产门禁](#生产门禁)的「审批窗口」检查。
195
198
  - 部署没有配置签名密钥或信任策略时无法签发(`RELEASE_TRUST_UNAVAILABLE`),需要部署管理员处理,不是你的包有问题。
@@ -8,7 +8,7 @@
8
8
  > **一句话流程**(提示)
9
9
  >
10
10
  > 控制台「创建应用」→ 复制 `appid` → 脚手架带上 `appid` 或写进 `manifest.json` → `npm run deploy` 上传 →
11
- > (需要协作时)「团队」→「成员」里添加开发者 →(给全企业用时)「版本管理」里发布为线上版本。
11
+ > (需要协作时)「团队」→「成员」里添加开发者 →(给全企业用时)「版本管理」里发布为线上版本(这一步只适用于 `appid` 应用)。
12
12
 
13
13
  ## 创建应用
14
14
 
@@ -20,10 +20,10 @@
20
20
 
21
21
  打开的抽屉标题为「**创建应用**」,副标题「平台会生成 appid,你自动成为管理员」:
22
22
 
23
- | 字段 | 说明 |
24
- | ---------------- | -------------------------- |
25
- | 应用名称 | 必填,最多 64 个字 |
26
- | 应用说明(可选) | 最多 2000 字 |
23
+ | 字段 | 说明 |
24
+ | ---------------- | ------------------ |
25
+ | 应用名称 | 必填,最多 64 个字 |
26
+ | 应用说明(可选) | 最多 2000 字 |
27
27
 
28
28
  抽屉底部提示「创建后把 appid 写进 manifest 即可上传;名称和说明以后上传的 manifest 为准。」点「**创建**」完成。
29
29
 
@@ -38,7 +38,7 @@
38
38
  刚创建、还没有上传过任何版本的应用,控制台不显示环境和开通清单,而是一张引导页:
39
39
  「应用已创建,还没有上传过代码。按下面三步把第一个版本传上来。」
40
40
 
41
- 页面顶部是 `appid`,旁边有「**复制 appid**」按钮。三步是:
41
+ 页面顶部是 `appid` 芯片,旁边是「**复制**」按钮(无障碍名称是「复制 appid」,复制后短暂显示「已复制」)。三步是:
42
42
 
43
43
  1. **新项目:用脚手架创建,自动带上 appid**
44
44
 
@@ -68,10 +68,16 @@
68
68
 
69
69
  侧栏「**团队**」分组下的「**成员**」,页面说明「管理员和开发者都能上传、在控制台管理这个应用;只有管理员能增删成员。」
70
70
 
71
- | 角色 | 能做什么 |
72
- | ---------- | ------------------------------------------------------------------------ |
73
- | **管理员** | 管理成员与应用:添加、移除成员,修改角色;也能上传、调试与管理 |
74
- | **开发者** | 上传、调试与管理:用同一个 `appid` 上传版本、在控制台管理这个应用 |
71
+ 页面顶部是一条 appid 栏:`appid` 芯片、旁边的「**复制**」按钮,以及你在该应用里的**当前角色标签**(「管理员」或「开发者」)。
72
+
73
+ (截图:成员页,见文档站)
74
+
75
+ 成员页:顶部是 appid + 复制 + 当前角色,下面是添加成员、成员行与角色、退出操作。
76
+
77
+ | 角色 | 能做什么 |
78
+ | ---------- | ----------------------------------------------------------------- |
79
+ | **管理员** | 管理成员与应用:添加、移除成员,修改角色;也能上传、调试与管理 |
80
+ | **开发者** | 上传、调试与管理:用同一个 `appid` 上传版本、在控制台管理这个应用 |
75
81
 
76
82
  控制台的应用切换下拉列出**你是管理员或开发者的全部应用**。
77
83
 
@@ -80,17 +86,17 @@
80
86
  在「**添加成员**」里输入对方的**登录名、手机号或邮箱**,选择角色(默认开发者),点「**添加**」。
81
87
  输入框下方提示「管理员:管理成员与应用;开发者:上传、调试与管理。」
82
88
 
83
- | 提示 | 含义 |
84
- | ---------------------------------------- | ------------------------------------------------ |
85
- | 没有找到这个用户 | 对方还没在本企业开通账号,或登录名 / 手机号 / 邮箱写错 |
86
- | 该账号匹配到多个用户,请改用登录名添加 | 手机号或邮箱对应了多个账号 |
87
- | 该用户已经是成员 | 需要调整角色请直接修改角色 |
89
+ | 提示 | 含义 |
90
+ | -------------------------------------- | ------------------------------------------------------ |
91
+ | 没有找到这个用户 | 对方还没在本企业开通账号,或登录名 / 手机号 / 邮箱写错 |
92
+ | 该账号匹配到多个用户,请改用登录名添加 | 手机号或邮箱对应了多个账号 |
93
+ | 该用户已经是成员 | 需要调整角色请直接修改角色 |
88
94
 
89
95
  ### 修改角色、移除与退出
90
96
 
91
97
  - **修改角色**(管理员):在成员行的角色下拉里切换「管理员 / 开发者」;
92
98
  - **移除**(管理员):点成员行的「**移除**」,确认「移除 {名字}?——移除后对方不能再上传或管理这个应用,已上传的版本保留。」;
93
- - **退出**(任何成员):在自己那一行点「**退出**」,确认「退出「{应用}」?——退出后你不能再上传或管理这个应用,需要管理员重新添加。」
99
+ - **退出**(自己,且不是旧应用的上传者成员):在自己那一行点「**退出**」,确认「退出「{应用}」?——退出后你不能再上传或管理这个应用,需要管理员重新添加。」
94
100
 
95
101
  应用**至少要保留一位管理员**。移除、退出或降级会让应用没有管理员时,操作被拒绝:
96
102
  40900「应用至少要保留一位管理员」,处理方式是先把另一位成员设为管理员,再做这个操作。
@@ -99,21 +105,23 @@
99
105
 
100
106
  ### 旧应用(`app_key`)
101
107
 
102
- 用旧 `app_key` 命名空间上传的已有应用,**上传过应用包的人视为管理员**,在成员列表里显示为管理员,但不能在这里修改其角色或移除。
108
+ 用旧 `app_key` 命名空间上传的已有应用,**上传过应用包的人视为管理员**,在成员列表里显示为管理员,
109
+ 但那一行只有角色标签:没有角色下拉,也没有「移除」/「退出」按钮,不能在这里修改角色或退出。
110
+ (其他通过邀请加入的成员仍按上面的规则管理。)
103
111
 
104
112
  ## 上传时的成员校验
105
113
 
106
114
  用 `appid` 的应用,谁能上传由成员决定,Manifest 里的 `publisher` 不再起作用:
107
115
 
108
- | 情况 | 结果 |
109
- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------- |
110
- | `appid` 还没创建 | 40400「appid 不存在」(`detail.reason` 为 `APP_NOT_FOUND`):先在云开发控制台「创建应用」 |
111
- | 上传者不是应用成员 | 40300「你不是这个应用的开发者」(`detail.reason` 为 `NOT_APP_MEMBER`):请联系应用管理员在云开发控制台「成员」里把你加为开发者 |
112
- | 管理员或开发者上传 | 正常上传 |
116
+ | 情况 | 结果 |
117
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
118
+ | `appid` 还没创建 | 40400「appid 不存在」(`detail.reason` 为 `APP_NOT_FOUND`):先在云开发控制台「创建应用」 |
119
+ | 上传者不是应用成员 | 40300「你不是这个应用的开发者」(`detail.reason` 为 `NOT_APP_MEMBER`):请联系应用管理员在云开发控制台「成员」里把你加为开发者 |
120
+ | 管理员或开发者上传 | 正常上传 |
113
121
 
114
122
  ## 成员上传的版本
115
123
 
116
- 每个成员上传的都是一个**开发版本**,全部列在侧栏「发布」组的「[版本管理](console-release.md#版本管理)」里,标出上传者和上传时间:
124
+ 用 `appid` 的应用里,每个成员上传的都是一个**开发版本**,全部列在侧栏「发布」组的「[版本管理](console-release.md#版本管理)」里,标出上传者和上传时间:
117
125
 
118
126
  - 任何成员(管理员或开发者)都可以把其中一个「发布为线上版本」,或「回退到此版本」;
119
127
  - 「我也用这个」把你本人的安装切到任一成员上传的版本,包括同事还没发布的版本(方便联调);
@@ -121,16 +129,22 @@
121
129
 
122
130
  ## 用户授权
123
131
 
124
- 侧栏「团队」组的「**用户授权**」页统计使用者通过授权登录(文档站 /reference/app-runtime#授权登录)给本应用的个人信息:
132
+ 侧栏「团队」组的「**用户授权**」页(appid 应用)统计使用者通过授权登录(文档站 /reference/app-runtime#授权登录)给本应用的个人信息。
133
+ 页面说明是「使用者通过授权登录(zl.auth.authorize)给本应用的个人信息:只统计人数,不展示具体用户和手机号。」
125
134
 
126
- | 数字 | 含义 |
127
- | -------------- | -------------------------------------------- |
128
- | 已授权人数 | 当前同意过至少一项的使用者人数 |
129
- | 头像和昵称 / 手机号 / 邮箱 | 各项同意人数 |
130
- | 已撤销 | 同意过、后来在「已授权信息」里撤销了的人数 |
135
+ | 数字 | 含义 |
136
+ | -------------------------- | ------------------------------------------ |
137
+ | 已授权人数 | 当前同意过至少一项的使用者人数 |
138
+ | 头像和昵称 / 手机号 / 邮箱 | 各项同意人数 |
139
+ | 已撤销 | 同意过、后来在「已授权信息」里撤销了的人数 |
131
140
 
132
141
  只有人数,**看不到具体用户和手机号**——具体信息只在使用者本人同意后交给应用运行时。每次同意、拒绝、撤销和云函数读取都会记审计日志。
133
- 还没有人授权时显示「还没有人授权」。接口:`GET /api/v1/app-cloud/apps/{app_id}/auth-stats`(成员)。
142
+ 还没有人授权时显示「**还没有人授权**」,下方说明:应用调用 `zl.auth.authorize` 并且用户点了「允许」后,这里会显示人数。
143
+ 接口:`GET /api/v1/app-cloud/apps/{app_id}/auth-stats`(成员)。
144
+
145
+ (截图:用户授权页,见文档站)
146
+
147
+ 用户授权页:只展示人数统计,不展示具体用户(图为还没有人授权时的空状态)。
134
148
 
135
149
  ## 目前的限制
136
150
 
@@ -4,10 +4,15 @@
4
4
 
5
5
  控制台侧栏「发布」组下的这个入口,按应用类型显示为两个不同的页面:
6
6
 
7
- | 应用 | 入口名称 | 做什么 |
8
- | ----------------------------------------------- | -------------- | ------------------------------------------------------------ |
9
- | 在控制台「创建应用」得到平台 `appid`(`zl…`)的应用 | **版本管理** | 选一个开发版本「发布为线上版本」,全企业可见;回退、发布记录 |
10
- | 旧的 `app_key` 命名空间应用 | **版本与激活** | 发布候选、签名、激活开发 / 生产(见[版本与激活(旧 app_key 应用)](console-legacy-release.md)) |
7
+ | 应用 | 入口名称 | 做什么 |
8
+ | --------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------- |
9
+ | 在控制台「创建应用」得到平台 `appid`(`zl…`)的应用 | **版本管理** | 选一个开发版本「发布为线上版本」,全企业可见;回退、发布记录 |
10
+ | 旧的 `app_key` 命名空间应用 | **版本与激活** | 发布候选、签名、激活开发 / 生产(见[版本与激活(旧 app_key 应用)](console-legacy-release.md)) |
11
+
12
+ > **应用中心「我的发布」与这里的关系**(提示)
13
+ >
14
+ > `appid` 应用的版本在应用中心显示「**仅成员可见**」(卡片统计为「企业 n / 开发版本 n」),成员版本上的主按钮是「**去版本管理发布**」,
15
+ > 点它会打开本页;已发布的版本显示「**企业可见**」,并保留「**云开发**」按钮。上线、回退都在本页完成。
11
16
 
12
17
  ## 版本管理
13
18
 
@@ -17,9 +22,9 @@
17
22
 
18
23
  先认识两个名词:
19
24
 
20
- | 名词 | 解释 |
21
- | ------------ | ------------------------------------------------------------------------------------------------------------ |
22
- | **开发版本** | 任何成员(管理员或开发者)每上传一次,就是一个开发版本。还没发布时只有成员能用 |
25
+ | 名词 | 解释 |
26
+ | ------------ | -------------------------------------------------------------------------------------------------------------- |
27
+ | **开发版本** | 任何成员(管理员或开发者)每上传一次,就是一个开发版本。还没发布时只有成员能用 |
23
28
  | **线上版本** | 当前对全企业生效的那一个版本。应用中心展示它、新安装装它、使用者自动跟随到它。一个应用同一时刻只有一个线上版本 |
24
29
 
25
30
  ### 页面内容
@@ -29,23 +34,27 @@
29
34
  - 「**发布说明(可选)**」输入框:最多 500 字,占位文字「这次更新了什么?会显示在发布记录里」。填写后对下一次发布生效。
30
35
  - **版本列表**:列出所有成员上传的开发版本(新的在上),每行是版本号和「{上传者} 上传于 {时间}」(自己上传的显示「我」),以及标签:
31
36
 
32
- | 标签 | 含义 |
33
- | ---------- | ------------------------------------------ |
34
- | **线上** | 当前线上版本 |
35
- | **曾发布** | 以前发布过、现在不是线上版本 |
36
- | **我在用** | 你本人的安装当前用的就是这个版本 |
37
+ | 标签 | 含义 |
38
+ | ---------- | -------------------------------- |
39
+ | **线上** | 当前线上版本 |
40
+ | **曾发布** | 以前发布过、现在不是线上版本 |
41
+ | **我在用** | 你本人的安装当前用的就是这个版本 |
37
42
 
38
43
  - 「**发布记录**」:最近的发布,每条是「时间 · v版本号 · 发布说明」。
39
44
 
40
45
  还没有任何上传时显示「还没有上传过版本」——「把 appid 写进 manifest 后运行 npm run deploy 上传第一个版本。」
41
46
 
47
+ (截图:版本管理页,见文档站)
48
+
49
+ 版本管理页:上方是线上版本与发布说明,中间是版本列表和「发布为线上版本」;带云资源的应用下方还有「开发环境:云函数激活」。
50
+
42
51
  ### 每个版本的按钮
43
52
 
44
- | 按钮 | 出现在 | 作用 |
45
- | ------------------ | ---------------------------------------- | ------------------------------------------------------------------------ |
46
- | **发布为线上版本** | 比线上版本新的版本,或还没发布过线上版本时 | 把这个版本设为线上版本 |
47
- | **回退到此版本** | 比线上版本旧的版本 | 同样是「发布」,只是目标是旧版本 |
48
- | **我也用这个** | 你已安装该应用,且不是你正在用的版本 | 把**你本人**的安装切到这个版本,提示「已切换到 v{版本},重新打开应用即可使用」 |
53
+ | 按钮 | 出现在 | 作用 |
54
+ | ------------------ | ------------------------------------------ | ------------------------------------------------------------------------------ |
55
+ | **发布为线上版本** | 比线上版本新的版本,或还没发布过线上版本时 | 把这个版本设为线上版本 |
56
+ | **回退到此版本** | 比线上版本旧的版本 | 同样是「发布」,只是目标是旧版本 |
57
+ | **我也用这个** | 你已安装该应用,且不是你正在用的版本 | 把**你本人**的安装切到这个版本,提示「已切换到 v{版本},重新打开应用即可使用」 |
49
58
 
50
59
  「我也用这个」对所有成员上传的开发版本都可点,包括同事刚上传、还没发布的版本——方便联调同事的改动。
51
60
  不是成员的人看不到、也切不到开发版本。(个别在本次改版前上传的旧版本按钮置灰,悬停提示
@@ -79,12 +88,12 @@
79
88
 
80
89
  版本声明了 `data.collections`、任何 `cloud.*` 能力、`runtime.backend` 或 headless 的 `provides` 时,
81
90
  「发布为线上版本」还会**以上传者的身份**准备好生产:开发与生产环境、生产数据域授权、签名、激活到生产、开通生产集合。
82
- 不需要再去做签名和激活。
91
+ 这些步骤由平台自动完成,**不需要你点「激活到生产」**(那个按钮只属于旧 `app_key` 应用),也不需要再手动做签名和激活。
83
92
 
84
93
  这要求**上传者当前正在使用这个版本**,否则发布被拒绝:
85
94
 
86
- | 业务码 | message | `reason` | next_action |
87
- | ------ | -------------------------------------------------- | ------------------------- | -------------------------------------------------------------------- |
95
+ | 业务码 | message | `reason` | next_action |
96
+ | ------ | ------------------------------------------------ | ------------------------- | --------------------------------------------------------------------- |
88
97
  | 40900 | 发布带云资源的版本前,上传者需要正在使用这个版本 | `UPLOADER_NOT_ON_VERSION` | 请上传者打开应用并切换到这个版本(npm run deploy 会自动切换),再发布 |
89
98
 
90
99
  只用宿主能力、不需要任何云资源的版本,发布时不做这些准备。
@@ -96,14 +105,16 @@
96
105
  ### 带云资源的应用:开发环境云函数激活
97
106
 
98
107
  带云函数 / 数据库的应用,「版本管理」页下方还有一块「**开发环境:云函数激活**」:只列出**你本人上传的**版本,
99
- 用于把它签名并激活到开发环境,云函数才能在开发环境运行(开发调试用,步骤见[版本与激活 · 激活开发](console-legacy-release.md#激活开发))。
100
- 给同事用不需要这里的操作,直接在上面「发布为线上版本」。
108
+ 用于把它签名并激活到开发环境,云函数才能在开发环境运行(开发调试用;新建候选 → 签名验证 → 激活开发,步骤与旧应用相同,
109
+ 见[版本与激活 · 激活开发](console-legacy-release.md#激活开发))。也可以在项目里运行
110
+ `npx zleap-app prepare <app_id> --version-id <id>`,它只准备开发环境,不碰生产。给同事用不需要这里的操作,直接在上面「发布为线上版本」。
101
111
 
102
112
  ### 不需要云资源的应用:简化的控制台
103
113
 
104
114
  应用当前版本不需要任何云资源时,控制台「概览」是一张简化页面:
105
115
  「这个应用只用宿主能力,不需要开通数据库或云函数。上传的每个版本都在「版本管理」里,选一个发布为线上版本即可。」
106
- 下面有「**版本管理**」和「**去添加成员**」两个按钮。侧栏不显示「数据」「运行」两组,也没有环境切换。
116
+ 下面有两个按钮:主按钮「**版本管理**」,第二个是成员入口——**管理员看到「去添加成员」,开发者看到「查看成员」**。
117
+ 侧栏不显示「数据」「运行」两组,也没有环境切换。
107
118
 
108
119
  ### 用命令行发布
109
120
 
@@ -129,11 +140,11 @@ AI 开发工具(`zleap-app mcp serve`)里对应 `app_releases` / `app_releas
129
140
 
130
141
  成员(管理员 / 开发者)可以调用:
131
142
 
132
- | 接口 | 说明 |
133
- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
134
- | `GET /api/v1/app-cloud/apps/{app_id}/versions` | 全部开发版本、当前线上版本与最近的发布记录 |
135
- | `POST /api/v1/app-cloud/apps/{app_id}/publish` | 请求体 `{version_id, notes?}`;返回 `{version_id, version, previous_version_id, published_at, notes, unchanged, prepared}`。回退就是用旧版本的 `version_id` 再调一次 |
136
- | `GET /api/v1/app-dev/apps/{app_id}/releases` / `POST /api/v1/app-dev/apps/{app_id}/release` | 同上两条,用开发凭据(CLI)调用 |
143
+ | 接口 | 说明 |
144
+ | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
145
+ | `GET /api/v1/app-cloud/apps/{app_id}/versions` | 全部开发版本、当前线上版本与最近的发布记录 |
146
+ | `POST /api/v1/app-cloud/apps/{app_id}/publish` | 请求体 `{version_id, notes?}`;返回 `{version_id, version, previous_version_id, published_at, notes, unchanged, prepared}`。回退就是用旧版本的 `version_id` 再调一次 |
147
+ | `GET /api/v1/app-dev/apps/{app_id}/releases` / `POST /api/v1/app-dev/apps/{app_id}/release` | 同上两条,用开发凭据(CLI)调用 |
137
148
 
138
149
  `unchanged` 为 `true` 表示发布的就是当前线上版本;`prepared` 是带云资源的版本的生产准备结果,不需要准备时为 `null`。
139
150
  `notes` 超过 500 字返回 42200「发布说明最多 500 字」。对旧 `app_key` 应用调用返回 40900「该应用使用旧的命名空间标识,请在「版本与激活」里管理版本」(`reason` 为 `LEGACY_APP`)。
@@ -33,6 +33,10 @@
33
33
  - **数据组三步没完成前,运行组不会成为当前步骤**;
34
34
  - 已完成的步骤打勾;开通失败的步骤显示警示图标。
35
35
 
36
+ (截图:开通清单,见文档站)
37
+
38
+ 开通清单:1–3 已完成,第 4 步「签名版本」给出「去签名」,右侧是环境资源卡和环境体检。
39
+
36
40
  ### 第 1 步:创建开发环境
37
41
 
38
42
  | 状态 | 说明文字 | 操作 |
@@ -69,9 +73,14 @@
69
73
 
70
74
  > **生产环境**(提示)
71
75
  >
72
- > 部署开放生产环境、并在侧栏切到「生产环境」时,这一步的按钮会变成「创建生产环境」。「激活到生产」也会自动创建生产环境,
73
- > 但不会建集合:之后到生产环境的「数据库」页开通,或直接用 `zleap-app prepare`。各面板在生产环境下能做什么,见
74
- > 界面总览 · 环境切换(文档站 /console/overview#环境标签与环境切换)。
76
+ > 部署开放生产环境、并在侧栏切到「生产环境」时,这一步的按钮会变成「创建生产环境」。
77
+ > 但大多数情况下不需要在这里手动创建:
78
+ >
79
+ > - **appid 应用**:带云资源的版本第一次「发布为线上版本」时,平台会**以上传者的身份自动准备生产**(生产环境、生产授权、签名、激活到生产、生产集合一次完成),
80
+ > 要求上传者当前正用着这个版本。只用宿主能力的应用直接发布即可,不需要签名激活。`zleap-app prepare` 对 appid 应用只准备开发环境(等价于「开发环境:云函数激活」),不会碰生产。
81
+ > - **旧 `app_key` 应用**:「激活到生产」会自动创建生产环境,但不会建集合;之后到生产环境的「数据库」页开通。
82
+ >
83
+ > 各面板在生产环境下能做什么,见 界面总览 · 环境切换(文档站 /console/overview#环境标签与环境切换)。
75
84
 
76
85
  ### 第 2 步:开通数据库
77
86
 
@@ -105,25 +114,28 @@
105
114
 
106
115
  ### 第 4 步:签名版本
107
116
 
108
- | 状态 | 说明文字 | 操作 |
109
- | ---- | -------------------------------------------------------- | ---------------------------------- |
110
- | 当前 | 为要运行的版本生成签名。只有签名过的版本才能运行云函数。 | 「**去签名**」→ 跳到「版本与激活」 |
111
- | 完成 | 已有签名版本 | — |
117
+ | 状态 | 说明文字 | 操作 |
118
+ | ---- | -------------------------------------------------------- | -------------------------- |
119
+ | 当前 | 为要运行的版本生成签名。只有签名过的版本才能运行云函数。 | 「**去签名**」→ 跳到发布页 |
120
+ | 完成 | 已有签名版本 | — |
112
121
 
113
- 「签名版本」= 在「版本与激活」页把一个发布候选验证到「**已就绪**」。见 [发布版本](console-release.md)。
122
+ 「去签名」跳到的发布页按应用类型区分:**appid 应用**是「版本管理」页下方的「**开发环境:云函数激活**」区块,
123
+ **旧 `app_key` 应用**是「[版本与激活](console-legacy-release.md)」页。
124
+ 「签名版本」= 在发布页把一条**发布候选**(某个版本 + 应用包的签名记录)验证到「**已就绪**」。见 [发布版本](console-release.md)。
114
125
 
115
126
  ### 第 5 步:升级安装并激活
116
127
 
117
128
  「激活」是把一个已签名版本**绑定到你的安装**,之后开发环境里的云函数和后台能力才会使用它。
118
129
 
119
- | 状态 | 说明文字 | 操作 |
120
- | -------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
121
- | 当前(有更新的已签名版本) | 当前安装的是 v{已装版本},升级到已签名的 v{目标版本} 后,云函数即可运行。 | 「**升级到 v{目标版本} 并激活**」 |
122
- | 当前(其他情况) | 你当前安装的是 v{已装版本},需要升级到签名版本后激活。(无安装时:把签名版本绑定到开发环境,云函数随即可调用。) | 「**去激活**」→ 跳到「版本与激活」点「激活开发」 |
123
- | 完成 | 已激活到开发环境 | — |
130
+ | 状态 | 说明文字 | 操作 |
131
+ | -------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------- |
132
+ | 当前(有更新的已签名版本) | 当前安装的是 v{已装版本},升级到已签名的 v{目标版本} 后,云函数即可运行。 | 「**升级到 v{目标版本} 并激活**」 |
133
+ | 当前(其他情况) | 你当前安装的是 v{已装版本},需要升级到签名版本后激活。(无安装时:把签名版本绑定到开发环境,云函数随即可调用。) | 「**去激活**」→ 跳到发布页 |
134
+ | 完成 | 已激活到开发环境 | — |
124
135
 
125
136
  **目标版本**是最新一个「已就绪」发布候选对应的版本,且与你当前安装的版本不同。
126
- 如果最新签名版本**就是**你装的版本,升级无事可做,这时按钮是「去激活」,到「版本与激活」页对该候选点「**激活开发**」。
137
+ 如果最新签名版本**就是**你装的版本,升级无事可做,这时按钮是「去激活」,到发布页对该候选点「**激活开发**」。
138
+ 发布页同样按应用类型区分:appid 应用在「版本管理」下方的「开发环境:云函数激活」,旧应用在「版本与激活」。
127
139
 
128
140
  点「升级到 v{x} 并激活」时:
129
141
 
@@ -148,7 +160,7 @@
148
160
 
149
161
  ### 右侧:环境卡片
150
162
 
151
- 清单右侧是当前环境的资源卡片,标题「开发环境」,环境已登记时带「**已登记**」标签:
163
+ 清单右侧是当前环境的资源卡片,标题随所选环境显示「**开发环境**」或「**生产环境**」;环境已登记时带「**已登记**」标签:
152
164
 
153
165
  | 资源 | 状态来源 |
154
166
  | ---------- | -------------------------------------------------------------------------------------- |
@@ -165,7 +177,7 @@
165
177
 
166
178
  五步全部完成后,概览变为:
167
179
 
168
- - 标题「**{应用名} · 开发环境**」,右侧标签「**全部就绪**」;
180
+ - 标题「**{应用名} · {当前环境}**」(开发环境显示「{应用名} · 开发环境」,切到生产时是「{应用名} · 生产环境」),右侧标签「**全部就绪**」;
169
181
  - 说明「所有资源已就绪。应用通过 Cloud SDK 读写的就是这里的数据。」
170
182
  - 四张可点击的卡片:
171
183
 
@@ -186,6 +198,10 @@
186
198
 
187
199
  结果摘要:全部通过时「**各层检查都通过了**」;否则「**「{检查项}」未通过**」。
188
200
 
201
+ (截图:环境体检,见文档站)
202
+
203
+ 环境体检跑完后:全部通过时显示「各层检查都通过了」,按钮变为「重新检查」。
204
+
189
205
  - 开通清单视图里是精简卡片:只给摘要,并在下方展开第一个未通过项的详情;
190
206
  - 资源卡片视图里是完整卡片:逐行列出每一项(✓ 通过 / ⚠ 未通过)及其详情。
191
207