@djvlc/openapi-user-client 1.7.15 → 1.8.1

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.
@@ -1,18 +1,18 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
- title: DJVLC User API
3
+ title: 平台用户端 API
4
4
  version: 1.0.0
5
5
  description: |
6
- DJVLC 低代码平台用户端 API(数据面)
6
+ 平台用户端 API 文档 (User API)
7
7
 
8
8
  提供以下功能:
9
- - 页面解析(Page Resolve)
10
- - 动作执行(Action Gateway - 统一入口)
11
- - 数据查询(Data Proxy - 统一入口)
12
- - 活动状态查询
13
- - 埋点上报(Track
14
- - 租户解析(Tenant Resolver)
15
- - 健康检查(Health
9
+ - 页面运行时(Pages)- 页面解析与渲染
10
+ - 动作网关(Actions)- 统一动作执行入口
11
+ - 数据查询(Queries)- 数据代理查询
12
+ - 活动运行时(Activities)- 活动状态查询
13
+ - 埋点追踪(Track)- 用户行为追踪
14
+ - 租户解析(Tenant)- 多租户解析
15
+ - 健康检查(Health)- 服务健康状态
16
16
 
17
17
  核心原则:
18
18
  - 所有业务动作只走 Action Gateway(鉴权/风控/幂等/审计/签名)
@@ -32,58 +32,44 @@ security:
32
32
  - ApiKey: []
33
33
  tags:
34
34
  - name: Pages
35
- description: 页面解析(Page Resolve)
35
+ description: 页面运行时 - 页面解析与渲染
36
36
  - name: Actions
37
- description: 动作执行(Action Gateway)
37
+ description: 动作网关 - 统一动作执行入口
38
38
  - name: Queries
39
- description: 数据查询(Data Proxy)
39
+ description: 数据查询 - 数据代理查询
40
40
  - name: Activities
41
- description: 活动状态查询
41
+ description: 活动运行时 - 活动状态查询
42
42
  - name: Track
43
- description: 埋点上报
43
+ description: 埋点追踪 - 用户行为追踪
44
44
  - name: Tenant
45
- description: 租户解析
45
+ description: 租户解析 - 多租户解析
46
46
  - name: Health
47
- description: 健康检查
47
+ description: 健康检查 - 服务健康状态
48
48
  paths:
49
49
  /page/resolve:
50
50
  get:
51
51
  tags:
52
52
  - Pages
53
53
  operationId: resolvePage
54
- summary: 解析页面(Runtime 核心接口)
54
+ summary: 解析页面
55
55
  description: |
56
- Runtime 的核心接口,返回渲染所需的完整数据。
56
+ Runtime 核心接口,返回渲染所需的完整数据。
57
57
 
58
58
  支持两种模式:
59
59
  1. 稳定入口(推荐):支持灰度/回滚/ops,返回 resolvedVersionId 和 CDN 地址
60
- 2. 保底模式:当 includeSnapshot=1 时,返回完整 snapshot(CDN 失败时使用)
61
-
62
- 响应包含:
63
- - resolvedVersionId: 解析后的页面版本 ID(考虑灰度/回滚)
64
- - cdnBase: CDN 基础地址
65
- - snapshotUrl: snapshot.json 的完整 URL
66
- - manifestUrl: manifest.json 的完整 URL
67
- - ops: 运维配置(killSwitch、blockedComponents、flags)
68
- - etag: 内容哈希(用于缓存)
69
- - cacheTtlSeconds: 缓存 TTL(建议 10~30 秒)
70
- - snapshot: 完整快照(仅当 includeSnapshot=1 时返回)
60
+ 2. 保底模式:当 includeSnapshot=true 时,返回完整 snapshot(CDN 失败时使用)
71
61
  parameters:
72
- - name: X-Trace-Id
73
- in: header
74
- required: false
75
- schema:
76
- type: string
77
- description: 链路追踪 ID(OTel,全链路透传)
78
62
  - name: pageId
79
63
  in: query
80
64
  required: true
65
+ description: 页面 ID
81
66
  schema:
82
67
  type: string
83
- description: 页面 ID
68
+ example: page_123456
84
69
  - name: env
85
70
  in: query
86
71
  required: false
72
+ description: 环境
87
73
  schema:
88
74
  type: string
89
75
  enum:
@@ -91,32 +77,53 @@ paths:
91
77
  - preview
92
78
  - staging
93
79
  default: prod
94
- description: 环境(prod/preview/staging)
80
+ example: prod
81
+ - name: includeSnapshot
82
+ in: query
83
+ required: false
84
+ description: 是否包含完整快照(CDN 失败保底)
85
+ schema:
86
+ type: boolean
87
+ default: false
95
88
  - name: uid
96
89
  in: query
97
90
  required: false
91
+ description: 用户 ID(契约 query;也可用 Header x-user-id)
98
92
  schema:
99
93
  type: string
100
- description: 用户 ID(用于灰度路由)
94
+ maxLength: 64
95
+ example: user_123456
101
96
  - name: deviceId
102
97
  in: query
103
98
  required: false
99
+ description: 设备 ID(契约 query;也可用 Header x-device-id)
104
100
  schema:
105
101
  type: string
106
- description: 设备 ID
102
+ maxLength: 64
103
+ example: device_123456
107
104
  - name: channel
108
105
  in: query
109
106
  required: false
107
+ description: 渠道(契约 query;也可用 Header x-channel)
110
108
  schema:
111
109
  type: string
112
- description: 渠道标识
113
- - name: includeSnapshot
114
- in: query
115
- required: false
110
+ maxLength: 64
111
+ example: wechat
112
+ - name: x-user-id
113
+ in: header
114
+ required: true
116
115
  schema:
117
- type: boolean
118
- default: false
119
- description: 是否包含完整 snapshot(CDN 失败保底时使用)
116
+ type: string
117
+ - name: x-device-id
118
+ in: header
119
+ required: true
120
+ schema:
121
+ type: string
122
+ - name: x-channel
123
+ in: header
124
+ required: true
125
+ schema:
126
+ type: string
120
127
  responses:
121
128
  '200':
122
129
  description: 解析成功
@@ -130,14 +137,81 @@ paths:
130
137
  $ref: '#/components/responses/NotFound'
131
138
  '503':
132
139
  $ref: '#/components/responses/ServiceUnavailable'
140
+ /page/manifest:
141
+ get:
142
+ tags:
143
+ - Pages
144
+ operationId: getPageManifest
145
+ summary: 获取组件清单
146
+ description: 返回页面的组件锁定清单
147
+ parameters:
148
+ - name: pageId
149
+ in: query
150
+ required: true
151
+ description: 页面 ID
152
+ schema:
153
+ type: string
154
+ example: page_123456
155
+ - name: env
156
+ in: query
157
+ required: false
158
+ description: 环境
159
+ schema:
160
+ type: string
161
+ enum:
162
+ - prod
163
+ - preview
164
+ - staging
165
+ default: prod
166
+ example: prod
167
+ responses:
168
+ '200':
169
+ description: 获取成功
170
+ content:
171
+ application/json:
172
+ schema:
173
+ $ref: '#/components/schemas/ManifestResponse'
174
+ '400':
175
+ $ref: '#/components/responses/BadRequest'
176
+ '404':
177
+ $ref: '#/components/responses/NotFound'
178
+ /page/config:
179
+ get:
180
+ tags:
181
+ - Pages
182
+ operationId: getPageConfig
183
+ summary: 获取运维配置
184
+ description: 返回当前运维配置(killSwitch、blockedComponents 等)
185
+ parameters:
186
+ - name: env
187
+ in: query
188
+ required: false
189
+ description: 环境
190
+ schema:
191
+ type: string
192
+ enum:
193
+ - prod
194
+ - preview
195
+ - staging
196
+ default: prod
197
+ example: prod
198
+ responses:
199
+ '200':
200
+ description: 获取成功
201
+ content:
202
+ application/json:
203
+ schema:
204
+ $ref: '#/components/schemas/OpsConfig'
205
+ '503':
206
+ $ref: '#/components/responses/ServiceUnavailable'
133
207
  /actions/execute:
134
208
  post:
135
209
  tags:
136
210
  - Actions
137
211
  operationId: executeAction
138
- summary: 执行动作(统一入口)
212
+ summary: 执行动作
139
213
  description: |
140
- Action Gateway 唯一入口,所有业务动作都通过此接口执行。
214
+ 统一的动作执行入口,支持领取、签到等业务动作。
141
215
 
142
216
  执行流程(Pipeline):
143
217
  1. Auth(登录态/票据/签名)
@@ -146,36 +220,6 @@ paths:
146
220
  4. Execute(执行器:Claim/Signin/Lottery...)
147
221
  5. Audit(审计落库 + outbox)
148
222
  6. Normalize(统一错误码/返回)
149
-
150
- 支持的动作类型:
151
- - claim: 领取
152
- - signin: 签到
153
- - lottery: 抽奖
154
- - reserve: 预约
155
- - bind: 绑定
156
- - task_complete: 任务完成
157
- - vote: 投票
158
- - share: 分享
159
- - form_submit: 表单提交
160
- - navigate: 页面跳转(内置)
161
- - setState: 状态更新(内置)
162
- - showToast: 提示消息(内置)
163
- - custom: 自定义动作
164
- parameters:
165
- - name: Idempotency-Key
166
- in: header
167
- required: false
168
- schema:
169
- type: string
170
- minLength: 16
171
- maxLength: 128
172
- description: 幂等键(与 body.idempotencyKey 二选一,推荐 header 传递)
173
- - name: X-Trace-Id
174
- in: header
175
- required: false
176
- schema:
177
- type: string
178
- description: 链路追踪 ID(OTel,全链路透传)
179
223
  requestBody:
180
224
  required: true
181
225
  content:
@@ -184,7 +228,7 @@ paths:
184
228
  $ref: '#/components/schemas/ExecuteActionRequest'
185
229
  responses:
186
230
  '200':
187
- description: 执行成功
231
+ description: 执行结果
188
232
  content:
189
233
  application/json:
190
234
  schema:
@@ -193,29 +237,19 @@ paths:
193
237
  $ref: '#/components/responses/BadRequest'
194
238
  '401':
195
239
  $ref: '#/components/responses/Unauthorized'
196
- '403':
197
- $ref: '#/components/responses/Forbidden'
198
- '409':
199
- description: 幂等冲突(重复请求)
200
- content:
201
- application/json:
202
- schema:
203
- $ref: '#/components/schemas/IdempotencyConflictResponse'
204
- '422':
205
- $ref: '#/components/responses/UnprocessableEntity'
206
240
  '429':
207
241
  $ref: '#/components/responses/TooManyRequests'
208
242
  '500':
209
243
  $ref: '#/components/responses/InternalError'
244
+ security:
245
+ - BearerAuth: []
210
246
  /actions/validate:
211
247
  post:
212
248
  tags:
213
249
  - Actions
214
250
  operationId: validateActionParams
215
251
  summary: 验证动作参数
216
- description: |
217
- 验证动作参数是否符合 Schema 定义(不执行动作)。
218
- 用于前端表单提交前的预校验。
252
+ description: 验证参数是否符合 Schema 定义,不执行动作
219
253
  requestBody:
220
254
  required: true
221
255
  content:
@@ -231,51 +265,41 @@ paths:
231
265
  $ref: '#/components/schemas/ValidateActionResponse'
232
266
  '400':
233
267
  $ref: '#/components/responses/BadRequest'
268
+ security:
269
+ - BearerAuth: []
234
270
  /actions/definitions:
235
271
  get:
236
272
  tags:
237
273
  - Actions
238
274
  operationId: getActionDefinition
239
275
  summary: 获取动作定义
240
- description: 获取指定动作定义版本的详细信息(用于 Runtime 渲染动作配置)
276
+ description: 按版本 ID 获取动作定义详情
241
277
  parameters:
242
278
  - name: actionDefinitionVersionId
243
279
  in: query
244
280
  required: true
281
+ description: 动作定义版本 ID
245
282
  schema:
246
283
  type: string
247
- description: 动作定义版本 ID
284
+ example: 202401efgh87654321
248
285
  responses:
249
286
  '200':
250
- description: 成功
287
+ description: 动作定义版本信息
251
288
  content:
252
289
  application/json:
253
290
  schema:
254
- $ref: '#/components/schemas/ActionDefinitionResponse'
291
+ $ref: '#/components/schemas/ActionDefinitionVersionResponse'
255
292
  '404':
256
293
  $ref: '#/components/responses/NotFound'
294
+ security:
295
+ - BearerAuth: []
257
296
  /data/query:
258
297
  post:
259
298
  tags:
260
299
  - Queries
261
300
  operationId: queryData
262
- summary: 执行数据查询(Data Proxy 统一入口)
263
- description: |
264
- Data Proxy 统一入口,所有数据查询都通过此接口执行。
265
-
266
- 功能:
267
- - 白名单校验(queryVersionId 属于该 app/workspace)
268
- - 字段裁剪、脱敏
269
- - 缓存(短 TTL)
270
- - 失败降级(兜底结构)
271
- - 审计(可选,或采样)
272
-
273
- 支持的数据源类型:
274
- - http: HTTP 接口
275
- - graphql: GraphQL 查询
276
- - database: 数据库查询(受限)
277
- - internal: 内部服务
278
- - aggregation: 聚合查询
301
+ summary: 执行数据查询
302
+ description: 通过 queryVersionId 查询数据
279
303
  requestBody:
280
304
  required: true
281
305
  content:
@@ -284,7 +308,7 @@ paths:
284
308
  $ref: '#/components/schemas/QueryDataRequest'
285
309
  responses:
286
310
  '200':
287
- description: 查询成功
311
+ description: 成功
288
312
  content:
289
313
  application/json:
290
314
  schema:
@@ -293,25 +317,17 @@ paths:
293
317
  $ref: '#/components/responses/BadRequest'
294
318
  '401':
295
319
  $ref: '#/components/responses/Unauthorized'
296
- '403':
297
- $ref: '#/components/responses/Forbidden'
298
- '404':
299
- $ref: '#/components/responses/NotFound'
300
- '422':
301
- $ref: '#/components/responses/UnprocessableEntity'
302
320
  '500':
303
321
  $ref: '#/components/responses/InternalError'
304
- '504':
305
- $ref: '#/components/responses/GatewayTimeout'
322
+ security:
323
+ - BearerAuth: []
306
324
  /data/query/batch:
307
325
  post:
308
326
  tags:
309
327
  - Queries
310
328
  operationId: batchQueryData
311
329
  summary: 批量执行数据查询
312
- description: |
313
- 批量执行多个数据查询,用于页面初始化时预取多个数据源。
314
- 所有查询并行执行,部分失败不影响其他查询返回。
330
+ description: 批量执行多个数据查询,所有查询并行执行
315
331
  requestBody:
316
332
  required: true
317
333
  content:
@@ -327,42 +343,39 @@ paths:
327
343
  $ref: '#/components/schemas/BatchQueryResponse'
328
344
  '400':
329
345
  $ref: '#/components/responses/BadRequest'
346
+ security:
347
+ - BearerAuth: []
330
348
  /data/definitions:
331
349
  get:
332
350
  tags:
333
351
  - Queries
334
352
  operationId: getQueryDefinition
335
353
  summary: 获取查询定义
336
- description: 获取指定数据查询定义版本的详细信息
354
+ description: 按版本 ID 获取数据查询定义
337
355
  parameters:
338
356
  - name: queryVersionId
339
357
  in: query
340
358
  required: true
341
359
  schema:
342
360
  type: string
343
- description: 查询定义版本 ID
344
361
  responses:
345
362
  '200':
346
- description: 成功
363
+ description: 查询定义
347
364
  content:
348
365
  application/json:
349
366
  schema:
350
367
  $ref: '#/components/schemas/QueryDefinitionResponse'
351
368
  '404':
352
369
  $ref: '#/components/responses/NotFound'
370
+ security:
371
+ - BearerAuth: []
353
372
  /activities/{activityId}:
354
373
  get:
355
374
  tags:
356
375
  - Activities
357
- summary: 获取活动信息(公开)
358
376
  operationId: getActivityInfo
359
- description: |
360
- 获取活动的公开信息,不需要登录。
361
-
362
- 返回内容包括:
363
- - 活动基本信息
364
- - 时间范围
365
- - 奖品列表(脱敏)
377
+ summary: 获取活动信息(公开)
378
+ description: 获取活动的公开信息,不需要登录
366
379
  parameters:
367
380
  - name: activityId
368
381
  in: path
@@ -375,12 +388,7 @@ paths:
375
388
  content:
376
389
  application/json:
377
390
  schema:
378
- type: object
379
- properties:
380
- success:
381
- type: boolean
382
- data:
383
- $ref: '#/components/schemas/PublicActivityInfo'
391
+ $ref: '#/components/schemas/ActivityInfoResponse'
384
392
  '404':
385
393
  $ref: '#/components/responses/NotFound'
386
394
  security: []
@@ -388,83 +396,69 @@ paths:
388
396
  get:
389
397
  tags:
390
398
  - Activities
391
- summary: 获取用户活动状态
392
399
  operationId: getActivityState
393
- description: |
394
- 查询用户在指定活动中的参与状态。
395
-
396
- 返回内容包括:
397
- - 是否可参与
398
- - 剩余次数
399
- - 类型特定状态(领取/签到/抽奖等)
400
+ summary: 获取用户活动状态
401
+ description: 查询用户在指定活动中的参与状态
400
402
  parameters:
401
403
  - name: activityId
402
404
  in: path
403
405
  required: true
404
406
  schema:
405
407
  type: string
408
+ - name: uid
409
+ in: query
410
+ required: false
411
+ description: 用户 UID
412
+ schema:
413
+ type: string
406
414
  responses:
407
415
  '200':
408
416
  description: 成功
409
417
  content:
410
418
  application/json:
411
419
  schema:
412
- type: object
413
- properties:
414
- success:
415
- type: boolean
416
- data:
417
- $ref: '#/components/schemas/UserActivityState'
420
+ $ref: '#/components/schemas/ActivityStatusResponse'
418
421
  '404':
419
422
  $ref: '#/components/responses/NotFound'
420
- security:
421
- - BearerAuth: []
422
423
  /activities/{activityId}/signin/calendar:
423
424
  get:
424
425
  tags:
425
426
  - Activities
426
- summary: 获取签到日历
427
427
  operationId: getSigninCalendar
428
- description: |
429
- 获取用户的签到日历数据。
430
-
431
- 返回内容包括:
432
- - 当前周期的签到记录
433
- - 连续签到天数
434
- - 累计签到天数
435
- - 奖励进度
428
+ summary: 获取签到日历
429
+ description: 获取用户的签到日历数据
436
430
  parameters:
437
431
  - name: activityId
438
432
  in: path
439
433
  required: true
440
434
  schema:
441
435
  type: string
436
+ - name: uid
437
+ in: query
438
+ required: true
439
+ description: 用户 UID
440
+ schema:
441
+ type: string
442
442
  - name: month
443
443
  in: query
444
- description: 月份(YYYY-MM),默认当前月
444
+ required: false
445
+ description: 月份(YYYY-MM)
445
446
  schema:
446
447
  type: string
447
- pattern: ^\d{4}-\d{2}$
448
+ example: 2024-01
448
449
  responses:
449
450
  '200':
450
451
  description: 成功
451
452
  content:
452
453
  application/json:
453
454
  schema:
454
- type: object
455
- properties:
456
- success:
457
- type: boolean
458
- data:
459
- $ref: '#/components/schemas/SigninCalendar'
460
- security:
461
- - BearerAuth: []
455
+ $ref: '#/components/schemas/SigninCalendarResponse'
462
456
  /activities/{activityId}/claims:
463
457
  get:
464
458
  tags:
465
459
  - Activities
466
- summary: 获取领取记录
467
460
  operationId: getClaimRecords
461
+ summary: 获取领取记录
468
462
  description: 获取用户在指定活动中的领取记录
469
463
  parameters:
470
464
  - name: activityId
@@ -472,13 +466,23 @@ paths:
472
466
  required: true
473
467
  schema:
474
468
  type: string
469
+ - name: pageToken
470
+ in: query
471
+ required: false
472
+ description: 分页游标
473
+ schema:
474
+ type: string
475
475
  - name: pageSize
476
476
  in: query
477
+ required: false
478
+ description: 每页条数
477
479
  schema:
478
- type: integer
479
- default: 20
480
- - name: pageToken
480
+ type: number
481
+ example: 20
482
+ - name: uid
481
483
  in: query
484
+ required: false
485
+ description: 用户 UID,不传则返回空
482
486
  schema:
483
487
  type: string
484
488
  responses:
@@ -487,24 +491,13 @@ paths:
487
491
  content:
488
492
  application/json:
489
493
  schema:
490
- type: object
491
- properties:
492
- success:
493
- type: boolean
494
- data:
495
- type: array
496
- items:
497
- $ref: '#/components/schemas/ClaimRecordInfo'
498
- meta:
499
- $ref: '#/components/schemas/PaginationMeta'
500
- security:
501
- - BearerAuth: []
494
+ $ref: '#/components/schemas/PaginatedRecordsResponse'
502
495
  /activities/{activityId}/lottery:
503
496
  get:
504
497
  tags:
505
498
  - Activities
506
- summary: 获取抽奖记录
507
499
  operationId: getLotteryRecords
500
+ summary: 获取抽奖记录
508
501
  description: 获取用户在指定活动中的抽奖记录
509
502
  parameters:
510
503
  - name: activityId
@@ -514,11 +507,16 @@ paths:
514
507
  type: string
515
508
  - name: pageSize
516
509
  in: query
510
+ required: false
511
+ description: 每页条数
517
512
  schema:
518
- type: integer
513
+ type: number
519
514
  default: 20
515
+ example: 20
520
516
  - name: pageToken
521
517
  in: query
518
+ required: false
519
+ description: 分页游标
522
520
  schema:
523
521
  type: string
524
522
  responses:
@@ -527,68 +525,111 @@ paths:
527
525
  content:
528
526
  application/json:
529
527
  schema:
530
- type: object
531
- properties:
532
- success:
533
- type: boolean
534
- data:
535
- type: array
536
- items:
537
- $ref: '#/components/schemas/LotteryRecordInfo'
538
- meta:
539
- $ref: '#/components/schemas/PaginationMeta'
540
- security:
541
- - BearerAuth: []
528
+ $ref: '#/components/schemas/PaginatedRecordsResponse'
529
+ /activities/{activityId}/status:
530
+ get:
531
+ tags:
532
+ - Activities
533
+ operationId: getActivityStatus
534
+ summary: 获取活动状态(兼容)
535
+ description: 获取活动的当前状态信息
536
+ parameters:
537
+ - name: activityId
538
+ in: path
539
+ required: true
540
+ schema:
541
+ type: string
542
+ responses:
543
+ '200':
544
+ description: 成功
545
+ content:
546
+ application/json:
547
+ schema:
548
+ $ref: '#/components/schemas/ActivityStatusResponse'
549
+ '404':
550
+ $ref: '#/components/responses/NotFound'
551
+ security: []
552
+ /activities/{activityId}/claim/status:
553
+ get:
554
+ tags:
555
+ - Activities
556
+ operationId: getClaimStatus
557
+ summary: 获取领取状态
558
+ description: 获取用户在指定活动中的领取状态
559
+ parameters:
560
+ - name: activityId
561
+ in: path
562
+ required: true
563
+ schema:
564
+ type: string
565
+ - name: uid
566
+ in: query
567
+ required: true
568
+ description: 用户 UID
569
+ schema:
570
+ type: string
571
+ responses:
572
+ '200':
573
+ description: 成功
574
+ content:
575
+ application/json:
576
+ schema:
577
+ $ref: '#/components/schemas/ClaimStatusResponse'
578
+ /activities/{activityId}/signin/status:
579
+ get:
580
+ tags:
581
+ - Activities
582
+ operationId: getSigninStatus
583
+ summary: 获取签到状态
584
+ description: 获取用户在指定活动中的签到状态
585
+ parameters:
586
+ - name: activityId
587
+ in: path
588
+ required: true
589
+ schema:
590
+ type: string
591
+ - name: uid
592
+ in: query
593
+ required: true
594
+ description: 用户 UID
595
+ schema:
596
+ type: string
597
+ responses:
598
+ '200':
599
+ description: 成功
600
+ content:
601
+ application/json:
602
+ schema:
603
+ $ref: '#/components/schemas/SigninStatusResponse'
542
604
  /track:
543
605
  post:
544
606
  tags:
545
607
  - Track
546
- summary: 埋点上报
547
608
  operationId: track
548
- description: |
549
- 接收客户端埋点数据,异步写入 Outbox。
550
-
551
- 特点:
552
- - 高性能:不阻塞主链路
553
- - 可靠:通过 Outbox 异步持久化
554
- - 可追溯:自动关联 pageVersionId/componentVersionId/traceId
609
+ summary: 单个埋点上报
610
+ description: 接收客户端埋点数据,异步处理
555
611
  requestBody:
556
612
  required: true
557
613
  content:
558
614
  application/json:
559
615
  schema:
560
- $ref: '#/components/schemas/TrackRequest'
616
+ $ref: '#/components/schemas/TrackSingleRequest'
561
617
  responses:
562
618
  '202':
563
619
  description: 接收成功(异步处理)
564
620
  content:
565
621
  application/json:
566
622
  schema:
567
- type: object
568
- properties:
569
- success:
570
- type: boolean
571
- example: true
572
- data:
573
- type: object
574
- properties:
575
- eventId:
576
- type: string
577
- description: 事件 ID
623
+ $ref: '#/components/schemas/TrackSingleResponse'
578
624
  '400':
579
625
  $ref: '#/components/responses/BadRequest'
580
626
  /track/batch:
581
627
  post:
582
628
  tags:
583
629
  - Track
584
- summary: 批量埋点上报
585
630
  operationId: trackBatch
586
- description: |
587
- 批量接收客户端埋点数据,提高上报效率。
588
-
589
- 限制:
590
- - 单次最多 100 条
591
- - 单条事件不超过 10KB
631
+ summary: 批量埋点上报
632
+ description: 批量接收客户端埋点数据,提高上报效率
592
633
  requestBody:
593
634
  required: true
594
635
  content:
@@ -601,75 +642,29 @@ paths:
601
642
  content:
602
643
  application/json:
603
644
  schema:
604
- type: object
605
- properties:
606
- success:
607
- type: boolean
608
- data:
609
- type: object
610
- properties:
611
- accepted:
612
- type: integer
613
- description: 接收的事件数量
614
- rejected:
615
- type: integer
616
- description: 拒绝的事件数量
617
- errors:
618
- type: array
619
- items:
620
- type: object
621
- properties:
622
- index:
623
- type: integer
624
- reason:
625
- type: string
645
+ $ref: '#/components/schemas/TrackBatchResponse'
626
646
  '400':
627
647
  $ref: '#/components/responses/BadRequest'
628
648
  /tenant/resolve:
629
649
  post:
630
650
  tags:
631
651
  - Tenant
632
- summary: 解析租户信息
633
652
  operationId: resolveTenant
634
- description: |
635
- 根据 appKey 或 host 解析租户/应用信息。
636
-
637
- 用于:
638
- - Runtime 初始化时获取应用配置
639
- - 多租户场景下的应用隔离
653
+ summary: 解析租户信息
654
+ description: 根据 appKey 或 host 解析租户/应用信息
640
655
  requestBody:
641
656
  required: true
642
657
  content:
643
658
  application/json:
644
659
  schema:
645
- type: object
646
- properties:
647
- appKey:
648
- type: string
649
- description: 应用密钥
650
- host:
651
- type: string
652
- description: 请求来源域名
653
- channel:
654
- type: string
655
- description: 渠道标识
656
- anyOf:
657
- - required:
658
- - appKey
659
- - required:
660
- - host
660
+ $ref: '#/components/schemas/ResolveTenantRequest'
661
661
  responses:
662
662
  '200':
663
663
  description: 解析成功
664
664
  content:
665
665
  application/json:
666
666
  schema:
667
- type: object
668
- properties:
669
- success:
670
- type: boolean
671
- data:
672
- $ref: '#/components/schemas/TenantInfo'
667
+ $ref: '#/components/schemas/ResolveTenantResponse'
673
668
  '400':
674
669
  $ref: '#/components/responses/BadRequest'
675
670
  '404':
@@ -683,36 +678,27 @@ paths:
683
678
  get:
684
679
  tags:
685
680
  - Tenant
686
- summary: 获取租户配置
687
681
  operationId: getTenantConfig
688
- description: |
689
- 获取当前租户的运行时配置。
690
-
691
- 包括:
692
- - 功能开关
693
- - 主题配置
694
- - CDN 域名
695
- - 阻断组件列表
696
- - Kill Switch 状态
682
+ summary: 获取租户配置
683
+ description: 获取当前租户的运行时配置
697
684
  parameters:
685
+ - name: x-app-id
686
+ in: header
687
+ required: true
688
+ schema:
689
+ type: string
698
690
  - name: X-App-Id
699
691
  in: header
700
692
  required: true
701
693
  schema:
702
694
  type: string
703
- description: 应用 ID
704
695
  responses:
705
696
  '200':
706
- description: 成功
697
+ description: 获取成功
707
698
  content:
708
699
  application/json:
709
700
  schema:
710
- type: object
711
- properties:
712
- success:
713
- type: boolean
714
- data:
715
- $ref: '#/components/schemas/TenantConfig'
701
+ $ref: '#/components/schemas/TenantConfigResponse'
716
702
  '401':
717
703
  $ref: '#/components/responses/Unauthorized'
718
704
  '404':
@@ -721,429 +707,177 @@ paths:
721
707
  get:
722
708
  tags:
723
709
  - Health
724
- summary: 健康检查
725
710
  operationId: healthCheck
726
- description: |
727
- 综合健康检查,包含所有依赖服务状态。
728
-
729
- 返回:
730
- - 服务状态(healthy/degraded/unhealthy)
731
- - 版本信息
732
- - 运行时间
733
- - 依赖服务状态
711
+ summary: 健康检查
712
+ description: 综合健康检查,返回服务状态和时间戳
734
713
  responses:
735
714
  '200':
736
- description: 服务健康
715
+ description: 健康
737
716
  content:
738
717
  application/json:
739
718
  schema:
740
- $ref: '#/components/schemas/HealthResponse'
741
- '503':
742
- description: 服务不健康
719
+ $ref: '#/components/schemas/HealthCheckResponse'
720
+ security: []
721
+ /health/live:
722
+ get:
723
+ tags:
724
+ - Health
725
+ operationId: livenessCheck
726
+ summary: 存活检查
727
+ description: Kubernetes liveness probe
728
+ responses:
729
+ '200':
730
+ description: 存活
743
731
  content:
744
732
  application/json:
745
733
  schema:
746
- $ref: '#/components/schemas/HealthResponse'
734
+ $ref: '#/components/schemas/LivenessResponse'
747
735
  security: []
748
736
  /health/ready:
749
737
  get:
750
738
  tags:
751
739
  - Health
752
- summary: 就绪检查
753
740
  operationId: readinessCheck
754
- description: |
755
- Kubernetes readiness probe
756
- 检查服务是否准备好接收流量。
757
- responses:
758
- '200':
759
- description: 服务就绪
760
- content:
761
- application/json:
762
- schema:
763
- type: object
764
- properties:
765
- ready:
766
- type: boolean
767
- example: true
768
- '503':
769
- description: 服务未就绪
770
- content:
771
- application/json:
772
- schema:
773
- type: object
774
- properties:
775
- ready:
776
- type: boolean
777
- example: false
778
- reason:
779
- type: string
780
- security: []
781
- /health/live:
782
- get:
783
- tags:
784
- - Health
785
- summary: 存活检查
786
- operationId: livenessCheck
787
- description: |
788
- Kubernetes liveness probe。
789
- 检查服务是否存活。
741
+ summary: 就绪检查
742
+ description: Kubernetes readiness probe
790
743
  responses:
791
744
  '200':
792
- description: 服务存活
745
+ description: 就绪
793
746
  content:
794
747
  application/json:
795
748
  schema:
796
- type: object
797
- properties:
798
- alive:
799
- type: boolean
800
- example: true
801
- '503':
802
- description: 服务不存活
749
+ $ref: '#/components/schemas/ReadinessResponse'
803
750
  security: []
804
751
  components:
805
752
  schemas:
806
- SuccessResponse:
807
- type: object
808
- required:
809
- - success
810
- - code
811
- - message
812
- - data
813
- - timestamp
814
- - path
815
- description: 成功响应(ApiSuccessResponse,与 types/src/common/api.ts 保持一致)
816
- properties:
817
- success:
818
- type: boolean
819
- enum:
820
- - true
821
- example: true
822
- description: 是否成功(固定为 true)
823
- code:
824
- type: string
825
- example: OK
826
- description: 业务状态码
827
- message:
828
- type: string
829
- example: 操作成功
830
- description: 响应消息
831
- data:
832
- description: 响应数据(泛型 T)
833
- timestamp:
834
- type: integer
835
- format: int64
836
- example: 1702300000000
837
- description: 响应时间戳(Unix 毫秒时间戳,number)
838
- path:
839
- type: string
840
- example: /api/user/pages/resolve
841
- description: 请求路径
842
- requestId:
843
- type: string
844
- example: uuid-string
845
- description: 请求 ID(可选)
846
- KillSwitchItem:
847
- type: object
848
- required:
849
- - targetType
850
- - targetId
851
- - enabled
852
- description: Kill-Switch 条目
853
- properties:
854
- targetType:
855
- type: string
856
- enum:
857
- - action
858
- - component
859
- - feature
860
- - page
861
- - query
862
- description: 目标类型
863
- targetId:
864
- type: string
865
- description: 目标 ID(actionType/componentName/featureKey/pageId/queryId)
866
- enabled:
867
- type: boolean
868
- description: 是否启用(true = 被关闭)
869
- reason:
870
- type: string
871
- description: 关闭原因
872
- enabledAt:
873
- type: string
874
- format: date-time
875
- description: 关闭时间(ISO8601)
876
- enabledBy:
877
- type: string
878
- description: 关闭操作者
879
- userMessage:
880
- type: string
881
- description: 用户提示消息
882
- BlockedComponentItem:
753
+ BlockedComponent:
883
754
  type: object
884
755
  required:
885
756
  - name
886
757
  - reason
887
- description: 被阻断的组件条目
758
+ - blockedAt
759
+ - blockedBy
760
+ description: 被阻断的组件(BlockedComponentVo)
888
761
  properties:
889
762
  name:
890
763
  type: string
891
764
  description: 组件名称
892
765
  version:
893
766
  type: string
894
- pattern: ^\d+\.\d+\.\d+$
895
- description: 组件版本(可选,不指定则阻断所有版本)
767
+ description: 组件版本(不填则阻断所有版本)
896
768
  reason:
897
769
  type: string
898
770
  description: 阻断原因
899
771
  blockedAt:
900
772
  type: string
901
- format: date-time
902
- description: 阻断时间(ISO8601)
773
+ description: 阻断时间
903
774
  blockedBy:
904
775
  type: string
905
- description: 阻断操作者
906
- fallbackVersion:
907
- type: string
908
- pattern: ^\d+\.\d+\.\d+$
909
- description: 降级版本(可选)
910
- urgent:
776
+ description: 操作者
777
+ DegradeConfig:
778
+ type: object
779
+ required:
780
+ - enabled
781
+ - mode
782
+ description: 降级配置(DegradeConfigVo)
783
+ properties:
784
+ enabled:
911
785
  type: boolean
912
- description: 是否紧急阻断
786
+ description: 是否启用降级
787
+ mode:
788
+ type: string
789
+ description: 降级模式
790
+ enum:
791
+ - fallback
792
+ - static
793
+ - error
794
+ message:
795
+ type: string
796
+ description: 降级消息
913
797
  OpsConfig:
914
798
  type: object
915
- description: 运维配置(运行时下发,与 types/page/snapshot.ts OpsConfig 对齐)
916
799
  required:
917
800
  - killSwitch
918
801
  - blockedComponents
919
- - flags
802
+ - blockedPages
803
+ - featureFlags
804
+ - degradeConfig
805
+ description: 运维配置(OpsConfigVo)
920
806
  properties:
921
- configVersionId:
922
- type: string
923
- description: 配置版本 ID(用于缓存失效)
924
807
  killSwitch:
808
+ type: boolean
809
+ description: 全局 kill-switch
810
+ blockedComponents:
811
+ description: 被阻断的组件列表
925
812
  type: array
926
813
  items:
927
- $ref: '#/components/schemas/KillSwitchItem'
928
- description: Kill-Switch 列表(被紧急关闭的功能/动作)
929
- blockedComponents:
814
+ $ref: '#/components/schemas/BlockedComponent'
815
+ blockedPages:
816
+ description: 被阻断的页面列表
930
817
  type: array
931
818
  items:
932
- $ref: '#/components/schemas/BlockedComponentItem'
933
- description: 被阻断的组件列表
934
- flags:
819
+ type: string
820
+ featureFlags:
935
821
  type: object
822
+ description: 功能开关
936
823
  additionalProperties:
937
824
  type: boolean
938
- description: 功能开关(Feature Flags)
939
- expiresAt:
940
- type: string
941
- format: date-time
942
- description: 配置过期时间(ISO8601)
825
+ degradeConfig:
826
+ description: 降级配置
827
+ allOf:
828
+ - $ref: '#/components/schemas/DegradeConfig'
943
829
  ResolvePageResponse:
944
- allOf:
945
- - $ref: '#/components/schemas/SuccessResponse'
946
- - type: object
947
- properties:
948
- data:
949
- type: object
950
- required:
951
- - pageId
952
- - resolvedVersionId
953
- - cdnBase
954
- - snapshotUrl
955
- - manifestUrl
956
- - ops
957
- - etag
958
- - cacheTtlSeconds
959
- properties:
960
- pageId:
961
- type: string
962
- description: 页面 ID(UniqueId)
963
- resolvedVersionId:
964
- type: string
965
- description: 解析后的页面版本 ID(考虑灰度/回滚后的实际版本,UniqueId)
966
- cdnBase:
967
- type: string
968
- format: uri
969
- description: CDN 基础地址
970
- snapshotUrl:
971
- type: string
972
- format: uri
973
- description: snapshot.json 的完整 URL
974
- manifestUrl:
975
- type: string
976
- format: uri
977
- description: manifest.json 的完整 URL
978
- ops:
979
- $ref: '#/components/schemas/OpsConfig'
980
- description: 运维配置(killSwitch、blockedComponents、flags)
981
- etag:
982
- type: string
983
- description: 内容哈希(用于缓存验证)
984
- cacheTtlSeconds:
985
- type: integer
986
- minimum: 0
987
- maximum: 300
988
- default: 30
989
- description: 缓存 TTL(秒),建议 10~30 秒
990
- traceId:
991
- type: string
992
- description: 链路追踪 ID(全链路透传,与 types 可观测原则一致)
993
- runtimeVersion:
994
- type: string
995
- pattern: ^\d+\.\d+\.\d+$
996
- description: 运行时版本(SemVer,与 manifest.runtime.version 一致)
997
- rolloutMatch:
998
- type: object
999
- description: 灰度匹配信息(可选,用于调试)
1000
- properties:
1001
- strategyId:
1002
- type: string
1003
- description: 匹配的策略 ID
1004
- strategyName:
1005
- type: string
1006
- description: 匹配的策略名称
1007
- isDefault:
1008
- type: boolean
1009
- description: 是否使用默认版本
1010
- snapshot:
1011
- type: object
1012
- description: 完整快照(仅当 includeSnapshot=1 时返回,CDN 失败保底使用)
1013
- properties:
1014
- page:
1015
- type: object
1016
- description: 页面 Schema(PageSnapshotPage)
1017
- properties:
1018
- schemaVersion:
1019
- type: string
1020
- pageId:
1021
- type: string
1022
- pageVersion:
1023
- type: string
1024
- pattern: ^\d+\.\d+\.\d+$
1025
- title:
1026
- type: string
1027
- initialState:
1028
- type: object
1029
- additionalProperties: true
1030
- bindings:
1031
- type: array
1032
- items:
1033
- type: object
1034
- root:
1035
- type: object
1036
- config:
1037
- type: object
1038
- manifest:
1039
- type: object
1040
- description: 组件锁定清单(PageSnapshotManifest)
1041
- properties:
1042
- components:
1043
- type: array
1044
- items:
1045
- type: object
1046
- properties:
1047
- name:
1048
- type: string
1049
- version:
1050
- type: string
1051
- pattern: ^\d+\.\d+\.\d+$
1052
- integrity:
1053
- type: string
1054
- pattern: ^sha(256|384|512)-
1055
- assetsUrl:
1056
- type: string
1057
- format: uri
1058
- entrypoints:
1059
- type: object
1060
- properties:
1061
- js:
1062
- type: string
1063
- css:
1064
- type: string
1065
- chunks:
1066
- type: array
1067
- items:
1068
- type: string
1069
- runtime:
1070
- type: object
1071
- properties:
1072
- version:
1073
- type: string
1074
- pattern: ^\d+\.\d+\.\d+$
1075
- minVersion:
1076
- type: string
1077
- pattern: ^\d+\.\d+\.\d+$
1078
- definitionsDigest:
1079
- type: object
1080
- description: 绑定的 Definition 版本摘要(DefinitionsDigest)
1081
- properties:
1082
- actions:
1083
- type: array
1084
- items:
1085
- type: object
1086
- properties:
1087
- id:
1088
- type: string
1089
- name:
1090
- type: string
1091
- versionId:
1092
- type: string
1093
- hash:
1094
- type: string
1095
- queries:
1096
- type: array
1097
- items:
1098
- type: object
1099
- properties:
1100
- id:
1101
- type: string
1102
- name:
1103
- type: string
1104
- versionId:
1105
- type: string
1106
- hash:
1107
- type: string
1108
- meta:
1109
- type: object
1110
- description: 元数据(PageSnapshotMeta)
1111
- properties:
1112
- pageId:
1113
- type: string
1114
- pageVersionId:
1115
- type: string
1116
- publishId:
1117
- type: string
1118
- schemaVersion:
1119
- type: string
1120
- createdAt:
1121
- type: string
1122
- format: date-time
1123
- createdBy:
1124
- type: string
1125
- contentHash:
1126
- type: string
1127
- bindings:
1128
- type: object
1129
- properties:
1130
- componentVersions:
1131
- type: array
1132
- items:
1133
- type: string
1134
- definitionVersions:
1135
- type: array
1136
- items:
1137
- type: string
1138
- runtimeVersion:
1139
- type: string
1140
- pattern: ^\d+\.\d+\.\d+$
1141
- env:
1142
- type: string
1143
- enum:
1144
- - preview
1145
- - staging
1146
- - prod
830
+ type: object
831
+ required:
832
+ - pageId
833
+ - resolvedVersionId
834
+ - cdnBase
835
+ - snapshotUrl
836
+ - manifestUrl
837
+ - ops
838
+ - etag
839
+ - cacheTtlSeconds
840
+ description: 页面解析响应(PageResolveResponseVo)
841
+ properties:
842
+ pageId:
843
+ type: string
844
+ description: 页面 ID
845
+ example: page_123456
846
+ resolvedVersionId:
847
+ type: string
848
+ description: 解析后的页面版本 ID
849
+ example: pv_20240101_abc
850
+ cdnBase:
851
+ type: string
852
+ description: CDN 基础 URL
853
+ example: https://cdn.example.com
854
+ snapshotUrl:
855
+ type: string
856
+ description: Snapshot URL
857
+ example: https://cdn.example.com/pages/page_123456/snapshot.json
858
+ manifestUrl:
859
+ type: string
860
+ description: Manifest URL
861
+ example: https://cdn.example.com/pages/page_123456/manifest.json
862
+ ops:
863
+ description: 运维配置
864
+ allOf:
865
+ - $ref: '#/components/schemas/OpsConfig'
866
+ etag:
867
+ type: string
868
+ description: ETag(用于缓存)
869
+ example: '"abc123"'
870
+ cacheTtlSeconds:
871
+ type: number
872
+ description: 缓存 TTL(秒)
873
+ example: 300
874
+ traceId:
875
+ type: string
876
+ description: 链路追踪 ID
877
+ runtimeVersion:
878
+ type: string
879
+ description: 运行时版本(SemVer)
880
+ example: 1.0.0
1147
881
  ErrorResponse:
1148
882
  type: object
1149
883
  required:
@@ -1152,58 +886,125 @@ components:
1152
886
  - message
1153
887
  - timestamp
1154
888
  - path
1155
- description: 错误响应(ApiErrorResponse,与 types/src/common/api.ts 保持一致)
889
+ description: 错误响应(ErrorResponseVo)
1156
890
  properties:
1157
891
  success:
1158
892
  type: boolean
1159
- enum:
1160
- - false
893
+ description: 请求是否成功
1161
894
  example: false
1162
- description: 是否成功(固定为 false)
1163
895
  code:
1164
896
  type: string
1165
- example: VALIDATION_INVALID_PARAMS
1166
- description: 错误码(ErrorCode | string)
897
+ description: 错误码
898
+ example: USER_NOT_FOUND
1167
899
  message:
1168
900
  type: string
1169
- example: 请求参数无效
1170
- description: 错误消息(用户可读)
1171
- data:
1172
- type: object
1173
- additionalProperties: true
1174
- description: 错误详情(Record<string, unknown>,与 types ApiErrorResponse.data 一致)
901
+ description: 错误消息
902
+ example: 用户不存在
1175
903
  timestamp:
1176
- type: integer
1177
- format: int64
904
+ type: number
905
+ description: 响应时间戳
1178
906
  example: 1702300000000
1179
- description: 响应时间戳(Unix 毫秒时间戳,number)
1180
907
  path:
1181
908
  type: string
1182
- example: /api/user/pages/resolve
1183
909
  description: 请求路径
910
+ example: /api/users/123
1184
911
  requestId:
1185
912
  type: string
913
+ description: 请求ID
1186
914
  example: uuid-string
1187
- description: 请求 ID(可选)
1188
915
  traceId:
1189
916
  type: string
1190
- example: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
1191
- description: 链路追踪 ID(可选,用于分布式追踪)
917
+ description: 链路追踪ID(用于全链路定位问题)
918
+ example: trace-uuid-string
919
+ ManifestComponent:
920
+ type: object
921
+ required:
922
+ - name
923
+ - version
924
+ - source
925
+ - integrity
926
+ description: 组件清单项(ManifestComponentSwaggerVo)
927
+ properties:
928
+ name:
929
+ type: string
930
+ description: 组件名称(Custom Element 标签名)
931
+ example: djvlc-button
932
+ version:
933
+ type: string
934
+ description: 版本号
935
+ example: 1.0.0
936
+ source:
937
+ type: string
938
+ description: 组件来源
939
+ enum:
940
+ - bundled
941
+ - remote
942
+ entry:
943
+ type: string
944
+ description: 入口 URL(remote 组件必填)
945
+ styleEntry:
946
+ type: string
947
+ description: 样式入口 URL
948
+ integrity:
949
+ type: string
950
+ description: SRI 完整性哈希
951
+ preload:
952
+ type: boolean
953
+ description: 是否预加载
954
+ ManifestRuntime:
955
+ type: object
956
+ required:
957
+ - version
958
+ - minVersion
959
+ description: Runtime 版本信息(ManifestRuntimeVo)
960
+ properties:
961
+ version:
962
+ type: string
963
+ description: 版本
964
+ example: 1.0.0
965
+ minVersion:
966
+ type: string
967
+ description: 最低兼容版本
968
+ example: 0.9.0
969
+ ManifestResponse:
970
+ type: object
971
+ required:
972
+ - pageVersionId
973
+ - manifestVersion
974
+ - components
975
+ - runtime
976
+ description: 组件清单响应(ManifestSwaggerVo)
977
+ properties:
978
+ pageVersionId:
979
+ type: string
980
+ description: 页面版本 ID
981
+ manifestVersion:
982
+ type: string
983
+ description: 清单版本
984
+ components:
985
+ description: 组件列表
986
+ type: array
987
+ items:
988
+ $ref: '#/components/schemas/ManifestComponent'
989
+ runtime:
990
+ description: Runtime 版本
991
+ allOf:
992
+ - $ref: '#/components/schemas/ManifestRuntime'
1192
993
  ActionClientContext:
1193
994
  type: object
1194
- description: 动作执行上下文(ActionClientContext,问题追溯必须字段)
1195
995
  required:
1196
996
  - pageVersionId
997
+ description: 动作执行上下文(ActionContextDto)
1197
998
  properties:
1198
999
  pageVersionId:
1199
1000
  type: string
1200
- description: 页面版本 ID(不可变,UniqueId)
1001
+ description: 页面版本 ID
1201
1002
  componentVersionId:
1202
1003
  type: string
1203
- description: 组件版本 ID(UniqueId)
1004
+ description: 组件版本 ID
1204
1005
  componentInstanceId:
1205
1006
  type: string
1206
- description: 组件实例 ID(UniqueId)
1007
+ description: 组件实例 ID
1207
1008
  triggerEvent:
1208
1009
  type: string
1209
1010
  description: 触发事件名
@@ -1212,372 +1013,332 @@ components:
1212
1013
  description: 设备 ID
1213
1014
  channel:
1214
1015
  type: string
1215
- description: 渠道标识
1016
+ description: 渠道
1216
1017
  clientTimestamp:
1217
1018
  type: string
1218
- format: date-time
1219
- description: 客户端时间戳(ISODateTime)
1019
+ description: 客户端时间戳(ISO 8601)
1220
1020
  extra:
1221
1021
  type: object
1022
+ description: 扩展数据
1222
1023
  additionalProperties: true
1223
- description: 扩展数据(Record<string, JsonValue>)
1224
1024
  ExecuteActionRequest:
1225
1025
  type: object
1226
1026
  required:
1227
1027
  - actionType
1228
1028
  - params
1229
1029
  - context
1230
- description: 动作执行请求(ActionExecuteRequest
1030
+ description: 动作执行请求(ActionExecuteDto
1231
1031
  properties:
1232
1032
  actionType:
1233
1033
  type: string
1234
- enum:
1235
- - claim
1236
- - signin
1237
- - lottery
1238
- - reserve
1239
- - bind
1240
- - task_complete
1241
- - vote
1242
- - share
1243
- - form_submit
1244
- - navigate
1245
- - setState
1246
- - showToast
1247
- - refreshData
1248
- - custom
1249
- description: 动作类型(ActionType | string)
1034
+ description: 动作类型
1035
+ example: claim
1250
1036
  actionDefinitionVersionId:
1251
1037
  type: string
1252
- description: 动作定义版本 ID(可选,不提供则使用最新稳定版,UniqueId)
1038
+ description: 动作定义版本 ID(不提供则使用最新稳定版)
1253
1039
  params:
1254
1040
  type: object
1041
+ description: 动作参数
1255
1042
  additionalProperties: true
1256
- description: 动作参数(Record<string, JsonValue>)
1257
- context:
1258
- $ref: '#/components/schemas/ActionClientContext'
1259
- description: 客户端上下文(ActionClientContext,必填)
1043
+ example:
1044
+ couponId: '12345'
1045
+ quantity: 1
1046
+ default: {}
1260
1047
  idempotencyKey:
1261
1048
  type: string
1262
- minLength: 16
1263
- maxLength: 128
1264
- description: 幂等键(部分策略需要客户端提供,防重复提交)
1265
- ActionEffect:
1266
- type: object
1267
- required:
1268
- - type
1269
- properties:
1270
- type:
1271
- type: string
1272
- enum:
1273
- - setState
1274
- - navigate
1275
- - showToast
1276
- - refreshData
1277
- - openDialog
1278
- - closeDialog
1279
- - custom
1280
- description: 副作用类型
1281
- payload:
1282
- type: object
1283
- additionalProperties: true
1284
- description: 副作用参数
1049
+ description: 幂等键
1050
+ context:
1051
+ description: 客户端上下文
1052
+ allOf:
1053
+ - $ref: '#/components/schemas/ActionClientContext'
1285
1054
  ExecuteActionResponse:
1286
- allOf:
1287
- - $ref: '#/components/schemas/SuccessResponse'
1288
- - type: object
1289
- properties:
1290
- data:
1291
- type: object
1292
- properties:
1293
- actionId:
1294
- type: string
1295
- description: 动作执行 ID(UniqueId,用于审计追溯)
1296
- result:
1297
- description: 执行结果(泛型 T)
1298
- effects:
1299
- type: array
1300
- items:
1301
- $ref: '#/components/schemas/ActionEffect'
1302
- description: 副作用列表
1303
- errorCode:
1304
- type: string
1305
- description: 错误码(失败时)
1306
- errorMessage:
1307
- type: string
1308
- description: 错误消息(失败时,用户可见)
1309
- errorDetails:
1310
- type: object
1311
- additionalProperties: true
1312
- description: 错误详情(失败时,调试用)
1313
- requestId:
1314
- type: string
1315
- description: 请求 ID
1316
- traceId:
1317
- type: string
1318
- description: 链路追踪 ID
1319
- duration:
1320
- type: integer
1321
- description: 执行耗时(毫秒)
1322
- retryable:
1323
- type: boolean
1324
- description: 是否可重试
1325
- retryAfter:
1326
- type: integer
1327
- description: 建议重试延迟(毫秒)
1328
- riskDecision:
1329
- type: object
1330
- description: 风控决策(可选,风控拒绝时返回)
1331
- properties:
1332
- allowed:
1333
- type: boolean
1334
- description: 是否放行
1335
- reason:
1336
- type: string
1337
- description: 拒绝原因(如 RISK_BLOCKED)
1338
- code:
1339
- type: string
1340
- description: 风控错误码
1341
- IdempotencyConflictResponse:
1342
1055
  type: object
1343
1056
  required:
1344
1057
  - success
1345
- - data
1058
+ - requestId
1059
+ - traceId
1060
+ - actionId
1061
+ - duration
1062
+ description: 动作执行响应(ActionExecuteVo)
1346
1063
  properties:
1347
1064
  success:
1348
1065
  type: boolean
1349
- example: true
1066
+ description: 是否成功
1350
1067
  data:
1351
1068
  type: object
1352
- properties:
1353
- idempotent:
1354
- type: boolean
1355
- example: true
1356
- originalActionId:
1357
- type: string
1358
- description: 原始动作执行 ID
1359
- originalResult:
1360
- description: 原始执行结果
1361
- originalExecutedAt:
1362
- type: string
1363
- format: date-time
1364
- description: 原始执行时间
1069
+ description: 业务数据
1070
+ additionalProperties: true
1071
+ example:
1072
+ couponId: '12345'
1073
+ claimedAt: '2024-01-01T00:00:00Z'
1074
+ errorCode:
1075
+ type: string
1076
+ description: 错误码
1077
+ errorMessage:
1078
+ type: string
1079
+ description: 错误信息(用户可见)
1080
+ errorDetails:
1081
+ type: object
1082
+ description: 错误详情(调试用)
1083
+ additionalProperties: true
1084
+ requestId:
1085
+ type: string
1086
+ description: 请求 ID
1087
+ traceId:
1088
+ type: string
1089
+ description: 链路追踪 ID
1090
+ actionId:
1091
+ type: string
1092
+ description: 动作 ID(用于审计追溯)
1093
+ duration:
1094
+ type: number
1095
+ description: 执行耗时(毫秒)
1096
+ retryable:
1097
+ type: boolean
1098
+ description: 是否可重试
1099
+ retryAfter:
1100
+ type: number
1101
+ description: 建议重试延迟(毫秒)
1365
1102
  ValidateActionRequest:
1366
1103
  type: object
1367
1104
  required:
1368
- - actionType
1105
+ - actionDefinitionVersionId
1369
1106
  - params
1107
+ description: 动作参数验证请求(ActionValidateDto)
1370
1108
  properties:
1371
- actionType:
1372
- type: string
1373
- description: 动作类型
1374
1109
  actionDefinitionVersionId:
1375
1110
  type: string
1376
1111
  description: 动作定义版本 ID
1377
1112
  params:
1378
1113
  type: object
1114
+ description: 待验证参数
1379
1115
  additionalProperties: true
1380
- description: 待验证的参数
1116
+ example:
1117
+ couponId: '12345'
1118
+ quantity: 1
1119
+ default: {}
1381
1120
  ValidateActionResponse:
1382
1121
  type: object
1383
1122
  required:
1384
- - data
1123
+ - valid
1124
+ description: 动作参数验证响应(ActionValidateVo)
1385
1125
  properties:
1386
- data:
1387
- type: object
1388
- required:
1389
- - valid
1390
- properties:
1391
- valid:
1392
- type: boolean
1393
- description: 是否有效
1394
- errors:
1395
- type: array
1396
- items:
1397
- type: object
1398
- properties:
1399
- path:
1400
- type: string
1401
- description: 参数路径
1402
- message:
1403
- type: string
1404
- description: 错误消息
1405
- code:
1406
- type: string
1407
- description: 错误码
1408
- description: 验证错误
1409
- ActionDefinitionResponse:
1126
+ valid:
1127
+ type: boolean
1128
+ description: 是否通过校验
1129
+ errors:
1130
+ description: 校验错误列表
1131
+ type: array
1132
+ items:
1133
+ type: string
1134
+ ActionDefinitionVersionResponse:
1410
1135
  type: object
1411
1136
  required:
1412
- - data
1137
+ - uid
1138
+ - definitionUid
1139
+ - versionNumber
1140
+ - spec
1141
+ - status
1142
+ - createdBy
1143
+ - createdByUsername
1144
+ - createdAt
1145
+ description: 动作定义版本响应(ActionDefinitionVersionVo)
1413
1146
  properties:
1414
- data:
1147
+ uid:
1148
+ type: string
1149
+ description: 版本 UID
1150
+ example: 202401efgh87654321
1151
+ definitionUid:
1152
+ type: string
1153
+ description: 所属定义 UID
1154
+ example: 202401abcd12345678
1155
+ versionNumber:
1156
+ type: number
1157
+ description: 版本号(递增)
1158
+ example: 1
1159
+ versionLabel:
1160
+ type: string
1161
+ nullable: true
1162
+ description: 版本标签(可选,如 v1.0.0)
1163
+ example: v1.0.0
1164
+ description:
1165
+ type: string
1166
+ nullable: true
1167
+ description: 版本描述
1168
+ spec:
1169
+ description: 规格快照(不可变的 ActionSpec)
1415
1170
  type: object
1416
- properties:
1417
- actionDefinitionVersionId:
1418
- type: string
1419
- actionType:
1420
- type: string
1421
- name:
1422
- type: string
1423
- paramsSchema:
1424
- type: object
1425
- description: 参数 JSON Schema
1426
- resultSchema:
1427
- type: object
1428
- description: 结果 JSON Schema
1171
+ additionalProperties: true
1172
+ status:
1173
+ type: string
1174
+ description: 版本状态
1175
+ enum:
1176
+ - draft
1177
+ - stable
1178
+ - deprecated
1179
+ - blocked
1180
+ example: stable
1181
+ createdBy:
1182
+ type: string
1183
+ description: 创建者 UID
1184
+ example: 202401user1234
1185
+ createdByUsername:
1186
+ type: string
1187
+ description: 创建者用户名
1188
+ example: admin
1189
+ createdAt:
1190
+ type: string
1191
+ format: date-time
1192
+ description: 创建时间
1429
1193
  QueryContext:
1430
1194
  type: object
1431
- description: 数据查询上下文(DataQueryRequest.context
1195
+ description: 数据查询上下文(DataQueryContextDto
1432
1196
  properties:
1197
+ uid:
1198
+ type: string
1199
+ description: 用户 UID
1433
1200
  pageVersionId:
1434
1201
  type: string
1435
- description: 页面版本 ID(UniqueId)
1202
+ description: 页面版本 ID
1436
1203
  componentVersionId:
1437
1204
  type: string
1438
- description: 组件版本 ID(UniqueId,可选)
1205
+ description: 组件版本 ID
1439
1206
  QueryDataRequest:
1440
1207
  type: object
1441
1208
  required:
1442
1209
  - queryVersionId
1443
- description: 数据查询请求(DataQueryRequest
1210
+ description: 数据查询请求(DataQueryDto
1444
1211
  properties:
1445
1212
  queryVersionId:
1446
1213
  type: string
1447
- description: 查询定义版本 ID(UniqueId)
1214
+ description: 查询版本 ID
1448
1215
  params:
1449
1216
  type: object
1217
+ description: 查询参数
1450
1218
  additionalProperties: true
1451
- description: 查询参数(Record<string, JsonValue>)
1452
- cacheControl:
1453
- type: object
1454
- description: 缓存策略覆盖
1455
- properties:
1456
- noCache:
1457
- type: boolean
1458
- description: 是否跳过缓存
1459
- forceRefresh:
1460
- type: boolean
1461
- description: 强制刷新缓存
1462
1219
  context:
1463
- $ref: '#/components/schemas/QueryContext'
1464
- description: 客户端上下文(可选)
1465
- QueryDataResponse:
1466
- allOf:
1467
- - $ref: '#/components/schemas/SuccessResponse'
1468
- - type: object
1469
- properties:
1470
- data:
1471
- description: 查询结果数据(泛型 T)
1472
- errorCode:
1473
- type: string
1474
- description: 错误码(失败时)
1475
- errorMessage:
1476
- type: string
1477
- description: 错误消息(失败时)
1478
- fromCache:
1479
- type: boolean
1480
- description: 是否来自缓存
1481
- cachedAt:
1482
- type: string
1483
- format: date-time
1484
- description: 缓存时间戳(ISODateTime)
1485
- age:
1486
- type: integer
1487
- description: 数据新鲜度(秒)
1488
- requestId:
1489
- type: string
1490
- description: 请求 ID
1491
- traceId:
1492
- type: string
1493
- description: 链路追踪 ID
1494
- duration:
1495
- type: integer
1496
- description: 查询耗时(毫秒)
1497
- degraded:
1498
- type: boolean
1499
- description: 是否为降级数据
1500
- degradedReason:
1501
- type: string
1502
- description: 降级原因
1503
- BatchQueryRequest:
1220
+ description: 上下文
1221
+ allOf:
1222
+ - $ref: '#/components/schemas/QueryContext'
1223
+ QueryMetadata:
1504
1224
  type: object
1505
- required:
1506
- - queries
1225
+ description: 查询元数据(DataQueryMetadataVo)
1507
1226
  properties:
1508
- queries:
1509
- type: array
1510
- items:
1511
- type: object
1512
- required:
1513
- - queryVersionId
1514
- properties:
1515
- queryVersionId:
1516
- type: string
1517
- params:
1518
- type: object
1519
- alias:
1520
- type: string
1521
- description: 查询别名(用于结果映射)
1522
- maxItems: 20
1523
- description: 查询列表(最多 20 个)
1524
- context:
1525
- $ref: '#/components/schemas/QueryContext'
1526
- BatchQueryResponse:
1227
+ fromCache:
1228
+ type: boolean
1229
+ description: 是否来自缓存
1230
+ duration:
1231
+ type: number
1232
+ description: 查询耗时(毫秒)
1233
+ QueryDataResponse:
1527
1234
  type: object
1528
1235
  required:
1529
1236
  - success
1530
- - data
1237
+ description: 数据查询响应(DataQueryVo)
1531
1238
  properties:
1532
1239
  success:
1533
1240
  type: boolean
1241
+ description: 是否成功
1534
1242
  data:
1535
1243
  type: object
1536
- additionalProperties:
1537
- type: object
1538
- properties:
1539
- success:
1540
- type: boolean
1541
- data:
1542
- description: 查询结果
1543
- error:
1544
- type: object
1545
- properties:
1546
- code:
1547
- type: string
1548
- message:
1549
- type: string
1550
- description: 按 alias 或 queryVersionId 索引的结果
1551
- QueryDefinitionResponse:
1244
+ description: 数据
1245
+ additionalProperties: true
1246
+ errorCode:
1247
+ type: string
1248
+ description: 错误码
1249
+ errorMessage:
1250
+ type: string
1251
+ description: 错误消息
1252
+ metadata:
1253
+ description: 元数据
1254
+ allOf:
1255
+ - $ref: '#/components/schemas/QueryMetadata'
1256
+ BatchQueryItemRequest:
1552
1257
  type: object
1553
1258
  required:
1554
- - data
1259
+ - queryVersionId
1260
+ description: 批量查询项(DataQueryBatchItemDto)
1555
1261
  properties:
1556
- data:
1262
+ queryVersionId:
1263
+ type: string
1264
+ description: 查询版本 ID
1265
+ params:
1557
1266
  type: object
1558
- properties:
1559
- queryVersionId:
1560
- type: string
1561
- name:
1562
- type: string
1563
- paramsSchema:
1564
- type: object
1565
- description: 参数 JSON Schema
1566
- resultSchema:
1567
- type: object
1568
- description: 结果 JSON Schema
1569
- cacheTtl:
1570
- type: integer
1571
- description: 缓存 TTL(秒)
1572
- PublicActivityInfo:
1267
+ description: 查询参数
1268
+ additionalProperties: true
1269
+ BatchQueryRequest:
1573
1270
  type: object
1574
1271
  required:
1575
- - id
1272
+ - queries
1273
+ description: 批量查询请求(DataQueryBatchDto)
1274
+ properties:
1275
+ queries:
1276
+ description: 查询列表
1277
+ type: array
1278
+ items:
1279
+ $ref: '#/components/schemas/BatchQueryItemRequest'
1280
+ BatchQueryResponse:
1281
+ type: object
1282
+ required:
1283
+ - results
1284
+ description: 批量查询响应(DataQueryBatchVo)
1285
+ properties:
1286
+ results:
1287
+ description: 各查询结果列表
1288
+ type: array
1289
+ items:
1290
+ $ref: '#/components/schemas/QueryDataResponse'
1291
+ QueryDefinitionResponse:
1292
+ type: object
1293
+ required:
1294
+ - uid
1295
+ - queryUid
1296
+ - versionNumber
1297
+ - spec
1298
+ - status
1299
+ description: 查询定义响应(DataQueryDefinitionVo)
1300
+ properties:
1301
+ uid:
1302
+ type: string
1303
+ description: 版本 UID
1304
+ example: 202401efgh87654321
1305
+ queryUid:
1306
+ type: string
1307
+ description: 所属查询 UID
1308
+ example: 202401abcd12345678
1309
+ versionNumber:
1310
+ type: number
1311
+ description: 版本号(递增)
1312
+ example: 1
1313
+ versionLabel:
1314
+ type: string
1315
+ nullable: true
1316
+ description: 版本标签(可选,如 v1.0.0)
1317
+ example: v1.0.0
1318
+ spec:
1319
+ description: 规格快照(不可变的 DataQuerySpec)
1320
+ type: object
1321
+ additionalProperties: true
1322
+ status:
1323
+ type: string
1324
+ description: 版本状态
1325
+ enum:
1326
+ - draft
1327
+ - stable
1328
+ - deprecated
1329
+ - blocked
1330
+ example: stable
1331
+ ActivityInfoData:
1332
+ type: object
1333
+ required:
1334
+ - activityId
1576
1335
  - name
1577
1336
  - type
1578
- - status
1337
+ - startAt
1338
+ - endAt
1339
+ description: 活动信息数据(ActivityInfoDataVo)
1579
1340
  properties:
1580
- id:
1341
+ activityId:
1581
1342
  type: string
1582
1343
  description: 活动 ID
1583
1344
  name:
@@ -1585,655 +1346,625 @@ components:
1585
1346
  description: 活动名称
1586
1347
  type:
1587
1348
  type: string
1588
- enum:
1589
- - claim
1590
- - signin
1591
- - lottery
1592
- - reserve
1593
- - task
1594
- - vote
1595
- - share
1596
- - bind
1597
- - custom
1598
1349
  description: 活动类型
1599
- status:
1350
+ startAt:
1600
1351
  type: string
1601
- enum:
1602
- - active
1603
- - ended
1604
- description: 活动状态
1605
- description:
1606
- type: string
1607
- description: 活动描述
1608
- startTime:
1609
- type: string
1610
- format: date-time
1611
1352
  description: 开始时间
1612
- endTime:
1613
- type: string
1614
1353
  format: date-time
1354
+ endAt:
1355
+ type: string
1615
1356
  description: 结束时间
1616
- rules:
1617
- type: object
1618
- additionalProperties: true
1619
- description: 活动规则(公开部分)
1620
- rewards:
1621
- type: array
1622
- items:
1623
- type: object
1624
- properties:
1625
- name:
1626
- type: string
1627
- description:
1628
- type: string
1629
- icon:
1630
- type: string
1631
- description: 奖励列表
1632
- UserActivityState:
1357
+ format: date-time
1358
+ ActivityInfoResponse:
1633
1359
  type: object
1634
1360
  required:
1635
- - activityId
1636
- - userId
1637
- - activityType
1638
- - canParticipate
1639
- - typeState
1640
- description: 用户活动状态(UserActivityState,根据 types/src/activity/index.ts)
1361
+ - success
1362
+ - data
1363
+ description: 活动信息响应(ActivityInfoVo)
1641
1364
  properties:
1642
- activityId:
1365
+ success:
1366
+ type: boolean
1367
+ description: 是否成功
1368
+ data:
1369
+ description: 活动数据
1370
+ allOf:
1371
+ - $ref: '#/components/schemas/ActivityInfoData'
1372
+ ActivityStatusResponse:
1373
+ type: object
1374
+ description: 活动状态响应
1375
+ properties:
1376
+ activityUid:
1643
1377
  type: string
1644
- description: 活动 ID(UniqueId)
1645
- userId:
1378
+ description: 活动 UID
1379
+ name:
1646
1380
  type: string
1647
- description: 用户 ID
1648
- activityType:
1381
+ description: 活动名称
1382
+ type:
1649
1383
  type: string
1384
+ description: 活动类型
1650
1385
  enum:
1651
1386
  - claim
1652
1387
  - signin
1653
- - lottery
1654
- - reserve
1655
- - task
1656
- - vote
1657
- - share
1658
- - bind
1659
- - custom
1660
- description: 活动类型(ActivityType)
1661
- canParticipate:
1388
+ isInProgress:
1662
1389
  type: boolean
1663
- description: 是否可参与
1664
- notParticipateReason:
1390
+ description: 是否进行中
1391
+ startAt:
1665
1392
  type: string
1666
- description: 不可参与原因
1667
- remainingCount:
1668
- type: integer
1669
- description: 剩余参与次数
1670
- typeState:
1671
- type: object
1672
- description: 类型特定状态(ClaimState | SigninState | LotteryState)
1673
- oneOf:
1674
- - type: object
1675
- required:
1676
- - type
1677
- - claimed
1678
- properties:
1679
- type:
1680
- type: string
1681
- enum:
1682
- - claim
1683
- claimed:
1684
- type: boolean
1685
- claimedAt:
1686
- type: string
1687
- format: date-time
1688
- claimedPrizeId:
1689
- type: string
1690
- availablePrizes:
1691
- type: array
1692
- items:
1693
- type: object
1694
- properties:
1695
- prizeId:
1696
- type: string
1697
- name:
1698
- type: string
1699
- stock:
1700
- type: integer
1701
- - type: object
1702
- required:
1703
- - type
1704
- - signedToday
1705
- - consecutiveDays
1706
- - totalDays
1707
- - cycleRecords
1708
- - makeupAvailable
1709
- properties:
1710
- type:
1711
- type: string
1712
- enum:
1713
- - signin
1714
- signedToday:
1715
- type: boolean
1716
- todaySignedAt:
1717
- type: string
1718
- format: date-time
1719
- consecutiveDays:
1720
- type: integer
1721
- totalDays:
1722
- type: integer
1723
- cycleRecords:
1724
- type: array
1725
- items:
1726
- type: object
1727
- properties:
1728
- dayKey:
1729
- type: string
1730
- signed:
1731
- type: boolean
1732
- isMakeup:
1733
- type: boolean
1734
- makeupAvailable:
1735
- type: integer
1736
- nextReward:
1737
- type: object
1738
- properties:
1739
- type:
1740
- type: string
1741
- enum:
1742
- - consecutive
1743
- - cumulative
1744
- daysNeeded:
1745
- type: integer
1746
- reward:
1747
- type: object
1748
- additionalProperties: true
1749
- - type: object
1750
- required:
1751
- - type
1752
- - freeDrawsRemaining
1753
- - todayDrawCount
1754
- - totalDrawCount
1755
- properties:
1756
- type:
1757
- type: string
1758
- enum:
1759
- - lottery
1760
- freeDrawsRemaining:
1761
- type: integer
1762
- todayDrawCount:
1763
- type: integer
1764
- totalDrawCount:
1765
- type: integer
1766
- pityProgress:
1767
- type: object
1768
- properties:
1769
- current:
1770
- type: integer
1771
- target:
1772
- type: integer
1773
- resources:
1774
- type: array
1775
- items:
1776
- type: object
1777
- properties:
1778
- type:
1779
- type: string
1780
- amount:
1781
- type: integer
1782
- SigninCalendar:
1393
+ description: 开始时间
1394
+ endAt:
1395
+ type: string
1396
+ description: 结束时间
1397
+ SigninCalendarData:
1783
1398
  type: object
1784
1399
  required:
1785
- - year
1400
+ - activityId
1786
1401
  - month
1787
- - records
1402
+ - signedDates
1403
+ - consecutiveDays
1404
+ - totalDays
1405
+ description: 签到日历数据(SigninCalendarDataVo)
1788
1406
  properties:
1789
- year:
1790
- type: integer
1791
- description: 年份
1407
+ activityId:
1408
+ type: string
1409
+ description: 活动 ID
1792
1410
  month:
1793
- type: integer
1794
- minimum: 1
1795
- maximum: 12
1796
- description: 月份
1797
- records:
1411
+ type: string
1412
+ description: 月份(YYYY-MM)
1413
+ example: 2024-01
1414
+ signedDates:
1415
+ description: 已签到日期列表
1416
+ example:
1417
+ - '2024-01-01'
1418
+ - '2024-01-02'
1798
1419
  type: array
1799
1420
  items:
1800
- type: object
1801
- properties:
1802
- day:
1803
- type: integer
1804
- minimum: 1
1805
- maximum: 31
1806
- signedIn:
1807
- type: boolean
1808
- reward:
1809
- type: object
1810
- properties:
1811
- name:
1812
- type: string
1813
- amount:
1814
- type: number
1815
- description: 签到记录
1421
+ type: string
1816
1422
  consecutiveDays:
1817
- type: integer
1423
+ type: number
1818
1424
  description: 连续签到天数
1819
1425
  totalDays:
1820
- type: integer
1821
- description: 本月签到总天数
1822
- ClaimRecordInfo:
1426
+ type: number
1427
+ description: 累计签到天数
1428
+ SigninCalendarResponse:
1823
1429
  type: object
1824
1430
  required:
1825
- - id
1826
- - rewardType
1827
- - status
1828
- - createdAt
1431
+ - success
1432
+ - data
1433
+ description: 签到日历响应(SigninCalendarVo)
1829
1434
  properties:
1830
- id:
1831
- type: string
1832
- description: 记录 ID
1833
- activityId:
1834
- type: string
1835
- description: 活动 ID
1836
- rewardType:
1837
- type: string
1838
- description: 奖励类型
1839
- rewardName:
1840
- type: string
1841
- description: 奖励名称
1842
- rewardValue:
1435
+ success:
1436
+ type: boolean
1437
+ description: 是否成功
1438
+ data:
1439
+ description: 日历数据
1440
+ allOf:
1441
+ - $ref: '#/components/schemas/SigninCalendarData'
1442
+ CursorPaginationMeta:
1443
+ type: object
1444
+ description: 游标分页元数据(PageRecordsMetaVo)
1445
+ properties:
1446
+ pageSize:
1843
1447
  type: number
1844
- description: 奖励值
1845
- status:
1846
- type: string
1847
- enum:
1848
- - pending
1849
- - claimed
1850
- - expired
1851
- description: 领取状态
1852
- createdAt:
1853
- type: string
1854
- format: date-time
1855
- description: 创建时间
1856
- claimedAt:
1857
- type: string
1858
- format: date-time
1859
- description: 领取时间
1860
- expiresAt:
1448
+ description: 每页条数
1449
+ pageToken:
1861
1450
  type: string
1862
- format: date-time
1863
- description: 过期时间
1864
- PaginationMeta:
1451
+ description: 下一页游标
1452
+ PaginatedRecordsResponse:
1865
1453
  type: object
1866
1454
  required:
1867
- - page
1868
- - pageSize
1869
- - total
1870
- - totalPages
1871
- - hasNext
1872
- - hasPrev
1873
- description: 分页元数据(PaginationMeta)
1455
+ - success
1456
+ - data
1457
+ description: 分页记录响应(PaginatedRecordsVo)
1874
1458
  properties:
1875
- page:
1876
- type: integer
1877
- minimum: 1
1878
- description: 当前页码
1879
- pageSize:
1880
- type: integer
1881
- minimum: 1
1882
- maximum: 100
1883
- description: 每页数量
1884
- total:
1885
- type: integer
1886
- minimum: 0
1887
- description: 总记录数
1888
- totalPages:
1889
- type: integer
1890
- minimum: 0
1891
- description: 总页数
1892
- hasNext:
1893
- type: boolean
1894
- description: 是否有下一页
1895
- hasPrev:
1459
+ success:
1896
1460
  type: boolean
1897
- description: 是否有上一页
1898
- LotteryRecordInfo:
1461
+ description: 是否成功
1462
+ data:
1463
+ type: array
1464
+ description: 记录列表
1465
+ items:
1466
+ type: object
1467
+ meta:
1468
+ description: 分页元数据
1469
+ allOf:
1470
+ - $ref: '#/components/schemas/CursorPaginationMeta'
1471
+ ClaimStatusResponse:
1899
1472
  type: object
1900
1473
  required:
1901
- - id
1902
- - prizeId
1903
- - status
1904
- - createdAt
1474
+ - activityUid
1475
+ - hasClaimed
1476
+ - remainingCount
1477
+ - totalCount
1478
+ description: 领取状态响应(ClaimStatusVo)
1905
1479
  properties:
1906
- id:
1907
- type: string
1908
- description: 记录 ID
1909
- activityId:
1480
+ activityUid:
1910
1481
  type: string
1911
- description: 活动 ID
1912
- prizeId:
1913
- type: string
1914
- description: 奖品 ID
1915
- prizeName:
1916
- type: string
1917
- description: 奖品名称
1918
- prizeType:
1482
+ description: 活动 UID
1483
+ hasClaimed:
1484
+ type: boolean
1485
+ description: 是否已领取
1486
+ claimedAt:
1919
1487
  type: string
1920
- enum:
1921
- - physical
1922
- - virtual
1923
- - coupon
1924
- - points
1925
- - none
1926
- description: 奖品类型
1927
- status:
1488
+ description: 领取时间
1489
+ remainingCount:
1490
+ type: number
1491
+ description: 剩余领取次数
1492
+ totalCount:
1493
+ type: number
1494
+ description: 总领取次数
1495
+ RewardInfo:
1496
+ type: object
1497
+ required:
1498
+ - type
1499
+ - value
1500
+ - description
1501
+ description: 奖励信息(RewardInfoVo)
1502
+ properties:
1503
+ type:
1928
1504
  type: string
1929
- enum:
1930
- - won
1931
- - notWon
1932
- - claimed
1933
- - shipped
1934
- description: 状态
1935
- createdAt:
1505
+ description: 奖励类型
1506
+ value:
1507
+ type: number
1508
+ description: 奖励值
1509
+ description:
1936
1510
  type: string
1937
- format: date-time
1938
- description: 抽奖时间
1939
- claimedAt:
1511
+ description: 奖励描述
1512
+ MilestoneInfo:
1513
+ type: object
1514
+ required:
1515
+ - days
1516
+ - reward
1517
+ description: 里程碑信息(MilestoneInfoVo)
1518
+ properties:
1519
+ days:
1520
+ type: number
1521
+ description: 目标天数
1522
+ reward:
1523
+ description: 里程碑奖励
1524
+ allOf:
1525
+ - $ref: '#/components/schemas/RewardInfo'
1526
+ SigninStatusResponse:
1527
+ type: object
1528
+ required:
1529
+ - activityUid
1530
+ - hasSignedToday
1531
+ - consecutiveDays
1532
+ - totalDays
1533
+ - signedDates
1534
+ description: 签到状态响应(SigninStatusVo)
1535
+ properties:
1536
+ activityUid:
1940
1537
  type: string
1941
- format: date-time
1942
- description: 领取时间
1943
- TrackRequest:
1538
+ description: 活动 UID
1539
+ hasSignedToday:
1540
+ type: boolean
1541
+ description: 今日是否已签到
1542
+ consecutiveDays:
1543
+ type: number
1544
+ description: 连续签到天数
1545
+ totalDays:
1546
+ type: number
1547
+ description: 累计签到天数
1548
+ signedDates:
1549
+ description: 签到日期列表
1550
+ type: array
1551
+ items:
1552
+ type: string
1553
+ todayReward:
1554
+ description: 今日奖励
1555
+ allOf:
1556
+ - $ref: '#/components/schemas/RewardInfo'
1557
+ nextMilestone:
1558
+ description: 下一个里程碑
1559
+ allOf:
1560
+ - $ref: '#/components/schemas/MilestoneInfo'
1561
+ TrackEvent:
1944
1562
  type: object
1945
1563
  required:
1564
+ - eventType
1946
1565
  - eventName
1566
+ description: 埋点事件(TrackEventDto)
1947
1567
  properties:
1948
- eventName:
1949
- type: string
1950
- minLength: 1
1951
- maxLength: 255
1952
- description: 事件名称
1953
1568
  eventType:
1954
1569
  type: string
1955
- enum:
1956
- - page_view
1957
- - click
1958
- - exposure
1959
- - custom
1960
- default: custom
1961
1570
  description: 事件类型
1571
+ eventName:
1572
+ type: string
1573
+ description: 事件名称
1962
1574
  properties:
1963
1575
  type: object
1964
- additionalProperties: true
1965
1576
  description: 事件属性
1966
1577
  timestamp:
1578
+ type: number
1579
+ description: 事件时间戳(毫秒)
1580
+ TrackContext:
1581
+ type: object
1582
+ description: 埋点上下文(TrackContextDto)
1583
+ properties:
1584
+ uid:
1967
1585
  type: string
1968
- format: date-time
1969
- description: 事件时间(默认为服务器接收时间)
1586
+ description: 用户 UID
1587
+ pageVersionId:
1588
+ type: string
1589
+ description: 页面版本 ID
1590
+ componentVersionId:
1591
+ type: string
1592
+ description: 组件版本 ID
1593
+ deviceId:
1594
+ type: string
1595
+ description: 设备 ID
1596
+ sessionId:
1597
+ type: string
1598
+ description: 会话 ID
1599
+ appId:
1600
+ type: string
1601
+ description: 应用 ID
1602
+ TrackSingleRequest:
1603
+ type: object
1604
+ required:
1605
+ - event
1606
+ description: 单个埋点请求(TrackSingleDto)
1607
+ properties:
1608
+ event:
1609
+ description: 事件
1610
+ allOf:
1611
+ - $ref: '#/components/schemas/TrackEvent'
1970
1612
  context:
1613
+ description: 上下文
1614
+ allOf:
1615
+ - $ref: '#/components/schemas/TrackContext'
1616
+ TrackSingleResponse:
1617
+ type: object
1618
+ required:
1619
+ - success
1620
+ - data
1621
+ description: 单个埋点响应(TrackSingleResponseVo)
1622
+ properties:
1623
+ success:
1624
+ type: boolean
1625
+ description: 是否成功
1626
+ data:
1971
1627
  type: object
1628
+ required:
1629
+ - eventId
1972
1630
  properties:
1973
- pageVersionId:
1631
+ eventId:
1974
1632
  type: string
1975
- componentVersionId:
1976
- type: string
1977
- sessionId:
1978
- type: string
1979
- deviceType:
1980
- type: string
1981
- traceId:
1982
- type: string
1983
- description: 上下文信息
1633
+ description: 事件 ID
1984
1634
  TrackBatchRequest:
1985
1635
  type: object
1986
1636
  required:
1987
1637
  - events
1638
+ description: 批量埋点请求(TrackBatchDto)
1988
1639
  properties:
1989
1640
  events:
1641
+ description: 事件列表
1990
1642
  type: array
1991
1643
  items:
1992
- $ref: '#/components/schemas/TrackRequest'
1993
- maxItems: 100
1994
- description: 事件列表(最多 100 个)
1995
- TenantInfo:
1644
+ $ref: '#/components/schemas/TrackEvent'
1645
+ context:
1646
+ description: 上下文
1647
+ allOf:
1648
+ - $ref: '#/components/schemas/TrackContext'
1649
+ TrackBatchError:
1650
+ type: object
1651
+ required:
1652
+ - index
1653
+ - reason
1654
+ description: 批量埋点错误(TrackBatchErrorVo)
1655
+ properties:
1656
+ index:
1657
+ type: number
1658
+ description: 错误索引
1659
+ reason:
1660
+ type: string
1661
+ description: 错误原因
1662
+ TrackBatchResponse:
1663
+ type: object
1664
+ required:
1665
+ - success
1666
+ - data
1667
+ description: 批量埋点响应(TrackBatchResponseVo)
1668
+ properties:
1669
+ success:
1670
+ type: boolean
1671
+ description: 是否成功
1672
+ data:
1673
+ type: object
1674
+ required:
1675
+ - accepted
1676
+ - rejected
1677
+ - errors
1678
+ properties:
1679
+ accepted:
1680
+ type: number
1681
+ description: 接受的事件数量
1682
+ rejected:
1683
+ type: number
1684
+ description: 拒绝的事件数量
1685
+ errors:
1686
+ description: 错误列表
1687
+ type: array
1688
+ items:
1689
+ $ref: '#/components/schemas/TrackBatchError'
1690
+ ResolveTenantRequest:
1691
+ type: object
1692
+ description: 租户解析请求(TenantResolveDto)
1693
+ properties:
1694
+ appKey:
1695
+ type: string
1696
+ description: 应用 Key
1697
+ host:
1698
+ type: string
1699
+ description: 主机/域名
1700
+ channel:
1701
+ type: string
1702
+ description: 渠道
1703
+ ResolveTenantData:
1996
1704
  type: object
1997
1705
  required:
1998
1706
  - appId
1999
- - appName
1707
+ - name
2000
1708
  - status
1709
+ - type
1710
+ description: 租户解析数据(TenantResolveDataVo)
2001
1711
  properties:
2002
1712
  appId:
2003
1713
  type: string
2004
1714
  description: 应用 ID
2005
- appName:
1715
+ name:
2006
1716
  type: string
2007
- description: 应用名称
1717
+ description: 租户名称
2008
1718
  status:
2009
1719
  type: string
2010
- enum:
2011
- - active
2012
- - suspended
2013
- - disabled
2014
- description: 应用状态
2015
- workspaceId:
2016
- type: string
2017
- description: 工作空间 ID
2018
- cdnDomain:
2019
- type: string
2020
- format: uri
2021
- description: CDN 域名
2022
- apiDomain:
2023
- type: string
2024
- format: uri
2025
- description: API 域名
2026
- TenantConfig:
1720
+ description: 租户状态
1721
+ example: active
1722
+ type:
1723
+ type: string
1724
+ description: 租户类型
1725
+ example: standard
1726
+ logo:
1727
+ type: string
1728
+ description: 租户 Logo URL
1729
+ config:
1730
+ type: object
1731
+ description: 租户配置
1732
+ additionalProperties: true
1733
+ channel:
1734
+ type: string
1735
+ description: 渠道
1736
+ domain:
1737
+ type: string
1738
+ description: 自定义域名
1739
+ ResolveTenantResponse:
1740
+ type: object
1741
+ required:
1742
+ - success
1743
+ - data
1744
+ description: 租户解析响应(TenantResolveVo)
1745
+ properties:
1746
+ success:
1747
+ type: boolean
1748
+ description: 是否成功
1749
+ data:
1750
+ description: 租户数据
1751
+ allOf:
1752
+ - $ref: '#/components/schemas/ResolveTenantData'
1753
+ TenantConfigData:
2027
1754
  type: object
1755
+ required:
1756
+ - appId
1757
+ - status
1758
+ description: 租户配置数据(TenantConfigDataVo)
2028
1759
  properties:
2029
- features:
1760
+ appId:
1761
+ type: string
1762
+ description: 应用 ID
1763
+ status:
1764
+ type: string
1765
+ description: 租户状态
1766
+ example: active
1767
+ featureFlags:
2030
1768
  type: object
1769
+ description: 功能开关
2031
1770
  additionalProperties:
2032
1771
  type: boolean
2033
- description: 功能开关
2034
1772
  theme:
2035
1773
  type: object
2036
- additionalProperties: true
2037
1774
  description: 主题配置
2038
- cdnDomain:
2039
- type: string
2040
- format: uri
2041
- description: CDN 域名
2042
- runtimeVersion:
1775
+ additionalProperties: true
1776
+ cdnBase:
2043
1777
  type: string
2044
- description: 推荐的 Runtime 版本
1778
+ description: CDN 基地址
2045
1779
  blockedComponents:
1780
+ description: 阻断组件列表
2046
1781
  type: array
2047
1782
  items:
2048
- type: object
2049
- properties:
2050
- componentType:
2051
- type: string
2052
- version:
2053
- type: string
2054
- reason:
2055
- type: string
2056
- description: 阻断的组件列表
1783
+ type: string
2057
1784
  killSwitch:
2058
- type: object
2059
- properties:
2060
- enabled:
2061
- type: boolean
2062
- pageIds:
2063
- type: array
2064
- items:
2065
- type: string
2066
- description: 被 Kill 的页面 ID 列表
2067
- fallbackUrl:
2068
- type: string
2069
- format: uri
2070
- description: Kill Switch 配置
2071
- HealthResponse:
1785
+ type: boolean
1786
+ description: 全局 killSwitch
1787
+ TenantConfigResponse:
1788
+ type: object
1789
+ required:
1790
+ - success
1791
+ - data
1792
+ description: 租户配置响应(TenantConfigVo)
1793
+ properties:
1794
+ success:
1795
+ type: boolean
1796
+ description: 是否成功
1797
+ data:
1798
+ description: 配置数据
1799
+ allOf:
1800
+ - $ref: '#/components/schemas/TenantConfigData'
1801
+ HealthCheckResponse:
2072
1802
  type: object
2073
1803
  required:
2074
1804
  - status
2075
- - version
1805
+ - timestamp
1806
+ description: 健康检查响应(HealthCheckVo)
2076
1807
  properties:
2077
1808
  status:
2078
1809
  type: string
2079
- enum:
2080
- - healthy
2081
- - degraded
2082
- - unhealthy
2083
1810
  description: 服务状态
2084
- version:
2085
- type: string
2086
- description: 服务版本
2087
- uptime:
2088
- type: integer
2089
- description: 运行时间(秒)
1811
+ example: healthy
2090
1812
  timestamp:
2091
1813
  type: string
2092
- format: date-time
2093
- description: 检查时间
2094
- dependencies:
1814
+ description: 响应时间戳
1815
+ example: '2026-02-04T12:00:00.000Z'
1816
+ LivenessResponse:
1817
+ type: object
1818
+ required:
1819
+ - status
1820
+ description: 存活检查响应(LivenessVo)
1821
+ properties:
1822
+ status:
1823
+ type: string
1824
+ description: 服务状态
1825
+ example: alive
1826
+ HealthCheckItem:
1827
+ type: object
1828
+ description: 健康检查项
1829
+ properties:
1830
+ status:
1831
+ type: string
1832
+ description: 检查状态
1833
+ message:
1834
+ type: string
1835
+ description: 检查消息
1836
+ ReadinessResponse:
1837
+ type: object
1838
+ required:
1839
+ - status
1840
+ - checks
1841
+ description: 就绪检查响应(ReadinessVo)
1842
+ properties:
1843
+ status:
1844
+ type: string
1845
+ description: 服务状态
1846
+ example: ready
1847
+ checks:
2095
1848
  type: object
1849
+ description: 各检查项状态
2096
1850
  additionalProperties:
2097
- type: object
2098
- properties:
2099
- status:
2100
- type: string
2101
- enum:
2102
- - healthy
2103
- - degraded
2104
- - unhealthy
2105
- latency:
2106
- type: integer
2107
- description: 延迟(毫秒)
2108
- message:
2109
- type: string
2110
- description: 依赖服务状态
2111
- ComponentManifest:
1851
+ $ref: '#/components/schemas/HealthCheckItem'
1852
+ example:
1853
+ database:
1854
+ status: healthy
1855
+ message: Connection OK
1856
+ redis:
1857
+ status: healthy
1858
+ message: Connection OK
1859
+ SuccessResponse:
2112
1860
  type: object
2113
1861
  required:
2114
- - componentType
2115
- - version
2116
- - entryUrl
1862
+ - success
1863
+ - code
1864
+ - message
1865
+ - data
1866
+ - timestamp
1867
+ - path
1868
+ description: 成功响应(BaseResponseVo)
2117
1869
  properties:
2118
- componentType:
1870
+ success:
1871
+ type: boolean
1872
+ description: 请求是否成功
1873
+ example: true
1874
+ code:
2119
1875
  type: string
2120
- description: 组件类型
2121
- version:
1876
+ description: 业务状态码
1877
+ example: OK
1878
+ message:
2122
1879
  type: string
2123
- description: 组件版本
2124
- entryUrl:
1880
+ description: 响应消息
1881
+ example: 操作成功
1882
+ data:
1883
+ type: object
1884
+ description: 响应数据
1885
+ timestamp:
1886
+ type: number
1887
+ description: 响应时间戳
1888
+ example: 1702300000000
1889
+ path:
2125
1890
  type: string
2126
- format: uri
2127
- description: 组件入口 URL
2128
- styleUrl:
1891
+ description: 请求路径
1892
+ example: /api/users
1893
+ requestId:
2129
1894
  type: string
2130
- format: uri
2131
- description: 样式文件 URL
2132
- integrity:
1895
+ description: 请求ID
1896
+ example: uuid-string
1897
+ traceId:
2133
1898
  type: string
2134
- description: SRI 完整性哈希
2135
- blocked:
1899
+ description: 链路追踪ID(用于全链路定位问题)
1900
+ example: trace-uuid-string
1901
+ PaginationMeta:
1902
+ type: object
1903
+ required:
1904
+ - page
1905
+ - pageSize
1906
+ - total
1907
+ - totalPages
1908
+ - hasNext
1909
+ - hasPrevious
1910
+ description: 分页元数据(PageMetaVo)
1911
+ properties:
1912
+ page:
1913
+ type: number
1914
+ description: 当前页码
1915
+ example: 1
1916
+ pageSize:
1917
+ type: number
1918
+ description: 每页条数
1919
+ example: 10
1920
+ total:
1921
+ type: number
1922
+ description: 总条数
1923
+ example: 100
1924
+ totalPages:
1925
+ type: number
1926
+ description: 总页数
1927
+ example: 10
1928
+ hasNext:
2136
1929
  type: boolean
2137
- description: 是否被阻断
2138
- fallback:
2139
- type: string
2140
- description: 降级组件类型
2141
- ActionManifest:
1930
+ description: 是否有下一页
1931
+ example: true
1932
+ hasPrevious:
1933
+ type: boolean
1934
+ description: 是否有上一页
1935
+ example: false
1936
+ ActivityStatus:
2142
1937
  type: object
2143
1938
  required:
2144
- - actionId
2145
- - actionDefinitionVersionId
1939
+ - activityUid
1940
+ - name
1941
+ - type
1942
+ - isInProgress
1943
+ - startAt
1944
+ - endAt
1945
+ description: 活动状态(ActivityStatusVo)
2146
1946
  properties:
2147
- actionId:
1947
+ activityUid:
2148
1948
  type: string
2149
- description: 动作 ID
2150
- actionDefinitionVersionId:
1949
+ description: 活动 UID
1950
+ name:
2151
1951
  type: string
2152
- description: 动作定义版本 ID
2153
- actionType:
1952
+ description: 活动名称
1953
+ type:
2154
1954
  type: string
1955
+ description: 活动类型
2155
1956
  enum:
2156
1957
  - claim
2157
1958
  - signin
2158
- - lottery
2159
- - reserve
2160
- - bind
2161
- - task_complete
2162
- - vote
2163
- - share
2164
- - form_submit
2165
- - navigate
2166
- - setState
2167
- - showToast
2168
- - refreshData
2169
- - custom
2170
- description: 动作类型
2171
- builtin:
1959
+ isInProgress:
2172
1960
  type: boolean
2173
- description: 是否内置动作
2174
- QueryManifest:
2175
- type: object
2176
- required:
2177
- - queryId
2178
- - queryVersionId
2179
- properties:
2180
- queryId:
1961
+ description: 是否进行中
1962
+ startAt:
2181
1963
  type: string
2182
- description: 查询 ID
2183
- queryVersionId:
1964
+ description: 开始时间
1965
+ endAt:
2184
1966
  type: string
2185
- description: 查询定义版本 ID
2186
- cacheTtl:
2187
- type: integer
2188
- description: 缓存 TTL(秒)
2189
- PageResponse:
2190
- allOf:
2191
- - $ref: '#/components/schemas/SuccessResponse'
2192
- - type: object
2193
- properties:
2194
- data:
2195
- type: object
2196
- required:
2197
- - pageId
2198
- - version
2199
- - meta
2200
- properties:
2201
- pageId:
2202
- type: string
2203
- description: 页面 ID
2204
- version:
2205
- type: string
2206
- description: 页面版本
2207
- meta:
2208
- type: object
2209
- properties:
2210
- title:
2211
- type: string
2212
- description: 页面标题
2213
- description:
2214
- type: string
2215
- description: 页面描述
2216
- integrity:
2217
- type: string
2218
- description: 完整性哈希
2219
- ResourceManifests:
2220
- type: object
2221
- properties:
2222
- components:
2223
- type: array
2224
- items:
2225
- $ref: '#/components/schemas/ComponentManifest'
2226
- description: 组件资源清单
2227
- actions:
2228
- type: array
2229
- items:
2230
- $ref: '#/components/schemas/ActionManifest'
2231
- description: 动作资源清单
2232
- queries:
2233
- type: array
2234
- items:
2235
- $ref: '#/components/schemas/QueryManifest'
2236
- description: 查询资源清单
1967
+ description: 结束时间
2237
1968
  responses:
2238
1969
  BadRequest:
2239
1970
  description: 请求参数错误
@@ -2291,59 +2022,59 @@ components:
2291
2022
  timestamp: 1702300000000
2292
2023
  path: /api/user/pages/resolve
2293
2024
  requestId: uuid-string
2294
- Forbidden:
2295
- description: 无权限
2025
+ TooManyRequests:
2026
+ description: 请求过于频繁
2296
2027
  content:
2297
2028
  application/json:
2298
2029
  schema:
2299
2030
  $ref: '#/components/schemas/ErrorResponse'
2300
2031
  example:
2301
2032
  success: false
2302
- code: PERMISSION_DENIED
2303
- message: 无访问权限
2033
+ code: RISK_RATE_LIMITED
2034
+ message: 请求过于频繁,请稍后再试
2304
2035
  timestamp: 1702300000000
2305
- path: /api/user/pages/resolve
2036
+ path: /api/user/actions/execute
2306
2037
  requestId: uuid-string
2307
- UnprocessableEntity:
2308
- description: 请求无法处理
2038
+ InternalError:
2039
+ description: 服务器内部错误
2309
2040
  content:
2310
2041
  application/json:
2311
2042
  schema:
2312
2043
  $ref: '#/components/schemas/ErrorResponse'
2313
2044
  example:
2314
2045
  success: false
2315
- code: BUSINESS_ACTIVITY_NOT_STARTED
2316
- message: 参数验证失败
2046
+ code: SYSTEM_INTERNAL_ERROR
2047
+ message: 服务器内部错误
2317
2048
  timestamp: 1702300000000
2318
- path: /api/user/actions/execute
2049
+ path: /api/user/pages/resolve
2319
2050
  requestId: uuid-string
2320
- TooManyRequests:
2321
- description: 请求过于频繁
2051
+ traceId: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
2052
+ Forbidden:
2053
+ description: 无权限
2322
2054
  content:
2323
2055
  application/json:
2324
2056
  schema:
2325
2057
  $ref: '#/components/schemas/ErrorResponse'
2326
2058
  example:
2327
2059
  success: false
2328
- code: RISK_RATE_LIMITED
2329
- message: 请求过于频繁,请稍后再试
2060
+ code: PERMISSION_DENIED
2061
+ message: 无访问权限
2330
2062
  timestamp: 1702300000000
2331
- path: /api/user/actions/execute
2063
+ path: /api/user/pages/resolve
2332
2064
  requestId: uuid-string
2333
- InternalError:
2334
- description: 服务器内部错误
2065
+ UnprocessableEntity:
2066
+ description: 请求无法处理
2335
2067
  content:
2336
2068
  application/json:
2337
2069
  schema:
2338
2070
  $ref: '#/components/schemas/ErrorResponse'
2339
2071
  example:
2340
2072
  success: false
2341
- code: SYSTEM_INTERNAL_ERROR
2342
- message: 服务器内部错误
2073
+ code: BUSINESS_ACTIVITY_NOT_STARTED
2074
+ message: 参数验证失败
2343
2075
  timestamp: 1702300000000
2344
- path: /api/user/pages/resolve
2076
+ path: /api/user/actions/execute
2345
2077
  requestId: uuid-string
2346
- traceId: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
2347
2078
  GatewayTimeout:
2348
2079
  description: 网关超时
2349
2080
  content:
@@ -2362,7 +2093,7 @@ components:
2362
2093
  type: http
2363
2094
  scheme: bearer
2364
2095
  bearerFormat: JWT
2365
- description: JWT 认证令牌(可选)
2096
+ description: 请输入 JWT 访问令牌
2366
2097
  ApiKey:
2367
2098
  type: apiKey
2368
2099
  in: header