smart-admin-web 10.10.1 → 10.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.ts +52 -1
- package/dist/api/index.js +151 -84
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +936 -15
- package/dist/assets/icons/ph-subset.json.js +7 -7
- package/dist/index.js +278 -274
- package/dist/lib/runtime.js +1 -1
- package/dist/locales/en-US.d.ts +144 -0
- package/dist/locales/en-US.js +146 -0
- package/dist/locales/en-US.js.map +1 -1
- package/dist/locales/zh-CN.d.ts +144 -0
- package/dist/locales/zh-CN.js +146 -0
- package/dist/locales/zh-CN.js.map +1 -1
- package/dist/router/viewRegistry.js +1 -1
- package/dist/router/viewRegistry.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/api.d.ts +166 -0
- package/dist/types/api.js +12 -9
- package/dist/types/api.js.map +1 -1
- package/dist/views/system/ai-model/components/ProviderCard.vue.d.ts +13 -0
- package/dist/views/system/ai-model/components/ProviderCard.vue.js +8 -0
- package/dist/views/system/ai-model/components/ProviderCard.vue.js.map +1 -0
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js +230 -0
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -0
- package/dist/views/system/ai-model/components/ProviderForm.vue.d.ts +18 -0
- package/dist/views/system/ai-model/components/ProviderForm.vue.js +8 -0
- package/dist/views/system/ai-model/components/ProviderForm.vue.js.map +1 -0
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js +507 -0
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -0
- package/dist/views/system/ai-model/index.vue.d.ts +3 -0
- package/dist/views/system/ai-model/index.vue.js +8 -0
- package/dist/views/system/ai-model/index.vue.js.map +1 -0
- package/dist/views/system/ai-model/index2.vue.js +134 -0
- package/dist/views/system/ai-model/index2.vue.js.map +1 -0
- package/dist/views/system/ai-model/presets.d.ts +14 -0
- package/dist/views/system/ai-model/presets.js +22 -0
- package/dist/views/system/ai-model/presets.js.map +1 -0
- package/dist/views/system/ai-usage/index.vue.d.ts +3 -0
- package/dist/views/system/ai-usage/index.vue.js +8 -0
- package/dist/views/system/ai-usage/index.vue.js.map +1 -0
- package/dist/views/system/ai-usage/index2.vue.js +423 -0
- package/dist/views/system/ai-usage/index2.vue.js.map +1 -0
- package/package.json +2 -2
package/dist/api/schema.d.ts
CHANGED
|
@@ -4,6 +4,161 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export interface paths {
|
|
7
|
+
"/api/v1/sys/ai/provider/page": {
|
|
8
|
+
parameters: {
|
|
9
|
+
query?: never;
|
|
10
|
+
header?: never;
|
|
11
|
+
path?: never;
|
|
12
|
+
cookie?: never;
|
|
13
|
+
};
|
|
14
|
+
/** 分页查询 AI 厂商(含模型清单) */
|
|
15
|
+
get: operations["AiProvider_Page"];
|
|
16
|
+
put?: never;
|
|
17
|
+
post?: never;
|
|
18
|
+
delete?: never;
|
|
19
|
+
options?: never;
|
|
20
|
+
head?: never;
|
|
21
|
+
patch?: never;
|
|
22
|
+
trace?: never;
|
|
23
|
+
};
|
|
24
|
+
"/api/v1/sys/ai/provider/{id}": {
|
|
25
|
+
parameters: {
|
|
26
|
+
query?: never;
|
|
27
|
+
header?: never;
|
|
28
|
+
path?: never;
|
|
29
|
+
cookie?: never;
|
|
30
|
+
};
|
|
31
|
+
/** 厂商详情(含模型清单) */
|
|
32
|
+
get: operations["AiProvider_Get"];
|
|
33
|
+
/** 更新 AI 厂商(不含厂商预设/协议,创建后不可改) */
|
|
34
|
+
put: operations["AiProvider_Update"];
|
|
35
|
+
post?: never;
|
|
36
|
+
/** 软删除 AI 厂商(级联软删其下模型) */
|
|
37
|
+
delete: operations["AiProvider_Delete"];
|
|
38
|
+
options?: never;
|
|
39
|
+
head?: never;
|
|
40
|
+
patch?: never;
|
|
41
|
+
trace?: never;
|
|
42
|
+
};
|
|
43
|
+
"/api/v1/sys/ai/provider/presets": {
|
|
44
|
+
parameters: {
|
|
45
|
+
query?: never;
|
|
46
|
+
header?: never;
|
|
47
|
+
path?: never;
|
|
48
|
+
cookie?: never;
|
|
49
|
+
};
|
|
50
|
+
/** 厂商预置清单(协议/BaseUrl/鉴权方式/起步模型),新增页选预设时展示 */
|
|
51
|
+
get: operations["AiProvider_Presets"];
|
|
52
|
+
put?: never;
|
|
53
|
+
post?: never;
|
|
54
|
+
delete?: never;
|
|
55
|
+
options?: never;
|
|
56
|
+
head?: never;
|
|
57
|
+
patch?: never;
|
|
58
|
+
trace?: never;
|
|
59
|
+
};
|
|
60
|
+
"/api/v1/sys/ai/provider/add": {
|
|
61
|
+
parameters: {
|
|
62
|
+
query?: never;
|
|
63
|
+
header?: never;
|
|
64
|
+
path?: never;
|
|
65
|
+
cookie?: never;
|
|
66
|
+
};
|
|
67
|
+
get?: never;
|
|
68
|
+
put?: never;
|
|
69
|
+
/** 新增 AI 厂商,返回新 Id */
|
|
70
|
+
post: operations["AiProvider_Add"];
|
|
71
|
+
delete?: never;
|
|
72
|
+
options?: never;
|
|
73
|
+
head?: never;
|
|
74
|
+
patch?: never;
|
|
75
|
+
trace?: never;
|
|
76
|
+
};
|
|
77
|
+
"/api/v1/sys/ai/provider/{id}/enabled": {
|
|
78
|
+
parameters: {
|
|
79
|
+
query?: never;
|
|
80
|
+
header?: never;
|
|
81
|
+
path?: never;
|
|
82
|
+
cookie?: never;
|
|
83
|
+
};
|
|
84
|
+
get?: never;
|
|
85
|
+
/** 启停 AI 厂商(启用时若未配置 Key 会被拒绝) */
|
|
86
|
+
put: operations["AiProvider_SetEnabled"];
|
|
87
|
+
post?: never;
|
|
88
|
+
delete?: never;
|
|
89
|
+
options?: never;
|
|
90
|
+
head?: never;
|
|
91
|
+
patch?: never;
|
|
92
|
+
trace?: never;
|
|
93
|
+
};
|
|
94
|
+
"/api/v1/sys/ai/provider/{id}/test": {
|
|
95
|
+
parameters: {
|
|
96
|
+
query?: never;
|
|
97
|
+
header?: never;
|
|
98
|
+
path?: never;
|
|
99
|
+
cookie?: never;
|
|
100
|
+
};
|
|
101
|
+
get?: never;
|
|
102
|
+
put?: never;
|
|
103
|
+
/** 测试连接:取该厂商默认/首个可用模型发一条极短对话,失败原因在返回体里展示,不抛异常 */
|
|
104
|
+
post: operations["AiProvider_Test"];
|
|
105
|
+
delete?: never;
|
|
106
|
+
options?: never;
|
|
107
|
+
head?: never;
|
|
108
|
+
patch?: never;
|
|
109
|
+
trace?: never;
|
|
110
|
+
};
|
|
111
|
+
"/api/v1/sys/ai/usage/summary": {
|
|
112
|
+
parameters: {
|
|
113
|
+
query?: never;
|
|
114
|
+
header?: never;
|
|
115
|
+
path?: never;
|
|
116
|
+
cookie?: never;
|
|
117
|
+
};
|
|
118
|
+
/** 用量汇总:时间区间内的总计 + 按厂商/模型/场景/用户维度的分组聚合 */
|
|
119
|
+
get: operations["AiUsage_Summary"];
|
|
120
|
+
put?: never;
|
|
121
|
+
post?: never;
|
|
122
|
+
delete?: never;
|
|
123
|
+
options?: never;
|
|
124
|
+
head?: never;
|
|
125
|
+
patch?: never;
|
|
126
|
+
trace?: never;
|
|
127
|
+
};
|
|
128
|
+
"/api/v1/sys/ai/usage/trend": {
|
|
129
|
+
parameters: {
|
|
130
|
+
query?: never;
|
|
131
|
+
header?: never;
|
|
132
|
+
path?: never;
|
|
133
|
+
cookie?: never;
|
|
134
|
+
};
|
|
135
|
+
/** 用量趋势:按天聚合的 Token/调用数,区间内无数据的日期补 0 */
|
|
136
|
+
get: operations["AiUsage_Trend"];
|
|
137
|
+
put?: never;
|
|
138
|
+
post?: never;
|
|
139
|
+
delete?: never;
|
|
140
|
+
options?: never;
|
|
141
|
+
head?: never;
|
|
142
|
+
patch?: never;
|
|
143
|
+
trace?: never;
|
|
144
|
+
};
|
|
145
|
+
"/api/v1/sys/ai/usage/page": {
|
|
146
|
+
parameters: {
|
|
147
|
+
query?: never;
|
|
148
|
+
header?: never;
|
|
149
|
+
path?: never;
|
|
150
|
+
cookie?: never;
|
|
151
|
+
};
|
|
152
|
+
/** 用量明细分页(不聚合) */
|
|
153
|
+
get: operations["AiUsage_Page"];
|
|
154
|
+
put?: never;
|
|
155
|
+
post?: never;
|
|
156
|
+
delete?: never;
|
|
157
|
+
options?: never;
|
|
158
|
+
head?: never;
|
|
159
|
+
patch?: never;
|
|
160
|
+
trace?: never;
|
|
161
|
+
};
|
|
7
162
|
"/api/v1/auth/captcha": {
|
|
8
163
|
parameters: {
|
|
9
164
|
query?: never;
|
|
@@ -2383,6 +2538,188 @@ export interface components {
|
|
|
2383
2538
|
/** @description 实际生效的初始口令明文(管理员显式指定的、或系统生成的) */
|
|
2384
2539
|
initialPassword: string;
|
|
2385
2540
|
};
|
|
2541
|
+
/**
|
|
2542
|
+
* @description AI 模型入参(厂商新增/编辑时随模型清单整体提交)。long? AiModelInput.Id 为 `null` 表示新增该行;
|
|
2543
|
+
* 有值表示更新该行;厂商原有模型行中不在入参列表里的按软删处理(见 AiProviderService)。
|
|
2544
|
+
*/
|
|
2545
|
+
AiModelInput: {
|
|
2546
|
+
/** Format: int64 */
|
|
2547
|
+
id: null | number | string;
|
|
2548
|
+
name: string;
|
|
2549
|
+
displayName: string;
|
|
2550
|
+
enabled: boolean;
|
|
2551
|
+
isDefault: boolean;
|
|
2552
|
+
/** Format: int32 */
|
|
2553
|
+
contextWindow: null | number | string;
|
|
2554
|
+
/** Format: double */
|
|
2555
|
+
inputPrice: null | number | string;
|
|
2556
|
+
/** Format: double */
|
|
2557
|
+
outputPrice: null | number | string;
|
|
2558
|
+
};
|
|
2559
|
+
/** @description AI 厂商预置里的一个起步模型 */
|
|
2560
|
+
AiModelPreset: {
|
|
2561
|
+
name: string;
|
|
2562
|
+
displayName: string;
|
|
2563
|
+
/** Format: int32 */
|
|
2564
|
+
contextWindow?: null | number | string;
|
|
2565
|
+
};
|
|
2566
|
+
/** @description AI 模型出参(挂在某个厂商下)。 */
|
|
2567
|
+
AiModelView: {
|
|
2568
|
+
/** Format: int64 */
|
|
2569
|
+
id: number | string;
|
|
2570
|
+
name: string;
|
|
2571
|
+
displayName: string;
|
|
2572
|
+
enabled: boolean;
|
|
2573
|
+
isDefault: boolean;
|
|
2574
|
+
/** Format: int32 */
|
|
2575
|
+
contextWindow: null | number | string;
|
|
2576
|
+
/** Format: double */
|
|
2577
|
+
inputPrice: null | number | string;
|
|
2578
|
+
/** Format: double */
|
|
2579
|
+
outputPrice: null | number | string;
|
|
2580
|
+
};
|
|
2581
|
+
/** @description AI 厂商新增入参。string? AiProviderAddInput.ApiKey 为空表示不配置 Key(string AiProviderAddInput.AuthScheme != none 时不能启用)。 */
|
|
2582
|
+
AiProviderAddInput: {
|
|
2583
|
+
code: string;
|
|
2584
|
+
name: string;
|
|
2585
|
+
preset: string;
|
|
2586
|
+
baseUrl: string;
|
|
2587
|
+
authScheme: string;
|
|
2588
|
+
apiKey: null | string;
|
|
2589
|
+
/** Format: int32 */
|
|
2590
|
+
sort: number | string;
|
|
2591
|
+
remark: null | string;
|
|
2592
|
+
models: components["schemas"]["AiModelInput"][];
|
|
2593
|
+
};
|
|
2594
|
+
/** @description AI 厂商预置项:协议 / Base URL / 鉴权方式由预设带出,运维只填 Key(见 docs/plans/ai-management.md §6)。 */
|
|
2595
|
+
AiProviderPreset: {
|
|
2596
|
+
code: string;
|
|
2597
|
+
name: string;
|
|
2598
|
+
protocol: string;
|
|
2599
|
+
baseUrl: string;
|
|
2600
|
+
authScheme: string;
|
|
2601
|
+
models: components["schemas"]["AiModelPreset"][];
|
|
2602
|
+
};
|
|
2603
|
+
/**
|
|
2604
|
+
* @description AI 厂商编辑入参。<b>没有</b>`Preset`/`Protocol` 字段——这两项创建后不可改,入参类型层面就不给改的机会。
|
|
2605
|
+
* string? AiProviderUpdateInput.ApiKey 为 `null`/空串表示不改动原有 Key;非空则重新加密覆盖。
|
|
2606
|
+
*/
|
|
2607
|
+
AiProviderUpdateInput: {
|
|
2608
|
+
code: string;
|
|
2609
|
+
name: string;
|
|
2610
|
+
baseUrl: string;
|
|
2611
|
+
authScheme: string;
|
|
2612
|
+
apiKey: null | string;
|
|
2613
|
+
/** Format: int32 */
|
|
2614
|
+
sort: number | string;
|
|
2615
|
+
remark: null | string;
|
|
2616
|
+
models: components["schemas"]["AiModelInput"][];
|
|
2617
|
+
};
|
|
2618
|
+
/**
|
|
2619
|
+
* @description AI 厂商出参。<b>不含</b>明文 Key——只有 string? AiProviderView.ApiKeyHint(尾四位)+ bool AiProviderView.HasApiKey,
|
|
2620
|
+
* 明文只在保存那一次经过内存(见 AiProviderService)。
|
|
2621
|
+
*/
|
|
2622
|
+
AiProviderView: {
|
|
2623
|
+
/** Format: int64 */
|
|
2624
|
+
id: number | string;
|
|
2625
|
+
code: string;
|
|
2626
|
+
name: string;
|
|
2627
|
+
preset: string;
|
|
2628
|
+
protocol: string;
|
|
2629
|
+
baseUrl: string;
|
|
2630
|
+
authScheme: string;
|
|
2631
|
+
apiKeyHint: null | string;
|
|
2632
|
+
hasApiKey: boolean;
|
|
2633
|
+
enabled: boolean;
|
|
2634
|
+
/** Format: int32 */
|
|
2635
|
+
sort: number | string;
|
|
2636
|
+
remark: null | string;
|
|
2637
|
+
models: components["schemas"]["AiModelView"][];
|
|
2638
|
+
};
|
|
2639
|
+
/**
|
|
2640
|
+
* @description 测试连接结果。bool AiTestResult.Ok 为 `false` 时 string? AiTestResult.Error 携带排障文案——
|
|
2641
|
+
* 这是给运维在「测试连接」按钮下直接展示的诊断信息,不是走 ErrorCode 信封的业务错误,
|
|
2642
|
+
* 所以不受"错误一律用数字 ErrorCode"的约束(Task<AiTestResult> AiProviderService.TestAsync(long id) 从不让异常冒泡出这个方法)。
|
|
2643
|
+
*/
|
|
2644
|
+
AiTestResult: {
|
|
2645
|
+
ok: boolean;
|
|
2646
|
+
model: null | string;
|
|
2647
|
+
/** Format: int32 */
|
|
2648
|
+
latencyMs: number | string;
|
|
2649
|
+
usage: null | components["schemas"]["AiUsage"];
|
|
2650
|
+
error: null | string;
|
|
2651
|
+
};
|
|
2652
|
+
/** @description Token 用量 */
|
|
2653
|
+
AiUsage: {
|
|
2654
|
+
/** Format: int32 */
|
|
2655
|
+
inputTokens: number | string;
|
|
2656
|
+
/** Format: int32 */
|
|
2657
|
+
outputTokens: number | string;
|
|
2658
|
+
source: components["schemas"]["AiUsageSource"];
|
|
2659
|
+
/**
|
|
2660
|
+
* Format: int32
|
|
2661
|
+
* @description 输入 + 输出
|
|
2662
|
+
*/
|
|
2663
|
+
totalTokens?: number | string;
|
|
2664
|
+
};
|
|
2665
|
+
/** @description 用量汇总的分组维度。 */
|
|
2666
|
+
AiUsageGroupBy: number;
|
|
2667
|
+
/**
|
|
2668
|
+
* @description 某个分组维度下一行聚合数据。`Key` 是分组键的原始值(厂商编码/模型名/场景标签,或用户 Id 的字符串形式;
|
|
2669
|
+
* 用户为空时为 `"0"`);`Label` 是展示名,仅 AiUsageGroupBy.User 分组尝试回填用户名,查不到或其它维度为 null;
|
|
2670
|
+
* `SharePercent` 是该组 (InputTokens+OutputTokens) 占总 Token 的百分比,0~100,总量为 0 时给 0。
|
|
2671
|
+
*/
|
|
2672
|
+
AiUsageGroupRow: {
|
|
2673
|
+
key: string;
|
|
2674
|
+
label: null | string;
|
|
2675
|
+
/** Format: int64 */
|
|
2676
|
+
inputTokens: number | string;
|
|
2677
|
+
/** Format: int64 */
|
|
2678
|
+
outputTokens: number | string;
|
|
2679
|
+
/** Format: int64 */
|
|
2680
|
+
callCount: number | string;
|
|
2681
|
+
/** Format: double */
|
|
2682
|
+
sharePercent: number | string;
|
|
2683
|
+
/** Format: double */
|
|
2684
|
+
avgLatencyMs: number | string;
|
|
2685
|
+
};
|
|
2686
|
+
/** @description 用量数据的来源 */
|
|
2687
|
+
AiUsageSource: number;
|
|
2688
|
+
/** @description 用量汇总结果:总计 + 按 AiUsageGroupBy AiUsageSummaryInput.GroupBy 维度的分组列表。 */
|
|
2689
|
+
AiUsageSummary: {
|
|
2690
|
+
totals: components["schemas"]["AiUsageTotals"];
|
|
2691
|
+
groups: components["schemas"]["AiUsageGroupRow"][];
|
|
2692
|
+
};
|
|
2693
|
+
/**
|
|
2694
|
+
* @description 时间区间内的用量总计。`FailuresByErrorCode`:失败按内核错误码分类计数,
|
|
2695
|
+
* int? SysAiUsageLog.ErrorCode 为 null 的失败行归到约定 key `0`。
|
|
2696
|
+
*/
|
|
2697
|
+
AiUsageTotals: {
|
|
2698
|
+
/** Format: int64 */
|
|
2699
|
+
totalTokens: number | string;
|
|
2700
|
+
/** Format: int64 */
|
|
2701
|
+
inputTokens: number | string;
|
|
2702
|
+
/** Format: int64 */
|
|
2703
|
+
outputTokens: number | string;
|
|
2704
|
+
/** Format: int64 */
|
|
2705
|
+
callCount: number | string;
|
|
2706
|
+
/** Format: int64 */
|
|
2707
|
+
failureCount: number | string;
|
|
2708
|
+
failuresByErrorCode: {
|
|
2709
|
+
[key: string]: number | string;
|
|
2710
|
+
};
|
|
2711
|
+
};
|
|
2712
|
+
/** @description 按天聚合的一个趋势点。区间内没有数据的日期也会补 0(供前端画连续折线)。 */
|
|
2713
|
+
AiUsageTrendPoint: {
|
|
2714
|
+
/** Format: date */
|
|
2715
|
+
date: string;
|
|
2716
|
+
/** Format: int64 */
|
|
2717
|
+
inputTokens: number | string;
|
|
2718
|
+
/** Format: int64 */
|
|
2719
|
+
outputTokens: number | string;
|
|
2720
|
+
/** Format: int64 */
|
|
2721
|
+
callCount: number | string;
|
|
2722
|
+
};
|
|
2386
2723
|
/**
|
|
2387
2724
|
* @description 批量删除入参:目标 Id 集合。各模块的 `POST .../batch-delete` 端点统一收此形状,
|
|
2388
2725
|
* 服务层 `DeleteBatchAsync` 复用单删的守卫/软删/失效逻辑逐个处理。空集合视为无操作。
|
|
@@ -2993,12 +3330,12 @@ export interface components {
|
|
|
2993
3330
|
mustChangePassword?: boolean;
|
|
2994
3331
|
/**
|
|
2995
3332
|
* @description 会话交付模式。`body`=刷新令牌在 JSON 体(默认);
|
|
2996
|
-
* `cookie`=刷新令牌在 HttpOnly Cookie。null 表示未声明(
|
|
3333
|
+
* `cookie`=刷新令牌在 HttpOnly Cookie。null 表示未声明(不认该字段的客户端忽略即可)。
|
|
2997
3334
|
*/
|
|
2998
3335
|
sessionMode?: null | string;
|
|
2999
3336
|
/**
|
|
3000
3337
|
* @description 是否要求双提交 CSRF(`X-Smart-CSRF` + `smart_csrf` Cookie)。
|
|
3001
|
-
* Cookie 会话模式为 true;默认模式为 null/false
|
|
3338
|
+
* Cookie 会话模式为 true;默认模式为 null/false。不认该字段的客户端忽略即可。
|
|
3002
3339
|
*/
|
|
3003
3340
|
csrfRequired?: null | boolean;
|
|
3004
3341
|
/** @description 是否超管;前端据此在 profile 接口故障时仍能正确 fail-open v-auth。 */
|
|
@@ -3226,6 +3563,34 @@ export interface components {
|
|
|
3226
3563
|
/** @description 是否启用 */
|
|
3227
3564
|
enabled?: boolean;
|
|
3228
3565
|
};
|
|
3566
|
+
/**
|
|
3567
|
+
* @description 分页结果模型——所有分页查询的统一返回。ORM 中立(放 Core),
|
|
3568
|
+
* SqlSugar 侧的 `ToPagedListAsync` 扩展负责把查询物化成它。
|
|
3569
|
+
*/
|
|
3570
|
+
PagedListOfAiProviderView: {
|
|
3571
|
+
/**
|
|
3572
|
+
* Format: int32
|
|
3573
|
+
* @description 当前页码(从 1 起)
|
|
3574
|
+
*/
|
|
3575
|
+
current?: number | string;
|
|
3576
|
+
/**
|
|
3577
|
+
* Format: int32
|
|
3578
|
+
* @description 每页条数
|
|
3579
|
+
*/
|
|
3580
|
+
size?: number | string;
|
|
3581
|
+
/**
|
|
3582
|
+
* Format: int32
|
|
3583
|
+
* @description 总记录数
|
|
3584
|
+
*/
|
|
3585
|
+
total?: number | string;
|
|
3586
|
+
/**
|
|
3587
|
+
* Format: int32
|
|
3588
|
+
* @description 总页数(向上取整;Size 为 0 时为 0)
|
|
3589
|
+
*/
|
|
3590
|
+
pages?: number | string;
|
|
3591
|
+
/** @description 当前页数据 */
|
|
3592
|
+
items?: components["schemas"]["AiProviderView"][];
|
|
3593
|
+
};
|
|
3229
3594
|
/**
|
|
3230
3595
|
* @description 分页结果模型——所有分页查询的统一返回。ORM 中立(放 Core),
|
|
3231
3596
|
* SqlSugar 侧的 `ToPagedListAsync` 扩展负责把查询物化成它。
|
|
@@ -3310,6 +3675,34 @@ export interface components {
|
|
|
3310
3675
|
/** @description 当前页数据 */
|
|
3311
3676
|
items?: components["schemas"]["RecycleBinItem"][];
|
|
3312
3677
|
};
|
|
3678
|
+
/**
|
|
3679
|
+
* @description 分页结果模型——所有分页查询的统一返回。ORM 中立(放 Core),
|
|
3680
|
+
* SqlSugar 侧的 `ToPagedListAsync` 扩展负责把查询物化成它。
|
|
3681
|
+
*/
|
|
3682
|
+
PagedListOfSysAiUsageLog: {
|
|
3683
|
+
/**
|
|
3684
|
+
* Format: int32
|
|
3685
|
+
* @description 当前页码(从 1 起)
|
|
3686
|
+
*/
|
|
3687
|
+
current?: number | string;
|
|
3688
|
+
/**
|
|
3689
|
+
* Format: int32
|
|
3690
|
+
* @description 每页条数
|
|
3691
|
+
*/
|
|
3692
|
+
size?: number | string;
|
|
3693
|
+
/**
|
|
3694
|
+
* Format: int32
|
|
3695
|
+
* @description 总记录数
|
|
3696
|
+
*/
|
|
3697
|
+
total?: number | string;
|
|
3698
|
+
/**
|
|
3699
|
+
* Format: int32
|
|
3700
|
+
* @description 总页数(向上取整;Size 为 0 时为 0)
|
|
3701
|
+
*/
|
|
3702
|
+
pages?: number | string;
|
|
3703
|
+
/** @description 当前页数据 */
|
|
3704
|
+
items?: components["schemas"]["SysAiUsageLog"][];
|
|
3705
|
+
};
|
|
3313
3706
|
/**
|
|
3314
3707
|
* @description 分页结果模型——所有分页查询的统一返回。ORM 中立(放 Core),
|
|
3315
3708
|
* SqlSugar 侧的 `ToPagedListAsync` 扩展负责把查询物化成它。
|
|
@@ -3792,7 +4185,7 @@ export interface components {
|
|
|
3792
4185
|
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
3793
4186
|
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
3794
4187
|
*/
|
|
3795
|
-
|
|
4188
|
+
ResultOfAiProviderView: {
|
|
3796
4189
|
/**
|
|
3797
4190
|
* Format: int32
|
|
3798
4191
|
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
@@ -3804,8 +4197,7 @@ export interface components {
|
|
|
3804
4197
|
args?: null | Record<string, never>;
|
|
3805
4198
|
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
3806
4199
|
message?: null | string;
|
|
3807
|
-
|
|
3808
|
-
data?: boolean;
|
|
4200
|
+
data?: null | components["schemas"]["AiProviderView"];
|
|
3809
4201
|
};
|
|
3810
4202
|
/**
|
|
3811
4203
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
@@ -3814,7 +4206,7 @@ export interface components {
|
|
|
3814
4206
|
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
3815
4207
|
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
3816
4208
|
*/
|
|
3817
|
-
|
|
4209
|
+
ResultOfAiTestResult: {
|
|
3818
4210
|
/**
|
|
3819
4211
|
* Format: int32
|
|
3820
4212
|
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
@@ -3826,7 +4218,7 @@ export interface components {
|
|
|
3826
4218
|
args?: null | Record<string, never>;
|
|
3827
4219
|
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
3828
4220
|
message?: null | string;
|
|
3829
|
-
data?: null | components["schemas"]["
|
|
4221
|
+
data?: null | components["schemas"]["AiTestResult"];
|
|
3830
4222
|
};
|
|
3831
4223
|
/**
|
|
3832
4224
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
@@ -3835,7 +4227,7 @@ export interface components {
|
|
|
3835
4227
|
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
3836
4228
|
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
3837
4229
|
*/
|
|
3838
|
-
|
|
4230
|
+
ResultOfAiUsageSummary: {
|
|
3839
4231
|
/**
|
|
3840
4232
|
* Format: int32
|
|
3841
4233
|
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
@@ -3847,7 +4239,7 @@ export interface components {
|
|
|
3847
4239
|
args?: null | Record<string, never>;
|
|
3848
4240
|
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
3849
4241
|
message?: null | string;
|
|
3850
|
-
data?: null | components["schemas"]["
|
|
4242
|
+
data?: null | components["schemas"]["AiUsageSummary"];
|
|
3851
4243
|
};
|
|
3852
4244
|
/**
|
|
3853
4245
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
@@ -3856,7 +4248,71 @@ export interface components {
|
|
|
3856
4248
|
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
3857
4249
|
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
3858
4250
|
*/
|
|
3859
|
-
|
|
4251
|
+
ResultOfboolean: {
|
|
4252
|
+
/**
|
|
4253
|
+
* Format: int32
|
|
4254
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4255
|
+
*/
|
|
4256
|
+
code?: number | string;
|
|
4257
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4258
|
+
msgKey?: null | string;
|
|
4259
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4260
|
+
args?: null | Record<string, never>;
|
|
4261
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4262
|
+
message?: null | string;
|
|
4263
|
+
/** @description 业务数据载荷 */
|
|
4264
|
+
data?: boolean;
|
|
4265
|
+
};
|
|
4266
|
+
/**
|
|
4267
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4268
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4269
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4270
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4271
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4272
|
+
*/
|
|
4273
|
+
ResultOfCaptchaOutput: {
|
|
4274
|
+
/**
|
|
4275
|
+
* Format: int32
|
|
4276
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4277
|
+
*/
|
|
4278
|
+
code?: number | string;
|
|
4279
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4280
|
+
msgKey?: null | string;
|
|
4281
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4282
|
+
args?: null | Record<string, never>;
|
|
4283
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4284
|
+
message?: null | string;
|
|
4285
|
+
data?: null | components["schemas"]["CaptchaOutput"];
|
|
4286
|
+
};
|
|
4287
|
+
/**
|
|
4288
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4289
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4290
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4291
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4292
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4293
|
+
*/
|
|
4294
|
+
ResultOfChunkInitOutput: {
|
|
4295
|
+
/**
|
|
4296
|
+
* Format: int32
|
|
4297
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4298
|
+
*/
|
|
4299
|
+
code?: number | string;
|
|
4300
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4301
|
+
msgKey?: null | string;
|
|
4302
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4303
|
+
args?: null | Record<string, never>;
|
|
4304
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4305
|
+
message?: null | string;
|
|
4306
|
+
data?: null | components["schemas"]["ChunkInitOutput"];
|
|
4307
|
+
};
|
|
4308
|
+
/**
|
|
4309
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4310
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4311
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4312
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4313
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4314
|
+
*/
|
|
4315
|
+
ResultOfCronPreviewOutput: {
|
|
3860
4316
|
/**
|
|
3861
4317
|
* Format: int32
|
|
3862
4318
|
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
@@ -4044,6 +4500,50 @@ export interface components {
|
|
|
4044
4500
|
/** @description 业务数据载荷 */
|
|
4045
4501
|
data?: null | string[];
|
|
4046
4502
|
};
|
|
4503
|
+
/**
|
|
4504
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4505
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4506
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4507
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4508
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4509
|
+
*/
|
|
4510
|
+
ResultOfIReadOnlyListOfAiProviderPreset: {
|
|
4511
|
+
/**
|
|
4512
|
+
* Format: int32
|
|
4513
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4514
|
+
*/
|
|
4515
|
+
code?: number | string;
|
|
4516
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4517
|
+
msgKey?: null | string;
|
|
4518
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4519
|
+
args?: null | Record<string, never>;
|
|
4520
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4521
|
+
message?: null | string;
|
|
4522
|
+
/** @description 业务数据载荷 */
|
|
4523
|
+
data?: null | components["schemas"]["AiProviderPreset"][];
|
|
4524
|
+
};
|
|
4525
|
+
/**
|
|
4526
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4527
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4528
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4529
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4530
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4531
|
+
*/
|
|
4532
|
+
ResultOfIReadOnlyListOfAiUsageTrendPoint: {
|
|
4533
|
+
/**
|
|
4534
|
+
* Format: int32
|
|
4535
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4536
|
+
*/
|
|
4537
|
+
code?: number | string;
|
|
4538
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4539
|
+
msgKey?: null | string;
|
|
4540
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4541
|
+
args?: null | Record<string, never>;
|
|
4542
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4543
|
+
message?: null | string;
|
|
4544
|
+
/** @description 业务数据载荷 */
|
|
4545
|
+
data?: null | components["schemas"]["AiUsageTrendPoint"][];
|
|
4546
|
+
};
|
|
4047
4547
|
/**
|
|
4048
4548
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
4049
4549
|
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
@@ -4417,6 +4917,27 @@ export interface components {
|
|
|
4417
4917
|
/** @description 业务数据载荷 */
|
|
4418
4918
|
data?: unknown;
|
|
4419
4919
|
};
|
|
4920
|
+
/**
|
|
4921
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
4922
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
4923
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
4924
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
4925
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
4926
|
+
*/
|
|
4927
|
+
ResultOfPagedListOfAiProviderView: {
|
|
4928
|
+
/**
|
|
4929
|
+
* Format: int32
|
|
4930
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
4931
|
+
*/
|
|
4932
|
+
code?: number | string;
|
|
4933
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
4934
|
+
msgKey?: null | string;
|
|
4935
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
4936
|
+
args?: null | Record<string, never>;
|
|
4937
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
4938
|
+
message?: null | string;
|
|
4939
|
+
data?: null | components["schemas"]["PagedListOfAiProviderView"];
|
|
4940
|
+
};
|
|
4420
4941
|
/**
|
|
4421
4942
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
4422
4943
|
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
@@ -4480,6 +5001,27 @@ export interface components {
|
|
|
4480
5001
|
message?: null | string;
|
|
4481
5002
|
data?: null | components["schemas"]["PagedListOfRecycleBinItem"];
|
|
4482
5003
|
};
|
|
5004
|
+
/**
|
|
5005
|
+
* @description 统一返回模型——所有接口的响应外壳。
|
|
5006
|
+
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
5007
|
+
* Message 是后端兜底文案(非浏览器调用方降级用,浏览器端应忽略它);Data 为业务载荷。<example>
|
|
5008
|
+
* 成功:`{ "code": 0, "msgKey": "common.success", "data": {...} }`<br />
|
|
5009
|
+
* 失败:`{ "code": 40001, "msgKey": "error.auth.passwordWrong", "args": {}, "message": "...", "data": null }`</example>
|
|
5010
|
+
*/
|
|
5011
|
+
ResultOfPagedListOfSysAiUsageLog: {
|
|
5012
|
+
/**
|
|
5013
|
+
* Format: int32
|
|
5014
|
+
* @description 业务码,0 为成功,其余见 ErrorCode 分段
|
|
5015
|
+
*/
|
|
5016
|
+
code?: number | string;
|
|
5017
|
+
/** @description 语义键(前端 i18n 语言包的键),如 `error.auth.passwordWrong` */
|
|
5018
|
+
msgKey?: null | string;
|
|
5019
|
+
/** @description 文案插值参数,与语言包模板占位符对应;无参数时为 null(序列化省略) */
|
|
5020
|
+
args?: null | Record<string, never>;
|
|
5021
|
+
/** @description 兜底文案(仅降级用途,浏览器端一律走 MsgKey 翻译) */
|
|
5022
|
+
message?: null | string;
|
|
5023
|
+
data?: null | components["schemas"]["PagedListOfSysAiUsageLog"];
|
|
5024
|
+
};
|
|
4483
5025
|
/**
|
|
4484
5026
|
* @description 统一返回模型——所有接口的响应外壳。
|
|
4485
5027
|
* 字段分工:Code 给机器判断;MsgKey+Args 给前端 i18n 渲染;
|
|
@@ -5174,7 +5716,7 @@ export interface components {
|
|
|
5174
5716
|
copyright?: null | string;
|
|
5175
5717
|
/** @description 版权链接(版权名的超链接;留空则纯文本) */
|
|
5176
5718
|
copyrightUrl?: null | string;
|
|
5177
|
-
/** @description 站点 Logo 图片地址(
|
|
5719
|
+
/** @description 站点 Logo 图片地址(登录页、侧栏、顶栏、应用选择页统一显示;留空则前端回退内置矢量 logo) */
|
|
5178
5720
|
logo?: null | string;
|
|
5179
5721
|
/** @description 是否启用登录验证码(运行时配置驱动;前端据此决定登录页是否展示验证码)。 */
|
|
5180
5722
|
captchaEnabled?: boolean;
|
|
@@ -5206,6 +5748,76 @@ export interface components {
|
|
|
5206
5748
|
*/
|
|
5207
5749
|
resendSeconds?: number | string;
|
|
5208
5750
|
};
|
|
5751
|
+
/**
|
|
5752
|
+
* @description AI 调用记录——只增、物理删(对齐 SysJobLog),按 string AiConfigKeys.KEY_USAGE_RETENTION_DAYS 定期清理。
|
|
5753
|
+
* <b>不记 prompt 与回复正文</b>:审批等业务内容属于业务数据,不进内核日志。
|
|
5754
|
+
*/
|
|
5755
|
+
SysAiUsageLog: {
|
|
5756
|
+
/**
|
|
5757
|
+
* Format: int64
|
|
5758
|
+
* @description 厂商 Id
|
|
5759
|
+
*/
|
|
5760
|
+
providerId?: number | string;
|
|
5761
|
+
/** @description 厂商编码快照(冗余;厂商删了也能读) */
|
|
5762
|
+
providerCode?: string;
|
|
5763
|
+
model?: string;
|
|
5764
|
+
/** @description 业务场景标签,如 approval.summary;测试连接固定 system.test */
|
|
5765
|
+
scene?: string;
|
|
5766
|
+
/**
|
|
5767
|
+
* Format: int64
|
|
5768
|
+
* @description 发起用户;后台任务里可能为空
|
|
5769
|
+
*/
|
|
5770
|
+
userId?: null | number | string;
|
|
5771
|
+
/** Format: int32 */
|
|
5772
|
+
inputTokens?: number | string;
|
|
5773
|
+
/** Format: int32 */
|
|
5774
|
+
outputTokens?: number | string;
|
|
5775
|
+
/** Format: int32 */
|
|
5776
|
+
totalTokens?: number | string;
|
|
5777
|
+
/**
|
|
5778
|
+
* Format: int32
|
|
5779
|
+
* @description 用量来源:1=上游回报,2=上游未回报(流式且厂商不支持 include_usage)
|
|
5780
|
+
*/
|
|
5781
|
+
usageSource?: number | string;
|
|
5782
|
+
/** Format: int32 */
|
|
5783
|
+
latencyMs?: number | string;
|
|
5784
|
+
success?: boolean;
|
|
5785
|
+
/**
|
|
5786
|
+
* Format: int32
|
|
5787
|
+
* @description 失败时的内核错误码
|
|
5788
|
+
*/
|
|
5789
|
+
errorCode?: null | number | string;
|
|
5790
|
+
/** @description 上游错误摘要,截断;不含请求内容 */
|
|
5791
|
+
errorMessage?: null | string;
|
|
5792
|
+
streamed?: boolean;
|
|
5793
|
+
/** @description 上游返回的请求 id,排障用 */
|
|
5794
|
+
requestId?: null | string;
|
|
5795
|
+
/**
|
|
5796
|
+
* Format: date-time
|
|
5797
|
+
* @description 创建时间;插入时由审计 AOP 自动填充。
|
|
5798
|
+
*/
|
|
5799
|
+
createTime?: string;
|
|
5800
|
+
/**
|
|
5801
|
+
* Format: int64
|
|
5802
|
+
* @description 创建人用户 Id;插入时由审计 AOP 从当前登录用户填充,系统写入为 null。
|
|
5803
|
+
*/
|
|
5804
|
+
createUserId?: null | number | string;
|
|
5805
|
+
/**
|
|
5806
|
+
* Format: date-time
|
|
5807
|
+
* @description 最后更新时间;每次更新由审计 AOP 自动刷新。
|
|
5808
|
+
*/
|
|
5809
|
+
updateTime?: null | string;
|
|
5810
|
+
/**
|
|
5811
|
+
* Format: int64
|
|
5812
|
+
* @description 最后更新人用户 Id;每次更新由审计 AOP 从当前登录用户填充。
|
|
5813
|
+
*/
|
|
5814
|
+
updateUserId?: null | number | string;
|
|
5815
|
+
/**
|
|
5816
|
+
* Format: int64
|
|
5817
|
+
* @description 主键(雪花 ID;种子数据可用固定小整数)。插入时为 0 则由审计 AOP 自动生成。
|
|
5818
|
+
*/
|
|
5819
|
+
id?: number | string;
|
|
5820
|
+
};
|
|
5209
5821
|
/**
|
|
5210
5822
|
* @description 系统配置表——键值对形式的全局配置项(如站点名称、默认密码策略等),支持按 string? SysConfig.GroupCode 分组管理。
|
|
5211
5823
|
* string SysConfig.ConfigKey 创建后不可修改:程序按键读取配置值,改键等同于换了一个配置项,
|
|
@@ -5939,9 +6551,9 @@ export interface components {
|
|
|
5939
6551
|
enabled?: boolean;
|
|
5940
6552
|
remark?: null | string;
|
|
5941
6553
|
/**
|
|
5942
|
-
* @description 是否可被非超管转授给他人(角色委派)
|
|
5943
|
-
* 数据库 NULL(
|
|
5944
|
-
* 安全默认(
|
|
6554
|
+
* @description 是否可被非超管转授给他人(角色委派)。可空,存量库补列时无损:
|
|
6555
|
+
* 数据库 NULL(存量角色)与显式 `false` 同判定为"不可转授",只有显式 `true` 才放行——
|
|
6556
|
+
* 安全默认(未标注的角色一律收紧,补列不会静默放宽)。演进列必须可空:MSSQL 无法对有数据的表
|
|
5945
6557
|
* ADD 无 DEFAULT 的 NOT NULL 列(同 bool SysUser.ForceTotp 的成法)。
|
|
5946
6558
|
*/
|
|
5947
6559
|
isDelegatable?: null | boolean;
|
|
@@ -6029,7 +6641,7 @@ export interface components {
|
|
|
6029
6641
|
account?: string;
|
|
6030
6642
|
/** @description 当前密码(必填;缺失/错误一律拒绝写 seed) */
|
|
6031
6643
|
currentPassword?: string;
|
|
6032
|
-
/** @description
|
|
6644
|
+
/** @description 服务端忽略此字段;留着它,是为了仍在请求里带 `token` 的客户端反序列化不失败。 */
|
|
6033
6645
|
token?: null | string;
|
|
6034
6646
|
};
|
|
6035
6647
|
/** @description 绑定启动出参:临时挑战 + otpauth URI(种子暂存缓存,完成前不落库)。 */
|
|
@@ -6197,6 +6809,315 @@ export interface components {
|
|
|
6197
6809
|
}
|
|
6198
6810
|
export type $defs = Record<string, never>;
|
|
6199
6811
|
export interface operations {
|
|
6812
|
+
AiProvider_Page: {
|
|
6813
|
+
parameters: {
|
|
6814
|
+
query?: {
|
|
6815
|
+
/** @description 关键字(模糊匹配 Code 或 Name,可选) */
|
|
6816
|
+
Keyword?: string;
|
|
6817
|
+
/** @description 启用状态精确过滤(可选) */
|
|
6818
|
+
Enabled?: boolean;
|
|
6819
|
+
Current?: number | string;
|
|
6820
|
+
Size?: number | string;
|
|
6821
|
+
SortField?: string;
|
|
6822
|
+
SortOrder?: string;
|
|
6823
|
+
};
|
|
6824
|
+
header?: never;
|
|
6825
|
+
path?: never;
|
|
6826
|
+
cookie?: never;
|
|
6827
|
+
};
|
|
6828
|
+
requestBody?: never;
|
|
6829
|
+
responses: {
|
|
6830
|
+
/** @description OK */
|
|
6831
|
+
200: {
|
|
6832
|
+
headers: {
|
|
6833
|
+
[name: string]: unknown;
|
|
6834
|
+
};
|
|
6835
|
+
content: {
|
|
6836
|
+
"text/plain": components["schemas"]["ResultOfPagedListOfAiProviderView"];
|
|
6837
|
+
"application/json": components["schemas"]["ResultOfPagedListOfAiProviderView"];
|
|
6838
|
+
"text/json": components["schemas"]["ResultOfPagedListOfAiProviderView"];
|
|
6839
|
+
};
|
|
6840
|
+
};
|
|
6841
|
+
};
|
|
6842
|
+
};
|
|
6843
|
+
AiProvider_Get: {
|
|
6844
|
+
parameters: {
|
|
6845
|
+
query?: never;
|
|
6846
|
+
header?: never;
|
|
6847
|
+
path: {
|
|
6848
|
+
id: number | string;
|
|
6849
|
+
};
|
|
6850
|
+
cookie?: never;
|
|
6851
|
+
};
|
|
6852
|
+
requestBody?: never;
|
|
6853
|
+
responses: {
|
|
6854
|
+
/** @description OK */
|
|
6855
|
+
200: {
|
|
6856
|
+
headers: {
|
|
6857
|
+
[name: string]: unknown;
|
|
6858
|
+
};
|
|
6859
|
+
content: {
|
|
6860
|
+
"text/plain": components["schemas"]["ResultOfAiProviderView"];
|
|
6861
|
+
"application/json": components["schemas"]["ResultOfAiProviderView"];
|
|
6862
|
+
"text/json": components["schemas"]["ResultOfAiProviderView"];
|
|
6863
|
+
};
|
|
6864
|
+
};
|
|
6865
|
+
};
|
|
6866
|
+
};
|
|
6867
|
+
AiProvider_Update: {
|
|
6868
|
+
parameters: {
|
|
6869
|
+
query?: never;
|
|
6870
|
+
header?: never;
|
|
6871
|
+
path: {
|
|
6872
|
+
id: number | string;
|
|
6873
|
+
};
|
|
6874
|
+
cookie?: never;
|
|
6875
|
+
};
|
|
6876
|
+
requestBody: {
|
|
6877
|
+
content: {
|
|
6878
|
+
"application/json": components["schemas"]["AiProviderUpdateInput"];
|
|
6879
|
+
"text/json": components["schemas"]["AiProviderUpdateInput"];
|
|
6880
|
+
"application/*+json": components["schemas"]["AiProviderUpdateInput"];
|
|
6881
|
+
};
|
|
6882
|
+
};
|
|
6883
|
+
responses: {
|
|
6884
|
+
/** @description OK */
|
|
6885
|
+
200: {
|
|
6886
|
+
headers: {
|
|
6887
|
+
[name: string]: unknown;
|
|
6888
|
+
};
|
|
6889
|
+
content: {
|
|
6890
|
+
"text/plain": components["schemas"]["ResultOfboolean"];
|
|
6891
|
+
"application/json": components["schemas"]["ResultOfboolean"];
|
|
6892
|
+
"text/json": components["schemas"]["ResultOfboolean"];
|
|
6893
|
+
};
|
|
6894
|
+
};
|
|
6895
|
+
};
|
|
6896
|
+
};
|
|
6897
|
+
AiProvider_Delete: {
|
|
6898
|
+
parameters: {
|
|
6899
|
+
query?: never;
|
|
6900
|
+
header?: never;
|
|
6901
|
+
path: {
|
|
6902
|
+
id: number | string;
|
|
6903
|
+
};
|
|
6904
|
+
cookie?: never;
|
|
6905
|
+
};
|
|
6906
|
+
requestBody?: never;
|
|
6907
|
+
responses: {
|
|
6908
|
+
/** @description OK */
|
|
6909
|
+
200: {
|
|
6910
|
+
headers: {
|
|
6911
|
+
[name: string]: unknown;
|
|
6912
|
+
};
|
|
6913
|
+
content: {
|
|
6914
|
+
"text/plain": components["schemas"]["ResultOfboolean"];
|
|
6915
|
+
"application/json": components["schemas"]["ResultOfboolean"];
|
|
6916
|
+
"text/json": components["schemas"]["ResultOfboolean"];
|
|
6917
|
+
};
|
|
6918
|
+
};
|
|
6919
|
+
};
|
|
6920
|
+
};
|
|
6921
|
+
AiProvider_Presets: {
|
|
6922
|
+
parameters: {
|
|
6923
|
+
query?: never;
|
|
6924
|
+
header?: never;
|
|
6925
|
+
path?: never;
|
|
6926
|
+
cookie?: never;
|
|
6927
|
+
};
|
|
6928
|
+
requestBody?: never;
|
|
6929
|
+
responses: {
|
|
6930
|
+
/** @description OK */
|
|
6931
|
+
200: {
|
|
6932
|
+
headers: {
|
|
6933
|
+
[name: string]: unknown;
|
|
6934
|
+
};
|
|
6935
|
+
content: {
|
|
6936
|
+
"text/plain": components["schemas"]["ResultOfIReadOnlyListOfAiProviderPreset"];
|
|
6937
|
+
"application/json": components["schemas"]["ResultOfIReadOnlyListOfAiProviderPreset"];
|
|
6938
|
+
"text/json": components["schemas"]["ResultOfIReadOnlyListOfAiProviderPreset"];
|
|
6939
|
+
};
|
|
6940
|
+
};
|
|
6941
|
+
};
|
|
6942
|
+
};
|
|
6943
|
+
AiProvider_Add: {
|
|
6944
|
+
parameters: {
|
|
6945
|
+
query?: never;
|
|
6946
|
+
header?: never;
|
|
6947
|
+
path?: never;
|
|
6948
|
+
cookie?: never;
|
|
6949
|
+
};
|
|
6950
|
+
requestBody: {
|
|
6951
|
+
content: {
|
|
6952
|
+
"application/json": components["schemas"]["AiProviderAddInput"];
|
|
6953
|
+
"text/json": components["schemas"]["AiProviderAddInput"];
|
|
6954
|
+
"application/*+json": components["schemas"]["AiProviderAddInput"];
|
|
6955
|
+
};
|
|
6956
|
+
};
|
|
6957
|
+
responses: {
|
|
6958
|
+
/** @description OK */
|
|
6959
|
+
200: {
|
|
6960
|
+
headers: {
|
|
6961
|
+
[name: string]: unknown;
|
|
6962
|
+
};
|
|
6963
|
+
content: {
|
|
6964
|
+
"text/plain": components["schemas"]["ResultOflong"];
|
|
6965
|
+
"application/json": components["schemas"]["ResultOflong"];
|
|
6966
|
+
"text/json": components["schemas"]["ResultOflong"];
|
|
6967
|
+
};
|
|
6968
|
+
};
|
|
6969
|
+
};
|
|
6970
|
+
};
|
|
6971
|
+
AiProvider_SetEnabled: {
|
|
6972
|
+
parameters: {
|
|
6973
|
+
query?: {
|
|
6974
|
+
enabled?: boolean;
|
|
6975
|
+
};
|
|
6976
|
+
header?: never;
|
|
6977
|
+
path: {
|
|
6978
|
+
id: number | string;
|
|
6979
|
+
};
|
|
6980
|
+
cookie?: never;
|
|
6981
|
+
};
|
|
6982
|
+
requestBody?: never;
|
|
6983
|
+
responses: {
|
|
6984
|
+
/** @description OK */
|
|
6985
|
+
200: {
|
|
6986
|
+
headers: {
|
|
6987
|
+
[name: string]: unknown;
|
|
6988
|
+
};
|
|
6989
|
+
content: {
|
|
6990
|
+
"text/plain": components["schemas"]["ResultOfboolean"];
|
|
6991
|
+
"application/json": components["schemas"]["ResultOfboolean"];
|
|
6992
|
+
"text/json": components["schemas"]["ResultOfboolean"];
|
|
6993
|
+
};
|
|
6994
|
+
};
|
|
6995
|
+
};
|
|
6996
|
+
};
|
|
6997
|
+
AiProvider_Test: {
|
|
6998
|
+
parameters: {
|
|
6999
|
+
query?: never;
|
|
7000
|
+
header?: never;
|
|
7001
|
+
path: {
|
|
7002
|
+
id: number | string;
|
|
7003
|
+
};
|
|
7004
|
+
cookie?: never;
|
|
7005
|
+
};
|
|
7006
|
+
requestBody?: never;
|
|
7007
|
+
responses: {
|
|
7008
|
+
/** @description OK */
|
|
7009
|
+
200: {
|
|
7010
|
+
headers: {
|
|
7011
|
+
[name: string]: unknown;
|
|
7012
|
+
};
|
|
7013
|
+
content: {
|
|
7014
|
+
"text/plain": components["schemas"]["ResultOfAiTestResult"];
|
|
7015
|
+
"application/json": components["schemas"]["ResultOfAiTestResult"];
|
|
7016
|
+
"text/json": components["schemas"]["ResultOfAiTestResult"];
|
|
7017
|
+
};
|
|
7018
|
+
};
|
|
7019
|
+
};
|
|
7020
|
+
};
|
|
7021
|
+
AiUsage_Summary: {
|
|
7022
|
+
parameters: {
|
|
7023
|
+
query?: {
|
|
7024
|
+
From?: string;
|
|
7025
|
+
To?: string;
|
|
7026
|
+
ProviderCode?: string;
|
|
7027
|
+
Model?: string;
|
|
7028
|
+
Scene?: string;
|
|
7029
|
+
UserId?: number | string;
|
|
7030
|
+
GroupBy?: components["schemas"]["AiUsageGroupBy"];
|
|
7031
|
+
};
|
|
7032
|
+
header?: never;
|
|
7033
|
+
path?: never;
|
|
7034
|
+
cookie?: never;
|
|
7035
|
+
};
|
|
7036
|
+
requestBody?: never;
|
|
7037
|
+
responses: {
|
|
7038
|
+
/** @description OK */
|
|
7039
|
+
200: {
|
|
7040
|
+
headers: {
|
|
7041
|
+
[name: string]: unknown;
|
|
7042
|
+
};
|
|
7043
|
+
content: {
|
|
7044
|
+
"text/plain": components["schemas"]["ResultOfAiUsageSummary"];
|
|
7045
|
+
"application/json": components["schemas"]["ResultOfAiUsageSummary"];
|
|
7046
|
+
"text/json": components["schemas"]["ResultOfAiUsageSummary"];
|
|
7047
|
+
};
|
|
7048
|
+
};
|
|
7049
|
+
};
|
|
7050
|
+
};
|
|
7051
|
+
AiUsage_Trend: {
|
|
7052
|
+
parameters: {
|
|
7053
|
+
query?: {
|
|
7054
|
+
From?: string;
|
|
7055
|
+
To?: string;
|
|
7056
|
+
ProviderCode?: string;
|
|
7057
|
+
Model?: string;
|
|
7058
|
+
Scene?: string;
|
|
7059
|
+
UserId?: number | string;
|
|
7060
|
+
};
|
|
7061
|
+
header?: never;
|
|
7062
|
+
path?: never;
|
|
7063
|
+
cookie?: never;
|
|
7064
|
+
};
|
|
7065
|
+
requestBody?: never;
|
|
7066
|
+
responses: {
|
|
7067
|
+
/** @description OK */
|
|
7068
|
+
200: {
|
|
7069
|
+
headers: {
|
|
7070
|
+
[name: string]: unknown;
|
|
7071
|
+
};
|
|
7072
|
+
content: {
|
|
7073
|
+
"text/plain": components["schemas"]["ResultOfIReadOnlyListOfAiUsageTrendPoint"];
|
|
7074
|
+
"application/json": components["schemas"]["ResultOfIReadOnlyListOfAiUsageTrendPoint"];
|
|
7075
|
+
"text/json": components["schemas"]["ResultOfIReadOnlyListOfAiUsageTrendPoint"];
|
|
7076
|
+
};
|
|
7077
|
+
};
|
|
7078
|
+
};
|
|
7079
|
+
};
|
|
7080
|
+
AiUsage_Page: {
|
|
7081
|
+
parameters: {
|
|
7082
|
+
query?: {
|
|
7083
|
+
/** @description 起始时间(含,按 `CreateTime` 过滤;可选) */
|
|
7084
|
+
From?: string;
|
|
7085
|
+
/** @description 截止时间(含,按 `CreateTime` 过滤;可选) */
|
|
7086
|
+
To?: string;
|
|
7087
|
+
/** @description 厂商编码(精确匹配,可选) */
|
|
7088
|
+
ProviderCode?: string;
|
|
7089
|
+
/** @description 模型名(精确匹配,可选) */
|
|
7090
|
+
Model?: string;
|
|
7091
|
+
/** @description 业务场景标签(精确匹配,可选) */
|
|
7092
|
+
Scene?: string;
|
|
7093
|
+
/** @description 发起用户 Id(精确匹配,可选) */
|
|
7094
|
+
UserId?: number | string;
|
|
7095
|
+
/** @description 是否成功(精确匹配,可选) */
|
|
7096
|
+
Success?: boolean;
|
|
7097
|
+
Current?: number | string;
|
|
7098
|
+
Size?: number | string;
|
|
7099
|
+
SortField?: string;
|
|
7100
|
+
SortOrder?: string;
|
|
7101
|
+
};
|
|
7102
|
+
header?: never;
|
|
7103
|
+
path?: never;
|
|
7104
|
+
cookie?: never;
|
|
7105
|
+
};
|
|
7106
|
+
requestBody?: never;
|
|
7107
|
+
responses: {
|
|
7108
|
+
/** @description OK */
|
|
7109
|
+
200: {
|
|
7110
|
+
headers: {
|
|
7111
|
+
[name: string]: unknown;
|
|
7112
|
+
};
|
|
7113
|
+
content: {
|
|
7114
|
+
"text/plain": components["schemas"]["ResultOfPagedListOfSysAiUsageLog"];
|
|
7115
|
+
"application/json": components["schemas"]["ResultOfPagedListOfSysAiUsageLog"];
|
|
7116
|
+
"text/json": components["schemas"]["ResultOfPagedListOfSysAiUsageLog"];
|
|
7117
|
+
};
|
|
7118
|
+
};
|
|
7119
|
+
};
|
|
7120
|
+
};
|
|
6200
7121
|
Auth_Captcha: {
|
|
6201
7122
|
parameters: {
|
|
6202
7123
|
query?: never;
|