@djvlc/openapi-user-client 1.8.0 → 1.8.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.
@@ -1,534 +1,323 @@
1
1
  # Schema 组件索引
2
+ # 与 docs/user-api/openapi.yaml 保持一致
2
3
 
3
4
  # ============================================================================
4
- # 通用
5
- # ============================================================================
6
-
7
- # ============================================================================
8
- # 统一响应结构(与 platform 仓库保持一致)
5
+ # 统一响应结构
9
6
  # ============================================================================
10
7
 
11
8
  SuccessResponse:
12
9
  type: object
13
10
  required: [success, code, message, data, timestamp, path]
14
- description: 成功响应(ApiSuccessResponse,与 types/src/common/api.ts 保持一致)
11
+ description: 成功响应(BaseResponseVo)
15
12
  properties:
16
13
  success:
17
14
  type: boolean
18
- enum: [true]
15
+ description: 请求是否成功
19
16
  example: true
20
- description: 是否成功(固定为 true)
21
17
  code:
22
18
  type: string
23
- example: OK
24
19
  description: 业务状态码
20
+ example: OK
25
21
  message:
26
22
  type: string
27
- example: 操作成功
28
23
  description: 响应消息
24
+ example: 操作成功
29
25
  data:
30
- description: 响应数据(泛型 T)
26
+ type: object
27
+ description: 响应数据
31
28
  timestamp:
32
- type: integer
33
- format: int64
29
+ type: number
30
+ description: 响应时间戳
34
31
  example: 1702300000000
35
- description: 响应时间戳(Unix 毫秒时间戳,number)
36
32
  path:
37
33
  type: string
38
- example: /api/user/pages/resolve
39
34
  description: 请求路径
35
+ example: /api/users
40
36
  requestId:
41
37
  type: string
38
+ description: 请求ID
42
39
  example: uuid-string
43
- description: 请求 ID(可选)
40
+ traceId:
41
+ type: string
42
+ description: 链路追踪ID(用于全链路定位问题)
43
+ example: trace-uuid-string
44
44
 
45
45
  ErrorResponse:
46
46
  type: object
47
47
  required: [success, code, message, timestamp, path]
48
- description: 错误响应(ApiErrorResponse,与 types/src/common/api.ts 保持一致)
48
+ description: 错误响应(ErrorResponseVo)
49
49
  properties:
50
50
  success:
51
51
  type: boolean
52
- enum: [false]
52
+ description: 请求是否成功
53
53
  example: false
54
- description: 是否成功(固定为 false)
55
54
  code:
56
55
  type: string
57
- example: VALIDATION_INVALID_PARAMS
58
- description: 错误码(ErrorCode | string)
56
+ description: 错误码
57
+ example: USER_NOT_FOUND
59
58
  message:
60
59
  type: string
61
- example: 请求参数无效
62
- description: 错误消息(用户可读)
63
- data:
64
- type: object
65
- additionalProperties: true
66
- description: 错误详情(Record<string, unknown>,与 types ApiErrorResponse.data 一致)
60
+ description: 错误消息
61
+ example: 用户不存在
67
62
  timestamp:
68
- type: integer
69
- format: int64
63
+ type: number
64
+ description: 响应时间戳
70
65
  example: 1702300000000
71
- description: 响应时间戳(Unix 毫秒时间戳,number)
72
66
  path:
73
67
  type: string
74
- example: /api/user/pages/resolve
75
68
  description: 请求路径
69
+ example: /api/users/123
76
70
  requestId:
77
71
  type: string
72
+ description: 请求ID
78
73
  example: uuid-string
79
- description: 请求 ID(可选)
80
74
  traceId:
81
75
  type: string
82
- example: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
83
- description: 链路追踪 ID(可选,用于分布式追踪)
76
+ description: 链路追踪ID(用于全链路定位问题)
77
+ example: trace-uuid-string
84
78
 
85
79
  # ============================================================================
86
- # 页面相关
80
+ # 通用分页
87
81
  # ============================================================================
88
82
 
89
- PageResponse:
90
- allOf:
91
- - $ref: '#/SuccessResponse'
92
- - type: object
93
- properties:
94
- data:
95
- type: object
96
- required: [pageId, version, meta]
97
- properties:
98
- pageId:
99
- type: string
100
- description: 页面 ID
101
- version:
102
- type: string
103
- description: 页面版本
104
- meta:
105
- type: object
106
- properties:
107
- title:
108
- type: string
109
- description: 页面标题
110
- description:
111
- type: string
112
- description: 页面描述
113
- integrity:
114
- type: string
115
- description: 完整性哈希
83
+ PaginationMeta:
84
+ type: object
85
+ required: [page, pageSize, total, totalPages, hasNext, hasPrevious]
86
+ description: 分页元数据(PageMetaVo)
87
+ properties:
88
+ page:
89
+ type: number
90
+ description: 当前页码
91
+ example: 1
92
+ pageSize:
93
+ type: number
94
+ description: 每页条数
95
+ example: 10
96
+ total:
97
+ type: number
98
+ description: 总条数
99
+ example: 100
100
+ totalPages:
101
+ type: number
102
+ description: 总页数
103
+ example: 10
104
+ hasNext:
105
+ type: boolean
106
+ description: 是否有下一页
107
+ example: true
108
+ hasPrevious:
109
+ type: boolean
110
+ description: 是否有上一页
111
+ example: false
116
112
 
117
- ResolvePageResponse:
118
- allOf:
119
- - $ref: '#/SuccessResponse'
120
- - type: object
121
- properties:
122
- data:
123
- type: object
124
- required: [pageId, resolvedVersionId, cdnBase, snapshotUrl, manifestUrl, ops, etag, cacheTtlSeconds]
125
- properties:
126
- pageId:
127
- type: string
128
- description: 页面 ID(UniqueId)
129
- resolvedVersionId:
130
- type: string
131
- description: 解析后的页面版本 ID(考虑灰度/回滚后的实际版本,UniqueId)
132
- cdnBase:
133
- type: string
134
- format: uri
135
- description: CDN 基础地址
136
- snapshotUrl:
137
- type: string
138
- format: uri
139
- description: snapshot.json 的完整 URL
140
- manifestUrl:
141
- type: string
142
- format: uri
143
- description: manifest.json 的完整 URL
144
- ops:
145
- $ref: '#/OpsConfig'
146
- description: 运维配置(killSwitch、blockedComponents、flags)
147
- etag:
148
- type: string
149
- description: 内容哈希(用于缓存验证)
150
- cacheTtlSeconds:
151
- type: integer
152
- minimum: 0
153
- maximum: 300
154
- default: 30
155
- description: 缓存 TTL(秒),建议 10~30 秒
156
- traceId:
157
- type: string
158
- description: 链路追踪 ID(全链路透传,与 types 可观测原则一致)
159
- runtimeVersion:
160
- type: string
161
- pattern: '^\d+\.\d+\.\d+$'
162
- description: 运行时版本(SemVer,与 manifest.runtime.version 一致)
163
- rolloutMatch:
164
- type: object
165
- description: 灰度匹配信息(可选,用于调试)
166
- properties:
167
- strategyId:
168
- type: string
169
- description: 匹配的策略 ID
170
- strategyName:
171
- type: string
172
- description: 匹配的策略名称
173
- isDefault:
174
- type: boolean
175
- description: 是否使用默认版本
176
- snapshot:
177
- type: object
178
- description: 完整快照(仅当 includeSnapshot=1 时返回,CDN 失败保底使用)
179
- properties:
180
- page:
181
- type: object
182
- description: 页面 Schema(PageSnapshotPage)
183
- properties:
184
- schemaVersion:
185
- type: string
186
- pageId:
187
- type: string
188
- pageVersion:
189
- type: string
190
- pattern: '^\d+\.\d+\.\d+$'
191
- title:
192
- type: string
193
- initialState:
194
- type: object
195
- additionalProperties: true
196
- bindings:
197
- type: array
198
- items:
199
- type: object
200
- root:
201
- type: object
202
- config:
203
- type: object
204
- manifest:
205
- type: object
206
- description: 组件锁定清单(PageSnapshotManifest)
207
- properties:
208
- components:
209
- type: array
210
- items:
211
- type: object
212
- properties:
213
- name:
214
- type: string
215
- version:
216
- type: string
217
- pattern: '^\d+\.\d+\.\d+$'
218
- source:
219
- type: string
220
- enum: [bundled, remote]
221
- description: '组件来源:bundled = 内置组件,remote = 远程组件'
222
- integrity:
223
- type: string
224
- pattern: '^sha(256|384|512)-'
225
- assetsUrl:
226
- type: string
227
- format: uri
228
- description: 'CDN 资源基础 URL(source 为 remote 时必填)'
229
- entrypoints:
230
- type: object
231
- description: '入口点(source 为 remote 时必填)'
232
- properties:
233
- js:
234
- type: string
235
- css:
236
- type: string
237
- chunks:
238
- type: array
239
- items:
240
- type: string
241
- runtime:
242
- type: object
243
- properties:
244
- version:
245
- type: string
246
- pattern: '^\d+\.\d+\.\d+$'
247
- minVersion:
248
- type: string
249
- pattern: '^\d+\.\d+\.\d+$'
250
- definitionsDigest:
251
- type: object
252
- description: 绑定的 Definition 版本摘要(DefinitionsDigest)
253
- properties:
254
- actions:
255
- type: array
256
- items:
257
- type: object
258
- properties:
259
- id:
260
- type: string
261
- name:
262
- type: string
263
- versionId:
264
- type: string
265
- hash:
266
- type: string
267
- queries:
268
- type: array
269
- items:
270
- type: object
271
- properties:
272
- id:
273
- type: string
274
- name:
275
- type: string
276
- versionId:
277
- type: string
278
- hash:
279
- type: string
280
- meta:
281
- type: object
282
- description: 元数据(PageSnapshotMeta)
283
- properties:
284
- pageId:
285
- type: string
286
- pageVersionId:
287
- type: string
288
- publishId:
289
- type: string
290
- schemaVersion:
291
- type: string
292
- createdAt:
293
- type: string
294
- format: date-time
295
- createdBy:
296
- type: string
297
- contentHash:
298
- type: string
299
- bindings:
300
- type: object
301
- properties:
302
- componentVersions:
303
- type: array
304
- items:
305
- type: string
306
- definitionVersions:
307
- type: array
308
- items:
309
- type: string
310
- runtimeVersion:
311
- type: string
312
- pattern: '^\d+\.\d+\.\d+$'
313
- env:
314
- type: string
315
- enum: [preview, staging, prod]
113
+ CursorPaginationMeta:
114
+ type: object
115
+ description: 游标分页元数据(PageRecordsMetaVo)
116
+ properties:
117
+ pageSize:
118
+ type: number
119
+ description: 每页条数
120
+ pageToken:
121
+ type: string
122
+ description: 下一页游标
123
+
124
+ # ============================================================================
125
+ # 页面相关
126
+ # ============================================================================
316
127
 
317
- ResourceManifests:
128
+ ResolvePageResponse:
318
129
  type: object
130
+ required: [pageId, resolvedVersionId, cdnBase, snapshotUrl, manifestUrl, ops, etag, cacheTtlSeconds]
131
+ description: 页面解析响应(PageResolveResponseVo)
319
132
  properties:
320
- components:
321
- type: array
322
- items:
323
- $ref: '#/ComponentManifest'
324
- description: 组件资源清单
325
- actions:
326
- type: array
327
- items:
328
- $ref: '#/ActionManifest'
329
- description: 动作资源清单
330
- queries:
331
- type: array
332
- items:
333
- $ref: '#/QueryManifest'
334
- description: 查询资源清单
133
+ pageId:
134
+ type: string
135
+ description: 页面 ID
136
+ example: page_123456
137
+ resolvedVersionId:
138
+ type: string
139
+ description: 解析后的页面版本 ID
140
+ example: pv_20240101_abc
141
+ cdnBase:
142
+ type: string
143
+ description: CDN 基础 URL
144
+ example: https://cdn.example.com
145
+ snapshotUrl:
146
+ type: string
147
+ description: Snapshot URL
148
+ example: https://cdn.example.com/pages/page_123456/snapshot.json
149
+ manifestUrl:
150
+ type: string
151
+ description: Manifest URL
152
+ example: https://cdn.example.com/pages/page_123456/manifest.json
153
+ ops:
154
+ description: 运维配置
155
+ allOf:
156
+ - $ref: '#/OpsConfig'
157
+ etag:
158
+ type: string
159
+ description: ETag(用于缓存)
160
+ example: '"abc123"'
161
+ cacheTtlSeconds:
162
+ type: number
163
+ description: 缓存 TTL(秒)
164
+ example: 300
165
+ traceId:
166
+ type: string
167
+ description: 链路追踪 ID
168
+ runtimeVersion:
169
+ type: string
170
+ description: 运行时版本(SemVer)
171
+ example: 1.0.0
335
172
 
336
- ComponentManifest:
173
+ ManifestComponent:
337
174
  type: object
338
- required: [componentType, version, source]
175
+ required: [name, version, source, integrity]
176
+ description: 组件清单项(ManifestComponentSwaggerVo)
339
177
  properties:
340
- componentType:
178
+ name:
341
179
  type: string
342
- description: 组件类型
180
+ description: 组件名称(Custom Element 标签名)
181
+ example: djvlc-button
343
182
  version:
344
183
  type: string
345
- description: 组件版本
184
+ description: 版本号
185
+ example: 1.0.0
346
186
  source:
347
187
  type: string
188
+ description: 组件来源
348
189
  enum: [bundled, remote]
349
- description: '组件来源:bundled = 内置组件(随 Runtime 打包),remote = 远程组件(从 CDN 加载)'
350
- entryUrl:
190
+ entry:
351
191
  type: string
352
- format: uri
353
- description: '组件入口 URL(source 为 remote 时必填)'
354
- styleUrl:
192
+ description: 入口 URL(remote 组件必填)
193
+ styleEntry:
355
194
  type: string
356
- format: uri
357
- description: 样式文件 URL
195
+ description: 样式入口 URL
358
196
  integrity:
359
197
  type: string
360
198
  description: SRI 完整性哈希
361
- blocked:
362
- type: boolean
363
- description: 是否被阻断
364
- fallback:
365
- type: string
366
- description: 降级组件类型
367
-
368
- ActionManifest:
369
- type: object
370
- required: [actionId, actionDefinitionVersionId]
371
- properties:
372
- actionId:
373
- type: string
374
- description: 动作 ID
375
- actionDefinitionVersionId:
376
- type: string
377
- description: 动作定义版本 ID
378
- actionType:
379
- type: string
380
- enum: [claim, signin, lottery, reserve, bind, task_complete, vote, share, form_submit, navigate, setState, showToast, refreshData, custom]
381
- description: 动作类型
382
- builtin:
199
+ preload:
383
200
  type: boolean
384
- description: 是否内置动作
201
+ description: 是否预加载
385
202
 
386
- QueryManifest:
203
+ ManifestRuntime:
387
204
  type: object
388
- required: [queryId, queryVersionId]
205
+ required: [version, minVersion]
206
+ description: Runtime 版本信息(ManifestRuntimeVo)
389
207
  properties:
390
- queryId:
208
+ version:
391
209
  type: string
392
- description: 查询 ID
393
- queryVersionId:
210
+ description: 版本
211
+ example: 1.0.0
212
+ minVersion:
394
213
  type: string
395
- description: 查询定义版本 ID
396
- cacheTtl:
397
- type: integer
398
- description: 缓存 TTL(秒)
214
+ description: 最低兼容版本
215
+ example: 0.9.0
399
216
 
400
- # 与 types/page/snapshot.ts KillSwitchItem 对齐
401
- KillSwitchItem:
217
+ ManifestResponse:
402
218
  type: object
403
- required: [targetType, targetId, enabled]
404
- description: Kill-Switch 条目
219
+ required: [pageVersionId, manifestVersion, components, runtime]
220
+ description: 组件清单响应(ManifestSwaggerVo)
405
221
  properties:
406
- targetType:
407
- type: string
408
- enum: [action, component, feature, page, query]
409
- description: 目标类型
410
- targetId:
411
- type: string
412
- description: 目标 ID(actionType/componentName/featureKey/pageId/queryId)
413
- enabled:
414
- type: boolean
415
- description: 是否启用(true = 被关闭)
416
- reason:
417
- type: string
418
- description: 关闭原因
419
- enabledAt:
420
- type: string
421
- format: date-time
422
- description: 关闭时间(ISO8601)
423
- enabledBy:
222
+ pageVersionId:
424
223
  type: string
425
- description: 关闭操作者
426
- userMessage:
224
+ description: 页面版本 ID
225
+ manifestVersion:
427
226
  type: string
428
- description: 用户提示消息
227
+ description: 清单版本
228
+ components:
229
+ description: 组件列表
230
+ type: array
231
+ items:
232
+ $ref: '#/ManifestComponent'
233
+ runtime:
234
+ description: Runtime 版本
235
+ allOf:
236
+ - $ref: '#/ManifestRuntime'
429
237
 
430
- # 与 types/page/snapshot.ts BlockedComponentItem 对齐
431
- BlockedComponentItem:
238
+ BlockedComponent:
432
239
  type: object
433
- required: [name, reason]
434
- description: 被阻断的组件条目
240
+ required: [name, reason, blockedAt, blockedBy]
241
+ description: 被阻断的组件(BlockedComponentVo)
435
242
  properties:
436
243
  name:
437
244
  type: string
438
245
  description: 组件名称
439
246
  version:
440
247
  type: string
441
- pattern: '^\d+\.\d+\.\d+$'
442
- description: 组件版本(可选,不指定则阻断所有版本)
248
+ description: 组件版本(不填则阻断所有版本)
443
249
  reason:
444
250
  type: string
445
251
  description: 阻断原因
446
252
  blockedAt:
447
253
  type: string
448
- format: date-time
449
- description: 阻断时间(ISO8601)
254
+ description: 阻断时间
450
255
  blockedBy:
451
256
  type: string
452
- description: 阻断操作者
453
- fallbackVersion:
454
- type: string
455
- pattern: '^\d+\.\d+\.\d+$'
456
- description: 降级版本(可选)
457
- urgent:
257
+ description: 操作者
258
+
259
+ DegradeConfig:
260
+ type: object
261
+ required: [enabled, mode]
262
+ description: 降级配置(DegradeConfigVo)
263
+ properties:
264
+ enabled:
458
265
  type: boolean
459
- description: 是否紧急阻断
266
+ description: 是否启用降级
267
+ mode:
268
+ type: string
269
+ description: 降级模式
270
+ enum: [fallback, static, error]
271
+ message:
272
+ type: string
273
+ description: 降级消息
460
274
 
461
275
  OpsConfig:
462
276
  type: object
463
- description: 运维配置(运行时下发,与 types/page/snapshot.ts OpsConfig 对齐)
464
- required: [killSwitch, blockedComponents, flags]
277
+ required: [killSwitch, blockedComponents, blockedPages, featureFlags, degradeConfig]
278
+ description: 运维配置(OpsConfigVo)
465
279
  properties:
466
- configVersionId:
467
- type: string
468
- description: 配置版本 ID(用于缓存失效)
469
280
  killSwitch:
281
+ type: boolean
282
+ description: 全局 kill-switch
283
+ blockedComponents:
284
+ description: 被阻断的组件列表
470
285
  type: array
471
286
  items:
472
- $ref: '#/KillSwitchItem'
473
- description: Kill-Switch 列表(被紧急关闭的功能/动作)
474
- blockedComponents:
287
+ $ref: '#/BlockedComponent'
288
+ blockedPages:
289
+ description: 被阻断的页面列表
475
290
  type: array
476
291
  items:
477
- $ref: '#/BlockedComponentItem'
478
- description: 被阻断的组件列表
479
- flags:
292
+ type: string
293
+ featureFlags:
480
294
  type: object
295
+ description: 功能开关
481
296
  additionalProperties:
482
297
  type: boolean
483
- description: 功能开关(Feature Flags)
484
- expiresAt:
485
- type: string
486
- format: date-time
487
- description: 配置过期时间(ISO8601)
298
+ degradeConfig:
299
+ description: 降级配置
300
+ allOf:
301
+ - $ref: '#/DegradeConfig'
488
302
 
489
303
  # ============================================================================
490
304
  # Action Gateway 动作相关
491
305
  # ============================================================================
492
306
 
493
- ExecuteActionRequest:
494
- type: object
495
- required: [actionType, params, context]
496
- description: 动作执行请求(ActionExecuteRequest)
497
- properties:
498
- actionType:
499
- type: string
500
- enum: [claim, signin, lottery, reserve, bind, task_complete, vote, share, form_submit, navigate, setState, showToast, refreshData, custom]
501
- description: 动作类型(ActionType | string)
502
- actionDefinitionVersionId:
503
- type: string
504
- description: 动作定义版本 ID(可选,不提供则使用最新稳定版,UniqueId)
505
- params:
506
- type: object
507
- additionalProperties: true
508
- description: 动作参数(Record<string, JsonValue>)
509
- context:
510
- $ref: '#/ActionClientContext'
511
- description: 客户端上下文(ActionClientContext,必填)
512
- idempotencyKey:
513
- type: string
514
- minLength: 16
515
- maxLength: 128
516
- description: 幂等键(部分策略需要客户端提供,防重复提交)
517
-
518
307
  ActionClientContext:
519
308
  type: object
520
- description: 动作执行上下文(ActionClientContext,问题追溯必须字段)
521
309
  required: [pageVersionId]
310
+ description: 动作执行上下文(ActionContextDto)
522
311
  properties:
523
312
  pageVersionId:
524
313
  type: string
525
- description: 页面版本 ID(不可变,UniqueId)
314
+ description: 页面版本 ID
526
315
  componentVersionId:
527
316
  type: string
528
- description: 组件版本 ID(UniqueId)
317
+ description: 组件版本 ID
529
318
  componentInstanceId:
530
319
  type: string
531
- description: 组件实例 ID(UniqueId)
320
+ description: 组件实例 ID
532
321
  triggerEvent:
533
322
  type: string
534
323
  description: 触发事件名
@@ -537,477 +326,346 @@ ActionClientContext:
537
326
  description: 设备 ID
538
327
  channel:
539
328
  type: string
540
- description: 渠道标识
329
+ description: 渠道
541
330
  clientTimestamp:
542
331
  type: string
543
- format: date-time
544
- description: 客户端时间戳(ISODateTime)
332
+ description: 客户端时间戳(ISO 8601)
545
333
  extra:
546
334
  type: object
335
+ description: 扩展数据
547
336
  additionalProperties: true
548
- description: 扩展数据(Record<string, JsonValue>)
549
-
550
- ExecuteActionResponse:
551
- allOf:
552
- - $ref: '#/SuccessResponse'
553
- - type: object
554
- properties:
555
- data:
556
- type: object
557
- properties:
558
- actionId:
559
- type: string
560
- description: 动作执行 ID(UniqueId,用于审计追溯)
561
- result:
562
- description: 执行结果(泛型 T)
563
- effects:
564
- type: array
565
- items:
566
- $ref: '#/ActionEffect'
567
- description: 副作用列表
568
- errorCode:
569
- type: string
570
- description: 错误码(失败时)
571
- errorMessage:
572
- type: string
573
- description: 错误消息(失败时,用户可见)
574
- errorDetails:
575
- type: object
576
- additionalProperties: true
577
- description: 错误详情(失败时,调试用)
578
- requestId:
579
- type: string
580
- description: 请求 ID
581
- traceId:
582
- type: string
583
- description: 链路追踪 ID
584
- duration:
585
- type: integer
586
- description: 执行耗时(毫秒)
587
- retryable:
588
- type: boolean
589
- description: 是否可重试
590
- retryAfter:
591
- type: integer
592
- description: 建议重试延迟(毫秒)
593
- riskDecision:
594
- type: object
595
- description: 风控决策(可选,风控拒绝时返回)
596
- properties:
597
- allowed:
598
- type: boolean
599
- description: 是否放行
600
- reason:
601
- type: string
602
- description: 拒绝原因(如 RISK_BLOCKED)
603
- code:
604
- type: string
605
- description: 风控错误码
606
337
 
607
- ActionEffect:
338
+ ExecuteActionRequest:
608
339
  type: object
609
- required: [type]
340
+ required: [actionType, params, context]
341
+ description: 动作执行请求(ActionExecuteDto)
610
342
  properties:
611
- type:
343
+ actionType:
344
+ type: string
345
+ description: 动作类型
346
+ example: claim
347
+ actionDefinitionVersionId:
612
348
  type: string
613
- enum: [setState, navigate, showToast, refreshData, openDialog, closeDialog, custom]
614
- description: 副作用类型
615
- payload:
349
+ description: 动作定义版本 ID(不提供则使用最新稳定版)
350
+ params:
616
351
  type: object
352
+ description: 动作参数
617
353
  additionalProperties: true
618
- description: 副作用参数
354
+ example:
355
+ couponId: '12345'
356
+ quantity: 1
357
+ default: {}
358
+ idempotencyKey:
359
+ type: string
360
+ description: 幂等键
361
+ context:
362
+ description: 客户端上下文
363
+ allOf:
364
+ - $ref: '#/ActionClientContext'
619
365
 
620
- IdempotencyConflictResponse:
366
+ ExecuteActionResponse:
621
367
  type: object
622
- required: [success, data]
368
+ required: [success, requestId, traceId, actionId, duration]
369
+ description: 动作执行响应(ActionExecuteVo)
623
370
  properties:
624
371
  success:
625
372
  type: boolean
626
- example: true
373
+ description: 是否成功
627
374
  data:
628
375
  type: object
629
- properties:
630
- idempotent:
631
- type: boolean
632
- example: true
633
- originalActionId:
634
- type: string
635
- description: 原始动作执行 ID
636
- originalResult:
637
- description: 原始执行结果
638
- originalExecutedAt:
639
- type: string
640
- format: date-time
641
- description: 原始执行时间
376
+ description: 业务数据
377
+ additionalProperties: true
378
+ example:
379
+ couponId: '12345'
380
+ claimedAt: '2024-01-01T00:00:00Z'
381
+ errorCode:
382
+ type: string
383
+ description: 错误码
384
+ errorMessage:
385
+ type: string
386
+ description: 错误信息(用户可见)
387
+ errorDetails:
388
+ type: object
389
+ description: 错误详情(调试用)
390
+ additionalProperties: true
391
+ requestId:
392
+ type: string
393
+ description: 请求 ID
394
+ traceId:
395
+ type: string
396
+ description: 链路追踪 ID
397
+ actionId:
398
+ type: string
399
+ description: 动作 ID(用于审计追溯)
400
+ duration:
401
+ type: number
402
+ description: 执行耗时(毫秒)
403
+ retryable:
404
+ type: boolean
405
+ description: 是否可重试
406
+ retryAfter:
407
+ type: number
408
+ description: 建议重试延迟(毫秒)
642
409
 
643
410
  ValidateActionRequest:
644
411
  type: object
645
- required: [actionType, params]
412
+ required: [actionDefinitionVersionId, params]
413
+ description: 动作参数验证请求(ActionValidateDto)
646
414
  properties:
647
- actionType:
648
- type: string
649
- description: 动作类型
650
415
  actionDefinitionVersionId:
651
416
  type: string
652
417
  description: 动作定义版本 ID
653
418
  params:
654
419
  type: object
420
+ description: 待验证参数
655
421
  additionalProperties: true
656
- description: 待验证的参数
422
+ example:
423
+ couponId: '12345'
424
+ quantity: 1
425
+ default: {}
657
426
 
658
427
  ValidateActionResponse:
659
428
  type: object
660
- required: [data]
429
+ required: [valid]
430
+ description: 动作参数验证响应(ActionValidateVo)
661
431
  properties:
662
- data:
663
- type: object
664
- required: [valid]
665
- properties:
666
- valid:
667
- type: boolean
668
- description: 是否有效
669
- errors:
670
- type: array
671
- items:
672
- type: object
673
- properties:
674
- path:
675
- type: string
676
- description: 参数路径
677
- message:
678
- type: string
679
- description: 错误消息
680
- code:
681
- type: string
682
- description: 错误码
683
- description: 验证错误
432
+ valid:
433
+ type: boolean
434
+ description: 是否通过校验
435
+ errors:
436
+ description: 校验错误列表
437
+ type: array
438
+ items:
439
+ type: string
684
440
 
685
- ActionDefinitionResponse:
441
+ ActionDefinitionVersionResponse:
686
442
  type: object
687
- required: [data]
443
+ required: [uid, definitionUid, versionNumber, spec, status, createdBy, createdByUsername, createdAt]
444
+ description: 动作定义版本响应(ActionDefinitionVersionVo)
688
445
  properties:
689
- data:
446
+ uid:
447
+ type: string
448
+ description: 版本 UID
449
+ example: 202401efgh87654321
450
+ definitionUid:
451
+ type: string
452
+ description: 所属定义 UID
453
+ example: 202401abcd12345678
454
+ versionNumber:
455
+ type: number
456
+ description: 版本号(递增)
457
+ example: 1
458
+ versionLabel:
459
+ type: string
460
+ nullable: true
461
+ description: 版本标签(可选,如 v1.0.0)
462
+ example: v1.0.0
463
+ description:
464
+ type: string
465
+ nullable: true
466
+ description: 版本描述
467
+ spec:
468
+ description: 规格快照(不可变的 ActionSpec)
690
469
  type: object
691
- properties:
692
- actionDefinitionVersionId:
693
- type: string
694
- actionType:
695
- type: string
696
- name:
697
- type: string
698
- paramsSchema:
699
- type: object
700
- description: 参数 JSON Schema
701
- resultSchema:
702
- type: object
703
- description: 结果 JSON Schema
470
+ additionalProperties: true
471
+ status:
472
+ type: string
473
+ description: 版本状态
474
+ enum: [draft, stable, deprecated, blocked]
475
+ example: stable
476
+ createdBy:
477
+ type: string
478
+ description: 创建者 UID
479
+ example: 202401user1234
480
+ createdByUsername:
481
+ type: string
482
+ description: 创建者用户名
483
+ example: admin
484
+ createdAt:
485
+ type: string
486
+ format: date-time
487
+ description: 创建时间
704
488
 
705
489
  # ============================================================================
706
490
  # Data Proxy 查询相关
707
491
  # ============================================================================
708
492
 
493
+ QueryContext:
494
+ type: object
495
+ description: 数据查询上下文(DataQueryContextDto)
496
+ properties:
497
+ uid:
498
+ type: string
499
+ description: 用户 UID
500
+ pageVersionId:
501
+ type: string
502
+ description: 页面版本 ID
503
+ componentVersionId:
504
+ type: string
505
+ description: 组件版本 ID
506
+
709
507
  QueryDataRequest:
710
508
  type: object
711
509
  required: [queryVersionId]
712
- description: 数据查询请求(DataQueryRequest
510
+ description: 数据查询请求(DataQueryDto
713
511
  properties:
714
512
  queryVersionId:
715
513
  type: string
716
- description: 查询定义版本 ID(UniqueId)
514
+ description: 查询版本 ID
717
515
  params:
718
516
  type: object
517
+ description: 查询参数
719
518
  additionalProperties: true
720
- description: 查询参数(Record<string, JsonValue>)
721
- cacheControl:
722
- type: object
723
- description: 缓存策略覆盖
724
- properties:
725
- noCache:
726
- type: boolean
727
- description: 是否跳过缓存
728
- forceRefresh:
729
- type: boolean
730
- description: 强制刷新缓存
731
519
  context:
732
- $ref: '#/QueryContext'
733
- description: 客户端上下文(可选)
520
+ description: 上下文
521
+ allOf:
522
+ - $ref: '#/QueryContext'
734
523
 
735
- QueryContext:
524
+ QueryMetadata:
736
525
  type: object
737
- description: 数据查询上下文(DataQueryRequest.context
526
+ description: 查询元数据(DataQueryMetadataVo
738
527
  properties:
739
- pageVersionId:
740
- type: string
741
- description: 页面版本 ID(UniqueId)
742
- componentVersionId:
743
- type: string
744
- description: 组件版本 ID(UniqueId,可选)
528
+ fromCache:
529
+ type: boolean
530
+ description: 是否来自缓存
531
+ duration:
532
+ type: number
533
+ description: 查询耗时(毫秒)
745
534
 
746
535
  QueryDataResponse:
747
- allOf:
748
- - $ref: '#/SuccessResponse'
749
- - type: object
750
- properties:
751
- data:
752
- description: 查询结果数据(泛型 T)
753
- # 错误信息(失败时)
754
- errorCode:
755
- type: string
756
- description: 错误码(失败时)
757
- errorMessage:
758
- type: string
759
- description: 错误消息(失败时)
760
- # 缓存信息
761
- fromCache:
762
- type: boolean
763
- description: 是否来自缓存
764
- cachedAt:
765
- type: string
766
- format: date-time
767
- description: 缓存时间戳(ISODateTime)
768
- age:
769
- type: integer
770
- description: 数据新鲜度(秒)
771
- # 追踪信息
772
- requestId:
773
- type: string
774
- description: 请求 ID
775
- traceId:
776
- type: string
777
- description: 链路追踪 ID
778
- duration:
779
- type: integer
780
- description: 查询耗时(毫秒)
781
- # 降级信息
782
- degraded:
783
- type: boolean
784
- description: 是否为降级数据
785
- degradedReason:
786
- type: string
787
- description: 降级原因
788
-
789
- QueryDefinitionResponse:
790
536
  type: object
791
- required: [data]
537
+ required: [success]
538
+ description: 数据查询响应(DataQueryVo)
792
539
  properties:
540
+ success:
541
+ type: boolean
542
+ description: 是否成功
793
543
  data:
794
544
  type: object
795
- properties:
796
- queryVersionId:
797
- type: string
798
- name:
799
- type: string
800
- paramsSchema:
801
- type: object
802
- description: 参数 JSON Schema
803
- resultSchema:
804
- type: object
805
- description: 结果 JSON Schema
806
- cacheTtl:
807
- type: integer
808
- description: 缓存 TTL(秒)
545
+ description: 数据
546
+ additionalProperties: true
547
+ errorCode:
548
+ type: string
549
+ description: 错误码
550
+ errorMessage:
551
+ type: string
552
+ description: 错误消息
553
+ metadata:
554
+ description: 元数据
555
+ allOf:
556
+ - $ref: '#/QueryMetadata'
557
+
558
+ BatchQueryItemRequest:
559
+ type: object
560
+ required: [queryVersionId]
561
+ description: 批量查询项(DataQueryBatchItemDto)
562
+ properties:
563
+ queryVersionId:
564
+ type: string
565
+ description: 查询版本 ID
566
+ params:
567
+ type: object
568
+ description: 查询参数
569
+ additionalProperties: true
809
570
 
810
571
  BatchQueryRequest:
811
572
  type: object
812
573
  required: [queries]
574
+ description: 批量查询请求(DataQueryBatchDto)
813
575
  properties:
814
576
  queries:
577
+ description: 查询列表
815
578
  type: array
816
579
  items:
817
- type: object
818
- required: [queryVersionId]
819
- properties:
820
- queryVersionId:
821
- type: string
822
- params:
823
- type: object
824
- alias:
825
- type: string
826
- description: 查询别名(用于结果映射)
827
- maxItems: 20
828
- description: 查询列表(最多 20 个)
829
- context:
830
- $ref: '#/QueryContext'
580
+ $ref: '#/BatchQueryItemRequest'
831
581
 
832
582
  BatchQueryResponse:
833
583
  type: object
834
- required: [success, data]
584
+ required: [results]
585
+ description: 批量查询响应(DataQueryBatchVo)
835
586
  properties:
836
- success:
837
- type: boolean
838
- data:
839
- type: object
840
- additionalProperties:
841
- type: object
842
- properties:
843
- success:
844
- type: boolean
845
- data:
846
- description: 查询结果
847
- error:
848
- type: object
849
- properties:
850
- code:
851
- type: string
852
- message:
853
- type: string
854
- description: 按 alias 或 queryVersionId 索引的结果
855
-
856
- # ============================================================================
857
- # 通用分页
858
- # ============================================================================
587
+ results:
588
+ description: 各查询结果列表
589
+ type: array
590
+ items:
591
+ $ref: '#/QueryDataResponse'
859
592
 
860
- # 与 types/src/common/api.ts PaginationMeta 严格一致
861
- PaginationMeta:
593
+ QueryDefinitionResponse:
862
594
  type: object
863
- required: [page, pageSize, total, totalPages, hasNext, hasPrev]
864
- description: 分页元数据(PaginationMeta
595
+ required: [uid, queryUid, versionNumber, spec, status]
596
+ description: 查询定义响应(DataQueryDefinitionVo
865
597
  properties:
866
- page:
867
- type: integer
868
- minimum: 1
869
- description: 当前页码
870
- pageSize:
871
- type: integer
872
- minimum: 1
873
- maximum: 100
874
- description: 每页数量
875
- total:
876
- type: integer
877
- minimum: 0
878
- description: 总记录数
879
- totalPages:
880
- type: integer
881
- minimum: 0
882
- description: 总页数
883
- hasNext:
884
- type: boolean
885
- description: 是否有下一页
886
- hasPrev:
887
- type: boolean
888
- description: 是否有上一页
889
-
890
- # ============================================================================
891
- # Tenant 租户相关
892
- # ============================================================================
893
-
894
- TenantInfo:
895
- type: object
896
- required: [appId, appName, status]
897
- properties:
898
- appId:
899
- type: string
900
- description: 应用 ID
901
- appName:
902
- type: string
903
- description: 应用名称
904
- status:
598
+ uid:
905
599
  type: string
906
- enum: [active, suspended, disabled]
907
- description: 应用状态
908
- workspaceId:
600
+ description: 版本 UID
601
+ example: 202401efgh87654321
602
+ queryUid:
909
603
  type: string
910
- description: 工作空间 ID
911
- cdnDomain:
912
- type: string
913
- format: uri
914
- description: CDN 域名
915
- apiDomain:
916
- type: string
917
- format: uri
918
- description: API 域名
919
-
920
- TenantConfig:
921
- type: object
922
- properties:
923
- features:
924
- type: object
925
- additionalProperties:
926
- type: boolean
927
- description: 功能开关
928
- theme:
604
+ description: 所属查询 UID
605
+ example: 202401abcd12345678
606
+ versionNumber:
607
+ type: number
608
+ description: 版本号(递增)
609
+ example: 1
610
+ versionLabel:
611
+ type: string
612
+ nullable: true
613
+ description: 版本标签(可选,如 v1.0.0)
614
+ example: v1.0.0
615
+ spec:
616
+ description: 规格快照(不可变的 DataQuerySpec)
929
617
  type: object
930
618
  additionalProperties: true
931
- description: 主题配置
932
- cdnDomain:
933
- type: string
934
- format: uri
935
- description: CDN 域名
936
- runtimeVersion:
619
+ status:
937
620
  type: string
938
- description: 推荐的 Runtime 版本
939
- blockedComponents:
940
- type: array
941
- items:
942
- type: object
943
- properties:
944
- componentType:
945
- type: string
946
- version:
947
- type: string
948
- reason:
949
- type: string
950
- description: 阻断的组件列表
951
- killSwitch:
952
- type: object
953
- properties:
954
- enabled:
955
- type: boolean
956
- pageIds:
957
- type: array
958
- items:
959
- type: string
960
- description: 被 Kill 的页面 ID 列表
961
- fallbackUrl:
962
- type: string
963
- format: uri
964
- description: Kill Switch 配置
621
+ description: 版本状态
622
+ enum: [draft, stable, deprecated, blocked]
623
+ example: stable
965
624
 
966
625
  # ============================================================================
967
- # Health 健康检查相关
626
+ # Activity 活动相关
968
627
  # ============================================================================
969
628
 
970
- HealthResponse:
629
+ ActivityInfoData:
971
630
  type: object
972
- required: [status, version]
631
+ required: [activityId, name, type, startAt, endAt]
632
+ description: 活动信息数据(ActivityInfoDataVo)
973
633
  properties:
974
- status:
634
+ activityId:
975
635
  type: string
976
- enum: [healthy, degraded, unhealthy]
977
- description: 服务状态
978
- version:
636
+ description: 活动 ID
637
+ name:
979
638
  type: string
980
- description: 服务版本
981
- uptime:
982
- type: integer
983
- description: 运行时间(秒)
984
- timestamp:
639
+ description: 活动名称
640
+ type:
641
+ type: string
642
+ description: 活动类型
643
+ startAt:
985
644
  type: string
645
+ description: 开始时间
646
+ format: date-time
647
+ endAt:
648
+ type: string
649
+ description: 结束时间
986
650
  format: date-time
987
- description: 检查时间
988
- dependencies:
989
- type: object
990
- additionalProperties:
991
- type: object
992
- properties:
993
- status:
994
- type: string
995
- enum: [healthy, degraded, unhealthy]
996
- latency:
997
- type: integer
998
- description: 延迟(毫秒)
999
- message:
1000
- type: string
1001
- description: 依赖服务状态
1002
651
 
1003
- # ============================================================================
1004
- # Activity 用户活动相关
1005
- # ============================================================================
652
+ ActivityInfoResponse:
653
+ type: object
654
+ required: [success, data]
655
+ description: 活动信息响应(ActivityInfoVo)
656
+ properties:
657
+ success:
658
+ type: boolean
659
+ description: 是否成功
660
+ data:
661
+ description: 活动数据
662
+ allOf:
663
+ - $ref: '#/ActivityInfoData'
1006
664
 
1007
665
  ActivityStatus:
1008
666
  type: object
1009
667
  required: [activityUid, name, type, isInProgress, startAt, endAt]
1010
- description: 活动状态信息(与 docs ActivityStatusVo 对齐)
668
+ description: 活动状态(ActivityStatusVo
1011
669
  properties:
1012
670
  activityUid:
1013
671
  type: string
@@ -1024,334 +682,464 @@ ActivityStatus:
1024
682
  description: 是否进行中
1025
683
  startAt:
1026
684
  type: string
1027
- format: date-time
1028
- description: 开始时间(ISODateTime)
685
+ description: 开始时间
1029
686
  endAt:
1030
687
  type: string
1031
- format: date-time
1032
- description: 结束时间(ISODateTime)
688
+ description: 结束时间
1033
689
 
1034
- PublicActivityInfo:
690
+ ActivityStatusResponse:
1035
691
  type: object
1036
- required: [id, name, type, status]
692
+ description: 活动状态响应
1037
693
  properties:
1038
- id:
694
+ activityUid:
1039
695
  type: string
1040
- description: 活动 ID
696
+ description: 活动 UID
1041
697
  name:
1042
698
  type: string
1043
699
  description: 活动名称
1044
700
  type:
1045
701
  type: string
1046
- enum: [claim, signin, lottery, reserve, task, vote, share, bind, custom]
1047
702
  description: 活动类型
1048
- status:
1049
- type: string
1050
- enum: [active, ended]
1051
- description: 活动状态
1052
- description:
1053
- type: string
1054
- description: 活动描述
1055
- startTime:
703
+ enum: [claim, signin]
704
+ isInProgress:
705
+ type: boolean
706
+ description: 是否进行中
707
+ startAt:
1056
708
  type: string
1057
- format: date-time
1058
709
  description: 开始时间
1059
- endTime:
710
+ endAt:
1060
711
  type: string
1061
- format: date-time
1062
712
  description: 结束时间
1063
- rules:
1064
- type: object
1065
- additionalProperties: true
1066
- description: 活动规则(公开部分)
1067
- rewards:
1068
- type: array
1069
- items:
1070
- type: object
1071
- properties:
1072
- name:
1073
- type: string
1074
- description:
1075
- type: string
1076
- icon:
1077
- type: string
1078
- description: 奖励列表
1079
713
 
1080
- UserActivityState:
714
+ SigninCalendarData:
1081
715
  type: object
1082
- required: [activityId, userId, activityType, canParticipate, typeState]
1083
- description: 用户活动状态(UserActivityState,根据 types/src/activity/index.ts
716
+ required: [activityId, month, signedDates, consecutiveDays, totalDays]
717
+ description: 签到日历数据(SigninCalendarDataVo
1084
718
  properties:
1085
719
  activityId:
1086
720
  type: string
1087
- description: 活动 ID(UniqueId)
1088
- userId:
1089
- type: string
1090
- description: 用户 ID
1091
- activityType:
721
+ description: 活动 ID
722
+ month:
1092
723
  type: string
1093
- enum: [claim, signin, lottery, reserve, task, vote, share, bind, custom]
1094
- description: 活动类型(ActivityType)
1095
- canParticipate:
724
+ description: 月份(YYYY-MM)
725
+ example: '2024-01'
726
+ signedDates:
727
+ description: 已签到日期列表
728
+ example: ['2024-01-01', '2024-01-02']
729
+ type: array
730
+ items:
731
+ type: string
732
+ consecutiveDays:
733
+ type: number
734
+ description: 连续签到天数
735
+ totalDays:
736
+ type: number
737
+ description: 累计签到天数
738
+
739
+ SigninCalendarResponse:
740
+ type: object
741
+ required: [success, data]
742
+ description: 签到日历响应(SigninCalendarVo)
743
+ properties:
744
+ success:
1096
745
  type: boolean
1097
- description: 是否可参与
1098
- notParticipateReason:
1099
- type: string
1100
- description: 不可参与原因
1101
- remainingCount:
1102
- type: integer
1103
- description: 剩余参与次数
1104
- typeState:
1105
- type: object
1106
- description: 类型特定状态(ClaimState | SigninState | LotteryState)
1107
- oneOf:
1108
- - type: object
1109
- required: [type, claimed]
1110
- properties:
1111
- type:
1112
- type: string
1113
- enum: [claim]
1114
- claimed:
1115
- type: boolean
1116
- claimedAt:
1117
- type: string
1118
- format: date-time
1119
- claimedPrizeId:
1120
- type: string
1121
- availablePrizes:
1122
- type: array
1123
- items:
1124
- type: object
1125
- properties:
1126
- prizeId:
1127
- type: string
1128
- name:
1129
- type: string
1130
- stock:
1131
- type: integer
1132
- - type: object
1133
- required: [type, signedToday, consecutiveDays, totalDays, cycleRecords, makeupAvailable]
1134
- properties:
1135
- type:
1136
- type: string
1137
- enum: [signin]
1138
- signedToday:
1139
- type: boolean
1140
- todaySignedAt:
1141
- type: string
1142
- format: date-time
1143
- consecutiveDays:
1144
- type: integer
1145
- totalDays:
1146
- type: integer
1147
- cycleRecords:
1148
- type: array
1149
- items:
1150
- type: object
1151
- properties:
1152
- dayKey:
1153
- type: string
1154
- signed:
1155
- type: boolean
1156
- isMakeup:
1157
- type: boolean
1158
- makeupAvailable:
1159
- type: integer
1160
- nextReward:
1161
- type: object
1162
- properties:
1163
- type:
1164
- type: string
1165
- enum: [consecutive, cumulative]
1166
- daysNeeded:
1167
- type: integer
1168
- reward:
1169
- type: object
1170
- additionalProperties: true
1171
- - type: object
1172
- required: [type, freeDrawsRemaining, todayDrawCount, totalDrawCount]
1173
- properties:
1174
- type:
1175
- type: string
1176
- enum: [lottery]
1177
- freeDrawsRemaining:
1178
- type: integer
1179
- todayDrawCount:
1180
- type: integer
1181
- totalDrawCount:
1182
- type: integer
1183
- pityProgress:
1184
- type: object
1185
- properties:
1186
- current:
1187
- type: integer
1188
- target:
1189
- type: integer
1190
- resources:
1191
- type: array
1192
- items:
1193
- type: object
1194
- properties:
1195
- type:
1196
- type: string
1197
- amount:
1198
- type: integer
746
+ description: 是否成功
747
+ data:
748
+ description: 日历数据
749
+ allOf:
750
+ - $ref: '#/SigninCalendarData'
1199
751
 
1200
- SigninCalendar:
752
+ PaginatedRecordsResponse:
1201
753
  type: object
1202
- required: [year, month, records]
754
+ required: [success, data]
755
+ description: 分页记录响应(PaginatedRecordsVo)
1203
756
  properties:
1204
- year:
1205
- type: integer
1206
- description: 年份
1207
- month:
1208
- type: integer
1209
- minimum: 1
1210
- maximum: 12
1211
- description: 月份
1212
- records:
757
+ success:
758
+ type: boolean
759
+ description: 是否成功
760
+ data:
1213
761
  type: array
762
+ description: 记录列表
1214
763
  items:
1215
764
  type: object
1216
- properties:
1217
- day:
1218
- type: integer
1219
- minimum: 1
1220
- maximum: 31
1221
- signedIn:
1222
- type: boolean
1223
- reward:
1224
- type: object
1225
- properties:
1226
- name:
1227
- type: string
1228
- amount:
1229
- type: number
1230
- description: 签到记录
1231
- consecutiveDays:
1232
- type: integer
1233
- description: 连续签到天数
1234
- totalDays:
1235
- type: integer
1236
- description: 本月签到总天数
765
+ meta:
766
+ description: 分页元数据
767
+ allOf:
768
+ - $ref: '#/CursorPaginationMeta'
1237
769
 
1238
- ClaimRecordInfo:
770
+ RewardInfo:
1239
771
  type: object
1240
- required: [id, rewardType, status, createdAt]
772
+ required: [type, value, description]
773
+ description: 奖励信息(RewardInfoVo)
1241
774
  properties:
1242
- id:
1243
- type: string
1244
- description: 记录 ID
1245
- activityId:
1246
- type: string
1247
- description: 活动 ID
1248
- rewardType:
775
+ type:
1249
776
  type: string
1250
777
  description: 奖励类型
1251
- rewardName:
1252
- type: string
1253
- description: 奖励名称
1254
- rewardValue:
778
+ value:
1255
779
  type: number
1256
780
  description: 奖励值
1257
- status:
781
+ description:
1258
782
  type: string
1259
- enum: [pending, claimed, expired]
1260
- description: 领取状态
1261
- createdAt:
783
+ description: 奖励描述
784
+
785
+ MilestoneInfo:
786
+ type: object
787
+ required: [days, reward]
788
+ description: 里程碑信息(MilestoneInfoVo)
789
+ properties:
790
+ days:
791
+ type: number
792
+ description: 目标天数
793
+ reward:
794
+ description: 里程碑奖励
795
+ allOf:
796
+ - $ref: '#/RewardInfo'
797
+
798
+ ClaimStatusResponse:
799
+ type: object
800
+ required: [activityUid, hasClaimed, remainingCount, totalCount]
801
+ description: 领取状态响应(ClaimStatusVo)
802
+ properties:
803
+ activityUid:
1262
804
  type: string
1263
- format: date-time
1264
- description: 创建时间
805
+ description: 活动 UID
806
+ hasClaimed:
807
+ type: boolean
808
+ description: 是否已领取
1265
809
  claimedAt:
1266
810
  type: string
1267
- format: date-time
1268
811
  description: 领取时间
1269
- expiresAt:
1270
- type: string
1271
- format: date-time
1272
- description: 过期时间
812
+ remainingCount:
813
+ type: number
814
+ description: 剩余领取次数
815
+ totalCount:
816
+ type: number
817
+ description: 总领取次数
1273
818
 
1274
- LotteryRecordInfo:
819
+ SigninStatusResponse:
1275
820
  type: object
1276
- required: [id, prizeId, status, createdAt]
821
+ required: [activityUid, hasSignedToday, consecutiveDays, totalDays, signedDates]
822
+ description: 签到状态响应(SigninStatusVo)
1277
823
  properties:
1278
- id:
1279
- type: string
1280
- description: 记录 ID
1281
- activityId:
1282
- type: string
1283
- description: 活动 ID
1284
- prizeId:
1285
- type: string
1286
- description: 奖品 ID
1287
- prizeName:
1288
- type: string
1289
- description: 奖品名称
1290
- prizeType:
1291
- type: string
1292
- enum: [physical, virtual, coupon, points, none]
1293
- description: 奖品类型
1294
- status:
1295
- type: string
1296
- enum: [won, notWon, claimed, shipped]
1297
- description: 状态
1298
- createdAt:
1299
- type: string
1300
- format: date-time
1301
- description: 抽奖时间
1302
- claimedAt:
824
+ activityUid:
1303
825
  type: string
1304
- format: date-time
1305
- description: 领取时间
826
+ description: 活动 UID
827
+ hasSignedToday:
828
+ type: boolean
829
+ description: 今日是否已签到
830
+ consecutiveDays:
831
+ type: number
832
+ description: 连续签到天数
833
+ totalDays:
834
+ type: number
835
+ description: 累计签到天数
836
+ signedDates:
837
+ description: 签到日期列表
838
+ type: array
839
+ items:
840
+ type: string
841
+ todayReward:
842
+ description: 今日奖励
843
+ allOf:
844
+ - $ref: '#/RewardInfo'
845
+ nextMilestone:
846
+ description: 下一个里程碑
847
+ allOf:
848
+ - $ref: '#/MilestoneInfo'
1306
849
 
1307
850
  # ============================================================================
1308
851
  # Track 埋点相关
1309
852
  # ============================================================================
1310
853
 
1311
- TrackRequest:
854
+ TrackEvent:
1312
855
  type: object
1313
- required: [eventName]
856
+ required: [eventType, eventName]
857
+ description: 埋点事件(TrackEventDto)
1314
858
  properties:
1315
- eventName:
1316
- type: string
1317
- minLength: 1
1318
- maxLength: 255
1319
- description: 事件名称
1320
859
  eventType:
1321
860
  type: string
1322
- enum: [page_view, click, exposure, custom]
1323
- default: custom
1324
861
  description: 事件类型
862
+ eventName:
863
+ type: string
864
+ description: 事件名称
1325
865
  properties:
1326
866
  type: object
1327
- additionalProperties: true
1328
867
  description: 事件属性
1329
868
  timestamp:
869
+ type: number
870
+ description: 事件时间戳(毫秒)
871
+
872
+ TrackContext:
873
+ type: object
874
+ description: 埋点上下文(TrackContextDto)
875
+ properties:
876
+ uid:
1330
877
  type: string
1331
- format: date-time
1332
- description: 事件时间(默认为服务器接收时间)
878
+ description: 用户 UID
879
+ pageVersionId:
880
+ type: string
881
+ description: 页面版本 ID
882
+ componentVersionId:
883
+ type: string
884
+ description: 组件版本 ID
885
+ deviceId:
886
+ type: string
887
+ description: 设备 ID
888
+ sessionId:
889
+ type: string
890
+ description: 会话 ID
891
+ appId:
892
+ type: string
893
+ description: 应用 ID
894
+
895
+ TrackSingleRequest:
896
+ type: object
897
+ required: [event]
898
+ description: 单个埋点请求(TrackSingleDto)
899
+ properties:
900
+ event:
901
+ description: 事件
902
+ allOf:
903
+ - $ref: '#/TrackEvent'
1333
904
  context:
905
+ description: 上下文
906
+ allOf:
907
+ - $ref: '#/TrackContext'
908
+
909
+ TrackSingleResponse:
910
+ type: object
911
+ required: [success, data]
912
+ description: 单个埋点响应(TrackSingleResponseVo)
913
+ properties:
914
+ success:
915
+ type: boolean
916
+ description: 是否成功
917
+ data:
1334
918
  type: object
919
+ required: [eventId]
1335
920
  properties:
1336
- pageVersionId:
1337
- type: string
1338
- componentVersionId:
1339
- type: string
1340
- sessionId:
1341
- type: string
1342
- deviceType:
921
+ eventId:
1343
922
  type: string
1344
- traceId:
1345
- type: string
1346
- description: 上下文信息
923
+ description: 事件 ID
1347
924
 
1348
925
  TrackBatchRequest:
1349
926
  type: object
1350
927
  required: [events]
928
+ description: 批量埋点请求(TrackBatchDto)
1351
929
  properties:
1352
930
  events:
931
+ description: 事件列表
932
+ type: array
933
+ items:
934
+ $ref: '#/TrackEvent'
935
+ context:
936
+ description: 上下文
937
+ allOf:
938
+ - $ref: '#/TrackContext'
939
+
940
+ TrackBatchError:
941
+ type: object
942
+ required: [index, reason]
943
+ description: 批量埋点错误(TrackBatchErrorVo)
944
+ properties:
945
+ index:
946
+ type: number
947
+ description: 错误索引
948
+ reason:
949
+ type: string
950
+ description: 错误原因
951
+
952
+ TrackBatchResponse:
953
+ type: object
954
+ required: [success, data]
955
+ description: 批量埋点响应(TrackBatchResponseVo)
956
+ properties:
957
+ success:
958
+ type: boolean
959
+ description: 是否成功
960
+ data:
961
+ type: object
962
+ required: [accepted, rejected, errors]
963
+ properties:
964
+ accepted:
965
+ type: number
966
+ description: 接受的事件数量
967
+ rejected:
968
+ type: number
969
+ description: 拒绝的事件数量
970
+ errors:
971
+ description: 错误列表
972
+ type: array
973
+ items:
974
+ $ref: '#/TrackBatchError'
975
+
976
+ # ============================================================================
977
+ # Tenant 租户相关
978
+ # ============================================================================
979
+
980
+ ResolveTenantRequest:
981
+ type: object
982
+ description: 租户解析请求(TenantResolveDto)
983
+ properties:
984
+ appKey:
985
+ type: string
986
+ description: 应用 Key
987
+ host:
988
+ type: string
989
+ description: 主机/域名
990
+ channel:
991
+ type: string
992
+ description: 渠道
993
+
994
+ ResolveTenantData:
995
+ type: object
996
+ required: [appId, name, status, type]
997
+ description: 租户解析数据(TenantResolveDataVo)
998
+ properties:
999
+ appId:
1000
+ type: string
1001
+ description: 应用 ID
1002
+ name:
1003
+ type: string
1004
+ description: 租户名称
1005
+ status:
1006
+ type: string
1007
+ description: 租户状态
1008
+ example: active
1009
+ type:
1010
+ type: string
1011
+ description: 租户类型
1012
+ example: standard
1013
+ logo:
1014
+ type: string
1015
+ description: 租户 Logo URL
1016
+ config:
1017
+ type: object
1018
+ description: 租户配置
1019
+ additionalProperties: true
1020
+ channel:
1021
+ type: string
1022
+ description: 渠道
1023
+ domain:
1024
+ type: string
1025
+ description: 自定义域名
1026
+
1027
+ ResolveTenantResponse:
1028
+ type: object
1029
+ required: [success, data]
1030
+ description: 租户解析响应(TenantResolveVo)
1031
+ properties:
1032
+ success:
1033
+ type: boolean
1034
+ description: 是否成功
1035
+ data:
1036
+ description: 租户数据
1037
+ allOf:
1038
+ - $ref: '#/ResolveTenantData'
1039
+
1040
+ TenantConfigData:
1041
+ type: object
1042
+ required: [appId, status]
1043
+ description: 租户配置数据(TenantConfigDataVo)
1044
+ properties:
1045
+ appId:
1046
+ type: string
1047
+ description: 应用 ID
1048
+ status:
1049
+ type: string
1050
+ description: 租户状态
1051
+ example: active
1052
+ featureFlags:
1053
+ type: object
1054
+ description: 功能开关
1055
+ additionalProperties:
1056
+ type: boolean
1057
+ theme:
1058
+ type: object
1059
+ description: 主题配置
1060
+ additionalProperties: true
1061
+ cdnBase:
1062
+ type: string
1063
+ description: CDN 基地址
1064
+ blockedComponents:
1065
+ description: 阻断组件列表
1353
1066
  type: array
1354
1067
  items:
1355
- $ref: '#/TrackRequest'
1356
- maxItems: 100
1357
- description: 事件列表(最多 100 个)
1068
+ type: string
1069
+ killSwitch:
1070
+ type: boolean
1071
+ description: 全局 killSwitch
1072
+
1073
+ TenantConfigResponse:
1074
+ type: object
1075
+ required: [success, data]
1076
+ description: 租户配置响应(TenantConfigVo)
1077
+ properties:
1078
+ success:
1079
+ type: boolean
1080
+ description: 是否成功
1081
+ data:
1082
+ description: 配置数据
1083
+ allOf:
1084
+ - $ref: '#/TenantConfigData'
1085
+
1086
+ # ============================================================================
1087
+ # Health 健康检查相关
1088
+ # ============================================================================
1089
+
1090
+ HealthCheckResponse:
1091
+ type: object
1092
+ required: [status, timestamp]
1093
+ description: 健康检查响应(HealthCheckVo)
1094
+ properties:
1095
+ status:
1096
+ type: string
1097
+ description: 服务状态
1098
+ example: healthy
1099
+ timestamp:
1100
+ type: string
1101
+ description: 响应时间戳
1102
+ example: '2026-02-04T12:00:00.000Z'
1103
+
1104
+ LivenessResponse:
1105
+ type: object
1106
+ required: [status]
1107
+ description: 存活检查响应(LivenessVo)
1108
+ properties:
1109
+ status:
1110
+ type: string
1111
+ description: 服务状态
1112
+ example: alive
1113
+
1114
+ HealthCheckItem:
1115
+ type: object
1116
+ description: 健康检查项
1117
+ properties:
1118
+ status:
1119
+ type: string
1120
+ description: 检查状态
1121
+ message:
1122
+ type: string
1123
+ description: 检查消息
1124
+
1125
+ ReadinessResponse:
1126
+ type: object
1127
+ required: [status, checks]
1128
+ description: 就绪检查响应(ReadinessVo)
1129
+ properties:
1130
+ status:
1131
+ type: string
1132
+ description: 服务状态
1133
+ example: ready
1134
+ checks:
1135
+ type: object
1136
+ description: 各检查项状态
1137
+ additionalProperties:
1138
+ $ref: '#/HealthCheckItem'
1139
+ example:
1140
+ database:
1141
+ status: healthy
1142
+ message: Connection OK
1143
+ redis:
1144
+ status: healthy
1145
+ message: Connection OK