@liujitcn/kratos-admin-system 0.0.50 → 0.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/package/declarations/src/api/system/admin/v1/base_redact_output_policy.d.ts +4 -1
- package/dist/package/declarations/src/api/system/admin/v1/base_redact_storage_policy.d.ts +3 -1
- package/dist/package/declarations/src/locales/generated.d.ts +24 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_output_policy.d.ts +8 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_storage_policy.d.ts +25 -0
- package/dist/package/declarations/src/views/ai/chat/components/speech-recognition.d.ts +33 -0
- package/dist/package/src/api/system/admin/v1/base_redact_output_policy.ts +7 -0
- package/dist/package/src/api/system/admin/v1/base_redact_storage_policy.ts +7 -0
- package/dist/package/src/components/tenant-project/TenantProjectManager.vue +14 -35
- package/dist/package/src/locales/en-US.json +6 -0
- package/dist/package/src/locales/ja-JP.json +6 -0
- package/dist/package/src/locales/zh-CN.json +6 -0
- package/dist/package/src/locales/zh-TW.json +6 -0
- package/dist/package/src/rpc/system/admin/v1/base_redact_output_policy.ts +9 -0
- package/dist/package/src/rpc/system/admin/v1/base_redact_storage_policy.ts +30 -0
- package/dist/package/src/views/ai/chat/components/XSender.vue +17 -25
- package/dist/package/src/views/ai/chat/components/speech-recognition.ts +156 -0
- package/dist/package/src/views/base/job/index.vue +82 -158
- package/dist/package/src/views/base/login-policy/index.vue +12 -6
- package/dist/package/src/views/base/redact-output-policy/index.vue +19 -7
- package/dist/package/src/views/base/redact-rule/index.vue +70 -53
- package/dist/package/src/views/base/redact-storage-policy/index.vue +18 -7
- package/dist/package/src/views/base/role/index.vue +1 -1
- package/dist/package/src/views/base/{project-grant → tenant-project-grant}/index.vue +3 -1
- package/package.json +2 -2
- /package/dist/package/declarations/src/components/{tenant-project → tenant-project-grant}/ProjectGrantDialog.vue.d.ts +0 -0
- /package/dist/package/declarations/src/views/base/{project-grant → tenant-project-grant}/index.vue.d.ts +0 -0
- /package/dist/package/src/components/{tenant-project → tenant-project-grant}/ProjectGrantDialog.vue +0 -0
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ packages/modules/system
|
|
|
49
49
|
| `src/components/tenant-project/TenantProjectText.vue` | 租户项目列表展示组件,按当前租户身份自动组合名称。 |
|
|
50
50
|
| `src/components/tenant-project/TenantProjectManager.vue` | 可复用的租户项目管理组件,支持追加列、业务数据加载、操作和作用域插槽。 |
|
|
51
51
|
| `src/components/tenant-project/tenant-project-manager.ts` | 租户项目管理组件的扩展类型、双键上下文和数据合并辅助函数。 |
|
|
52
|
-
| `src/components/tenant-project/ProjectGrantDialog.vue` | 岗位、角色、部门和用户的项目授权弹窗。 |
|
|
52
|
+
| `src/components/tenant-project-grant/ProjectGrantDialog.vue` | 岗位、角色、部门和用户的项目授权弹窗。 |
|
|
53
53
|
| `src/rpc/**/*.ts` | System 页面与 API 自包含的 RPC 类型。 |
|
|
54
54
|
| `src/typings/*.d.ts` | 声明 System 页面使用的 Markdown 和 Swagger 模块。 |
|
|
55
55
|
| `package.json` | 声明依赖以及公开的模块入口、API 和 RPC 子路径。 |
|
|
@@ -106,7 +106,7 @@ packages/modules/system
|
|
|
106
106
|
| `src/views/base/post/index.vue` | 岗位管理页。 |
|
|
107
107
|
| `src/views/base/role/index.vue` | 角色管理页。 |
|
|
108
108
|
| `src/views/base/tenant/index.vue` | 租户管理页。 |
|
|
109
|
-
| `src/views/base/project-grant/index.vue`
|
|
109
|
+
| `src/views/base/tenant-project-grant/index.vue` | 项目授权管理页。 |
|
|
110
110
|
| `src/views/base/user/index.vue` | 用户管理页。 |
|
|
111
111
|
| `src/views/base/user/components/dept-tree.vue` | 用户页的部门树筛选组件。 |
|
|
112
112
|
| `src/views/profile/` | 个人中心与安全设置页面。 |
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BaseRedactOutputPolicyForm, BaseRedactOutputPolicyService, CreateBaseRedactOutputPolicyRequest, DeleteBaseRedactOutputPolicyRequest, GetBaseRedactOutputPolicyRequest, PageBaseRedactOutputPolicyRequest, PageBaseRedactOutputPolicyResponse, SetBaseRedactOutputPolicyStatusRequest, UpdateBaseRedactOutputPolicyRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_redact_output_policy";
|
|
1
|
+
import type { BaseRedactOutputPolicyForm, BaseRedactOutputPolicyService, CreateBaseRedactOutputPolicyRequest, DeleteBaseRedactOutputPolicyRequest, GetBaseRedactOutputFieldDocRequest, GetBaseRedactOutputPolicyRequest, PageBaseRedactOutputPolicyRequest, PageBaseRedactOutputPolicyResponse, SetBaseRedactOutputPolicyStatusRequest, UpdateBaseRedactOutputPolicyRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_redact_output_policy";
|
|
2
|
+
import type { BaseApiDoc } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_api";
|
|
2
3
|
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
3
4
|
/** 管理端出库脱敏策略服务。 */
|
|
4
5
|
export declare class BaseRedactOutputPolicyServiceImpl implements BaseRedactOutputPolicyService {
|
|
@@ -14,6 +15,8 @@ export declare class BaseRedactOutputPolicyServiceImpl implements BaseRedactOutp
|
|
|
14
15
|
DeleteBaseRedactOutputPolicy(request: DeleteBaseRedactOutputPolicyRequest): Promise<Empty>;
|
|
15
16
|
/** 设置出库脱敏策略状态。 */
|
|
16
17
|
SetBaseRedactOutputPolicyStatus(request: SetBaseRedactOutputPolicyStatusRequest): Promise<Empty>;
|
|
18
|
+
/** 查询可出库脱敏的响应字段文档。 */
|
|
19
|
+
GetBaseRedactOutputFieldDoc(request: GetBaseRedactOutputFieldDocRequest): Promise<BaseApiDoc>;
|
|
17
20
|
}
|
|
18
21
|
/** defBaseRedactOutputPolicyService 出库脱敏策略服务实例。 */
|
|
19
22
|
export declare const defBaseRedactOutputPolicyService: BaseRedactOutputPolicyServiceImpl;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BaseRedactStoragePolicyForm, BaseRedactStoragePolicyService, CreateBaseRedactStoragePolicyRequest, DeleteBaseRedactStoragePolicyRequest, GetBaseRedactStoragePolicyRequest, PageBaseRedactStoragePolicyRequest, PageBaseRedactStoragePolicyResponse, SetBaseRedactStoragePolicyStatusRequest, UpdateBaseRedactStoragePolicyRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_redact_storage_policy";
|
|
1
|
+
import type { BaseRedactStoragePolicyForm, BaseRedactStoragePolicyService, CreateBaseRedactStoragePolicyRequest, DeleteBaseRedactStoragePolicyRequest, GetBaseRedactStoragePolicyRequest, ListBaseRedactStorageColumnRequest, ListBaseRedactStorageColumnResponse, PageBaseRedactStoragePolicyRequest, PageBaseRedactStoragePolicyResponse, SetBaseRedactStoragePolicyStatusRequest, UpdateBaseRedactStoragePolicyRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_redact_storage_policy";
|
|
2
2
|
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
3
3
|
/** 管理端入库脱敏策略服务。 */
|
|
4
4
|
export declare class BaseRedactStoragePolicyServiceImpl implements BaseRedactStoragePolicyService {
|
|
@@ -14,6 +14,8 @@ export declare class BaseRedactStoragePolicyServiceImpl implements BaseRedactSto
|
|
|
14
14
|
DeleteBaseRedactStoragePolicy(request: DeleteBaseRedactStoragePolicyRequest): Promise<Empty>;
|
|
15
15
|
/** 设置入库脱敏策略状态。 */
|
|
16
16
|
SetBaseRedactStoragePolicyStatus(request: SetBaseRedactStoragePolicyStatusRequest): Promise<Empty>;
|
|
17
|
+
/** 查询可入库脱敏的字符串字段列表。 */
|
|
18
|
+
ListBaseRedactStorageColumn(request: ListBaseRedactStorageColumnRequest): Promise<ListBaseRedactStorageColumnResponse>;
|
|
17
19
|
}
|
|
18
20
|
/** defBaseRedactStoragePolicyService 入库脱敏策略服务实例。 */
|
|
19
21
|
export declare const defBaseRedactStoragePolicyService: BaseRedactStoragePolicyServiceImpl;
|
|
@@ -808,6 +808,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
808
808
|
"system.base.redact_rule.description.fixed_length_mask": string;
|
|
809
809
|
"system.base.redact_rule.description.hash_digest": string;
|
|
810
810
|
"system.base.redact_rule.description.ip_mask": string;
|
|
811
|
+
"system.base.redact_rule.description.string_mask": string;
|
|
811
812
|
"system.base.redact_rule.description.phone_mask": string;
|
|
812
813
|
"system.base.redact_rule.description.regex_replace": string;
|
|
813
814
|
"system.base.redact_rule.description.stable_uuid": string;
|
|
@@ -822,6 +823,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
822
823
|
"system.base.redact_rule.parameter.char": string;
|
|
823
824
|
"system.base.redact_rule.parameter.keep_first": string;
|
|
824
825
|
"system.base.redact_rule.parameter.keep_last": string;
|
|
826
|
+
"system.base.redact_rule.parameter.min_mask": string;
|
|
825
827
|
"system.base.redact_rule.parameter.keep_local_first": string;
|
|
826
828
|
"system.base.redact_rule.parameter.keep_octets": string;
|
|
827
829
|
"system.base.redact_rule.parameter.length": string;
|
|
@@ -835,6 +837,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
835
837
|
"system.base.redact_rule.template.fixed_length_mask": string;
|
|
836
838
|
"system.base.redact_rule.template.hash_digest": string;
|
|
837
839
|
"system.base.redact_rule.template.ip_mask": string;
|
|
840
|
+
"system.base.redact_rule.template.string_mask": string;
|
|
838
841
|
"system.base.redact_rule.template.phone_mask": string;
|
|
839
842
|
"system.base.redact_rule.template.regex_replace": string;
|
|
840
843
|
"system.base.redact_rule.template.stable_uuid": string;
|
|
@@ -842,6 +845,9 @@ export declare const LOCALE_MESSAGES: {
|
|
|
842
845
|
"system.base.redact_rule.template.url_mask": string;
|
|
843
846
|
"system.base.redact_rule.title": string;
|
|
844
847
|
"system.base.redact_rule.validation.parameters": string;
|
|
848
|
+
"system.base.redact_rule.validation.code": string;
|
|
849
|
+
"system.base.redact_rule.validation.name": string;
|
|
850
|
+
"system.base.redact_rule.validation.rule_type": string;
|
|
845
851
|
"system.base.redact_storage_policy.field.column_name": string;
|
|
846
852
|
"system.base.redact_storage_policy.field.parameters": string;
|
|
847
853
|
"system.base.redact_storage_policy.field.rule": string;
|
|
@@ -2374,6 +2380,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
2374
2380
|
"system.base.redact_rule.description.fixed_length_mask": string;
|
|
2375
2381
|
"system.base.redact_rule.description.hash_digest": string;
|
|
2376
2382
|
"system.base.redact_rule.description.ip_mask": string;
|
|
2383
|
+
"system.base.redact_rule.description.string_mask": string;
|
|
2377
2384
|
"system.base.redact_rule.description.phone_mask": string;
|
|
2378
2385
|
"system.base.redact_rule.description.regex_replace": string;
|
|
2379
2386
|
"system.base.redact_rule.description.stable_uuid": string;
|
|
@@ -2388,6 +2395,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
2388
2395
|
"system.base.redact_rule.parameter.char": string;
|
|
2389
2396
|
"system.base.redact_rule.parameter.keep_first": string;
|
|
2390
2397
|
"system.base.redact_rule.parameter.keep_last": string;
|
|
2398
|
+
"system.base.redact_rule.parameter.min_mask": string;
|
|
2391
2399
|
"system.base.redact_rule.parameter.keep_local_first": string;
|
|
2392
2400
|
"system.base.redact_rule.parameter.keep_octets": string;
|
|
2393
2401
|
"system.base.redact_rule.parameter.length": string;
|
|
@@ -2401,6 +2409,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
2401
2409
|
"system.base.redact_rule.template.fixed_length_mask": string;
|
|
2402
2410
|
"system.base.redact_rule.template.hash_digest": string;
|
|
2403
2411
|
"system.base.redact_rule.template.ip_mask": string;
|
|
2412
|
+
"system.base.redact_rule.template.string_mask": string;
|
|
2404
2413
|
"system.base.redact_rule.template.phone_mask": string;
|
|
2405
2414
|
"system.base.redact_rule.template.regex_replace": string;
|
|
2406
2415
|
"system.base.redact_rule.template.stable_uuid": string;
|
|
@@ -2408,6 +2417,9 @@ export declare const LOCALE_MESSAGES: {
|
|
|
2408
2417
|
"system.base.redact_rule.template.url_mask": string;
|
|
2409
2418
|
"system.base.redact_rule.title": string;
|
|
2410
2419
|
"system.base.redact_rule.validation.parameters": string;
|
|
2420
|
+
"system.base.redact_rule.validation.code": string;
|
|
2421
|
+
"system.base.redact_rule.validation.name": string;
|
|
2422
|
+
"system.base.redact_rule.validation.rule_type": string;
|
|
2411
2423
|
"system.base.redact_storage_policy.field.column_name": string;
|
|
2412
2424
|
"system.base.redact_storage_policy.field.parameters": string;
|
|
2413
2425
|
"system.base.redact_storage_policy.field.rule": string;
|
|
@@ -3940,6 +3952,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
3940
3952
|
"system.base.redact_rule.description.fixed_length_mask": string;
|
|
3941
3953
|
"system.base.redact_rule.description.hash_digest": string;
|
|
3942
3954
|
"system.base.redact_rule.description.ip_mask": string;
|
|
3955
|
+
"system.base.redact_rule.description.string_mask": string;
|
|
3943
3956
|
"system.base.redact_rule.description.phone_mask": string;
|
|
3944
3957
|
"system.base.redact_rule.description.regex_replace": string;
|
|
3945
3958
|
"system.base.redact_rule.description.stable_uuid": string;
|
|
@@ -3954,6 +3967,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
3954
3967
|
"system.base.redact_rule.parameter.char": string;
|
|
3955
3968
|
"system.base.redact_rule.parameter.keep_first": string;
|
|
3956
3969
|
"system.base.redact_rule.parameter.keep_last": string;
|
|
3970
|
+
"system.base.redact_rule.parameter.min_mask": string;
|
|
3957
3971
|
"system.base.redact_rule.parameter.keep_local_first": string;
|
|
3958
3972
|
"system.base.redact_rule.parameter.keep_octets": string;
|
|
3959
3973
|
"system.base.redact_rule.parameter.length": string;
|
|
@@ -3967,6 +3981,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
3967
3981
|
"system.base.redact_rule.template.fixed_length_mask": string;
|
|
3968
3982
|
"system.base.redact_rule.template.hash_digest": string;
|
|
3969
3983
|
"system.base.redact_rule.template.ip_mask": string;
|
|
3984
|
+
"system.base.redact_rule.template.string_mask": string;
|
|
3970
3985
|
"system.base.redact_rule.template.phone_mask": string;
|
|
3971
3986
|
"system.base.redact_rule.template.regex_replace": string;
|
|
3972
3987
|
"system.base.redact_rule.template.stable_uuid": string;
|
|
@@ -3974,6 +3989,9 @@ export declare const LOCALE_MESSAGES: {
|
|
|
3974
3989
|
"system.base.redact_rule.template.url_mask": string;
|
|
3975
3990
|
"system.base.redact_rule.title": string;
|
|
3976
3991
|
"system.base.redact_rule.validation.parameters": string;
|
|
3992
|
+
"system.base.redact_rule.validation.code": string;
|
|
3993
|
+
"system.base.redact_rule.validation.name": string;
|
|
3994
|
+
"system.base.redact_rule.validation.rule_type": string;
|
|
3977
3995
|
"system.base.redact_storage_policy.field.column_name": string;
|
|
3978
3996
|
"system.base.redact_storage_policy.field.parameters": string;
|
|
3979
3997
|
"system.base.redact_storage_policy.field.rule": string;
|
|
@@ -5506,6 +5524,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
5506
5524
|
"system.base.redact_rule.description.fixed_length_mask": string;
|
|
5507
5525
|
"system.base.redact_rule.description.hash_digest": string;
|
|
5508
5526
|
"system.base.redact_rule.description.ip_mask": string;
|
|
5527
|
+
"system.base.redact_rule.description.string_mask": string;
|
|
5509
5528
|
"system.base.redact_rule.description.phone_mask": string;
|
|
5510
5529
|
"system.base.redact_rule.description.regex_replace": string;
|
|
5511
5530
|
"system.base.redact_rule.description.stable_uuid": string;
|
|
@@ -5520,6 +5539,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
5520
5539
|
"system.base.redact_rule.parameter.char": string;
|
|
5521
5540
|
"system.base.redact_rule.parameter.keep_first": string;
|
|
5522
5541
|
"system.base.redact_rule.parameter.keep_last": string;
|
|
5542
|
+
"system.base.redact_rule.parameter.min_mask": string;
|
|
5523
5543
|
"system.base.redact_rule.parameter.keep_local_first": string;
|
|
5524
5544
|
"system.base.redact_rule.parameter.keep_octets": string;
|
|
5525
5545
|
"system.base.redact_rule.parameter.length": string;
|
|
@@ -5533,6 +5553,7 @@ export declare const LOCALE_MESSAGES: {
|
|
|
5533
5553
|
"system.base.redact_rule.template.fixed_length_mask": string;
|
|
5534
5554
|
"system.base.redact_rule.template.hash_digest": string;
|
|
5535
5555
|
"system.base.redact_rule.template.ip_mask": string;
|
|
5556
|
+
"system.base.redact_rule.template.string_mask": string;
|
|
5536
5557
|
"system.base.redact_rule.template.phone_mask": string;
|
|
5537
5558
|
"system.base.redact_rule.template.regex_replace": string;
|
|
5538
5559
|
"system.base.redact_rule.template.stable_uuid": string;
|
|
@@ -5540,6 +5561,9 @@ export declare const LOCALE_MESSAGES: {
|
|
|
5540
5561
|
"system.base.redact_rule.template.url_mask": string;
|
|
5541
5562
|
"system.base.redact_rule.title": string;
|
|
5542
5563
|
"system.base.redact_rule.validation.parameters": string;
|
|
5564
|
+
"system.base.redact_rule.validation.code": string;
|
|
5565
|
+
"system.base.redact_rule.validation.name": string;
|
|
5566
|
+
"system.base.redact_rule.validation.rule_type": string;
|
|
5543
5567
|
"system.base.redact_storage_policy.field.column_name": string;
|
|
5544
5568
|
"system.base.redact_storage_policy.field.parameters": string;
|
|
5545
5569
|
"system.base.redact_storage_policy.field.rule": string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Status } from "../../../common/v1/enum";
|
|
2
2
|
import type { Empty } from "../../../google/protobuf/empty";
|
|
3
|
+
import type { BaseApiDoc } from "./base_api";
|
|
3
4
|
/** 出库脱敏策略处理模式。 */
|
|
4
5
|
export declare enum BaseRedactOutputPolicyMode {
|
|
5
6
|
/** BASE_REDACT_OUTPUT_POLICY_MODE_UNSPECIFIED - 未指定模式。 */
|
|
@@ -118,6 +119,11 @@ export interface BaseRedactOutputPolicy {
|
|
|
118
119
|
/** 更新时间 */
|
|
119
120
|
updated_at: string;
|
|
120
121
|
}
|
|
122
|
+
/** 查询可出库脱敏字段请求。 */
|
|
123
|
+
export interface GetBaseRedactOutputFieldDocRequest {
|
|
124
|
+
/** 接口ID */
|
|
125
|
+
api_id: number;
|
|
126
|
+
}
|
|
121
127
|
/** Admin出库脱敏策略服务。 */
|
|
122
128
|
export interface BaseRedactOutputPolicyService {
|
|
123
129
|
/** 查询出库脱敏策略分页列表。 */
|
|
@@ -132,4 +138,6 @@ export interface BaseRedactOutputPolicyService {
|
|
|
132
138
|
DeleteBaseRedactOutputPolicy(request: DeleteBaseRedactOutputPolicyRequest): Promise<Empty>;
|
|
133
139
|
/** 设置出库脱敏策略状态。 */
|
|
134
140
|
SetBaseRedactOutputPolicyStatus(request: SetBaseRedactOutputPolicyStatusRequest): Promise<Empty>;
|
|
141
|
+
/** 查询可出库脱敏的响应字段文档。 */
|
|
142
|
+
GetBaseRedactOutputFieldDoc(request: GetBaseRedactOutputFieldDocRequest): Promise<BaseApiDoc>;
|
|
135
143
|
}
|
|
@@ -97,6 +97,29 @@ export interface BaseRedactStoragePolicy {
|
|
|
97
97
|
/** 更新时间 */
|
|
98
98
|
updated_at: string;
|
|
99
99
|
}
|
|
100
|
+
/** 查询可入库脱敏字段请求。 */
|
|
101
|
+
export interface ListBaseRedactStorageColumnRequest {
|
|
102
|
+
/** 数据源名称 */
|
|
103
|
+
source_name: string;
|
|
104
|
+
/** 数据库表名 */
|
|
105
|
+
table_name: string;
|
|
106
|
+
}
|
|
107
|
+
/** 可入库脱敏字段。 */
|
|
108
|
+
export interface BaseRedactStorageColumn {
|
|
109
|
+
/** 字段名 */
|
|
110
|
+
name: string;
|
|
111
|
+
/** 字段注释 */
|
|
112
|
+
comment: string;
|
|
113
|
+
/** 数据库类型 */
|
|
114
|
+
db_type: string;
|
|
115
|
+
/** 数据库完整类型 */
|
|
116
|
+
column_type: string;
|
|
117
|
+
}
|
|
118
|
+
/** 可入库脱敏字段列表响应。 */
|
|
119
|
+
export interface ListBaseRedactStorageColumnResponse {
|
|
120
|
+
/** 可脱敏字段列表 */
|
|
121
|
+
columns: BaseRedactStorageColumn[];
|
|
122
|
+
}
|
|
100
123
|
/** Admin入库脱敏策略服务。 */
|
|
101
124
|
export interface BaseRedactStoragePolicyService {
|
|
102
125
|
/** 查询入库脱敏策略分页列表。 */
|
|
@@ -111,4 +134,6 @@ export interface BaseRedactStoragePolicyService {
|
|
|
111
134
|
DeleteBaseRedactStoragePolicy(request: DeleteBaseRedactStoragePolicyRequest): Promise<Empty>;
|
|
112
135
|
/** 设置入库脱敏策略状态。 */
|
|
113
136
|
SetBaseRedactStoragePolicyStatus(request: SetBaseRedactStoragePolicyStatusRequest): Promise<Empty>;
|
|
137
|
+
/** 查询可入库脱敏的字符串字段列表。 */
|
|
138
|
+
ListBaseRedactStorageColumn(request: ListBaseRedactStorageColumnRequest): Promise<ListBaseRedactStorageColumnResponse>;
|
|
114
139
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** 语音识别结果的最小结构,便于在不同浏览器实现间复用。 */
|
|
2
|
+
export type SpeechResultList = ArrayLike<{
|
|
3
|
+
0?: {
|
|
4
|
+
transcript: string;
|
|
5
|
+
};
|
|
6
|
+
length: number;
|
|
7
|
+
}>;
|
|
8
|
+
/** 语音识别错误的最小结构,兼容浏览器事件和不支持错误。 */
|
|
9
|
+
export type SpeechRecognitionError = {
|
|
10
|
+
code?: number;
|
|
11
|
+
error?: string;
|
|
12
|
+
message?: string;
|
|
13
|
+
};
|
|
14
|
+
type SpeechRecognitionOptions = {
|
|
15
|
+
/** 识别错误回调。 */
|
|
16
|
+
onError?: (error: SpeechRecognitionError) => void;
|
|
17
|
+
/** 识别开始回调。 */
|
|
18
|
+
onStart?: () => void;
|
|
19
|
+
/** 识别结束回调。 */
|
|
20
|
+
onEnd?: (text: string) => void;
|
|
21
|
+
/** 识别结果回调。 */
|
|
22
|
+
onResult?: (text: string) => void;
|
|
23
|
+
};
|
|
24
|
+
/** 收集一次识别事件中的完整文本。 */
|
|
25
|
+
export declare function collectSpeechResultText(results: SpeechResultList): string;
|
|
26
|
+
/** 创建浏览器语音识别实例,并统一结果、状态和卸载处理。 */
|
|
27
|
+
export declare function useSpeechRecognition({ onError, onStart, onEnd, onResult }?: SpeechRecognitionOptions): {
|
|
28
|
+
loading: globalThis.Ref<boolean, boolean>;
|
|
29
|
+
start: () => void;
|
|
30
|
+
stop: () => void;
|
|
31
|
+
value: globalThis.Ref<string, string>;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
@@ -4,12 +4,14 @@ import type {
|
|
|
4
4
|
BaseRedactOutputPolicyService,
|
|
5
5
|
CreateBaseRedactOutputPolicyRequest,
|
|
6
6
|
DeleteBaseRedactOutputPolicyRequest,
|
|
7
|
+
GetBaseRedactOutputFieldDocRequest,
|
|
7
8
|
GetBaseRedactOutputPolicyRequest,
|
|
8
9
|
PageBaseRedactOutputPolicyRequest,
|
|
9
10
|
PageBaseRedactOutputPolicyResponse,
|
|
10
11
|
SetBaseRedactOutputPolicyStatusRequest,
|
|
11
12
|
UpdateBaseRedactOutputPolicyRequest
|
|
12
13
|
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_redact_output_policy";
|
|
14
|
+
import type { BaseApiDoc } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_api";
|
|
13
15
|
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
14
16
|
|
|
15
17
|
const BASE_REDACT_OUTPUT_POLICY_URL = "/v1/admin/base/redact-output-policy";
|
|
@@ -45,6 +47,11 @@ export class BaseRedactOutputPolicyServiceImpl implements BaseRedactOutputPolicy
|
|
|
45
47
|
SetBaseRedactOutputPolicyStatus(request: SetBaseRedactOutputPolicyStatusRequest): Promise<Empty> {
|
|
46
48
|
return service<SetBaseRedactOutputPolicyStatusRequest, Empty>({ url: `${BASE_REDACT_OUTPUT_POLICY_URL}/${request.id}/status`, method: "put", data: request });
|
|
47
49
|
}
|
|
50
|
+
|
|
51
|
+
/** 查询可出库脱敏的响应字段文档。 */
|
|
52
|
+
GetBaseRedactOutputFieldDoc(request: GetBaseRedactOutputFieldDocRequest): Promise<BaseApiDoc> {
|
|
53
|
+
return service<GetBaseRedactOutputFieldDocRequest, BaseApiDoc>({ url: `${BASE_REDACT_OUTPUT_POLICY_URL}/fields/${request.api_id}`, method: "get" });
|
|
54
|
+
}
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
/** defBaseRedactOutputPolicyService 出库脱敏策略服务实例。 */
|
|
@@ -5,6 +5,8 @@ import type {
|
|
|
5
5
|
CreateBaseRedactStoragePolicyRequest,
|
|
6
6
|
DeleteBaseRedactStoragePolicyRequest,
|
|
7
7
|
GetBaseRedactStoragePolicyRequest,
|
|
8
|
+
ListBaseRedactStorageColumnRequest,
|
|
9
|
+
ListBaseRedactStorageColumnResponse,
|
|
8
10
|
PageBaseRedactStoragePolicyRequest,
|
|
9
11
|
PageBaseRedactStoragePolicyResponse,
|
|
10
12
|
SetBaseRedactStoragePolicyStatusRequest,
|
|
@@ -45,6 +47,11 @@ export class BaseRedactStoragePolicyServiceImpl implements BaseRedactStoragePoli
|
|
|
45
47
|
SetBaseRedactStoragePolicyStatus(request: SetBaseRedactStoragePolicyStatusRequest): Promise<Empty> {
|
|
46
48
|
return service<SetBaseRedactStoragePolicyStatusRequest, Empty>({ url: `${BASE_REDACT_STORAGE_POLICY_URL}/${request.id}/status`, method: "put", data: request });
|
|
47
49
|
}
|
|
50
|
+
|
|
51
|
+
/** 查询可入库脱敏的字符串字段列表。 */
|
|
52
|
+
ListBaseRedactStorageColumn(request: ListBaseRedactStorageColumnRequest): Promise<ListBaseRedactStorageColumnResponse> {
|
|
53
|
+
return service<ListBaseRedactStorageColumnRequest, ListBaseRedactStorageColumnResponse>({ url: `${BASE_REDACT_STORAGE_POLICY_URL}/columns`, method: "get", params: request });
|
|
54
|
+
}
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
/** defBaseRedactStoragePolicyService 入库脱敏策略服务实例。 */
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</template>
|
|
29
29
|
|
|
30
30
|
<script setup lang="ts">
|
|
31
|
-
import { computed,
|
|
31
|
+
import { computed, reactive, ref, useSlots } from "vue";
|
|
32
32
|
import { ElMessage, ElMessageBox } from "element-plus";
|
|
33
33
|
import { CirclePlus, Delete, EditPen } from "@element-plus/icons-vue";
|
|
34
34
|
import type { ColumnProps, HeaderActionProps, ProTableInstance, RenderScope, TableActionProps } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
|
|
@@ -66,11 +66,8 @@ const emit = defineEmits<{
|
|
|
66
66
|
"extra-data-error": [error: unknown];
|
|
67
67
|
}>();
|
|
68
68
|
|
|
69
|
-
/**
|
|
70
|
-
type BaseTenantProjectFormState = Omit<BaseTenantProjectForm, "tenant_id"
|
|
71
|
-
/** 租户ID。 */
|
|
72
|
-
tenant_id?: number;
|
|
73
|
-
};
|
|
69
|
+
/** 项目表单状态,租户由服务端租户上下文自动补全。 */
|
|
70
|
+
type BaseTenantProjectFormState = Omit<BaseTenantProjectForm, "tenant_id">;
|
|
74
71
|
|
|
75
72
|
const { BUTTONS } = useAuthButtons();
|
|
76
73
|
const slots = useSlots();
|
|
@@ -91,8 +88,6 @@ const statusOptions = computed<ProFormOption[]>(() => [
|
|
|
91
88
|
const formData = reactive<BaseTenantProjectFormState>({
|
|
92
89
|
/** 项目ID。 */
|
|
93
90
|
id: 0,
|
|
94
|
-
/** 租户ID。 */
|
|
95
|
-
tenant_id: undefined,
|
|
96
91
|
/** 项目名称。 */
|
|
97
92
|
name: "",
|
|
98
93
|
/** 项目编号。 */
|
|
@@ -105,13 +100,6 @@ const formData = reactive<BaseTenantProjectFormState>({
|
|
|
105
100
|
remark: ""
|
|
106
101
|
});
|
|
107
102
|
const rules = computed(() => ({
|
|
108
|
-
tenant_id: [
|
|
109
|
-
{
|
|
110
|
-
required: true,
|
|
111
|
-
message: t("common.validation.required_select", { field: t("common.field.tenant") }),
|
|
112
|
-
trigger: "change"
|
|
113
|
-
}
|
|
114
|
-
],
|
|
115
103
|
name: [
|
|
116
104
|
{
|
|
117
105
|
required: true,
|
|
@@ -153,14 +141,10 @@ const rules = computed(() => ({
|
|
|
153
141
|
]
|
|
154
142
|
}));
|
|
155
143
|
|
|
156
|
-
const { isDefaultTenant
|
|
157
|
-
onMounted(() => {
|
|
158
|
-
if (isDefaultTenant.value) void loadTenantOptions();
|
|
159
|
-
});
|
|
144
|
+
const { isDefaultTenant } = useTenantScope();
|
|
160
145
|
|
|
161
146
|
/** 项目表单字段配置。 */
|
|
162
147
|
const formFields = computed<ProFormField[]>(() => [
|
|
163
|
-
tenantFormField({ label: t("common.field.tenant"), disabledOnEdit: true }),
|
|
164
148
|
{
|
|
165
149
|
prop: "name",
|
|
166
150
|
label: t("system.base.tenant_project.field.name"),
|
|
@@ -220,7 +204,6 @@ function resolveProjectBoolean(value: boolean | ((context: TenantProjectContext)
|
|
|
220
204
|
/** 项目表格列配置。 */
|
|
221
205
|
const columns = computed<ColumnProps[]>(() => [
|
|
222
206
|
{ type: "selection", width: 55 },
|
|
223
|
-
...tenantColumns({ label: t("common.field.tenant"), order: 1 }),
|
|
224
207
|
{ prop: "name", label: t("system.base.tenant_project.field.name"), minWidth: 180, search: { el: "input" } },
|
|
225
208
|
{ prop: "code", label: t("system.base.tenant_project.field.code"), minWidth: 140, search: { el: "input" } },
|
|
226
209
|
{ prop: "sort", label: t("common.field.sort"), minWidth: 90, align: "right" },
|
|
@@ -235,7 +218,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
235
218
|
inactiveValue: Status.STATUS_DISABLE,
|
|
236
219
|
activeText: t("common.status.enabled"),
|
|
237
220
|
inactiveText: t("common.status.disabled"),
|
|
238
|
-
disabled: () => !BUTTONS.value["base:tenant:project:status"],
|
|
221
|
+
disabled: () => !isDefaultTenant.value || !BUTTONS.value["base:tenant:project:status"],
|
|
239
222
|
beforeChange: scope => handleBeforeSetStatus(scope.row as BaseTenantProject)
|
|
240
223
|
}
|
|
241
224
|
},
|
|
@@ -254,7 +237,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
254
237
|
type: "primary",
|
|
255
238
|
link: true,
|
|
256
239
|
icon: EditPen,
|
|
257
|
-
hidden: () => !BUTTONS.value["base:tenant:project:update"],
|
|
240
|
+
hidden: () => !isDefaultTenant.value || !BUTTONS.value["base:tenant:project:update"],
|
|
258
241
|
params: scope => ({ projectId: scope.row.id }),
|
|
259
242
|
onClick: (scope, params) => handleOpenDialog((params?.projectId as number | undefined) ?? (scope.row as BaseTenantProject).id)
|
|
260
243
|
},
|
|
@@ -263,7 +246,7 @@ const columns = computed<ColumnProps[]>(() => [
|
|
|
263
246
|
type: "danger",
|
|
264
247
|
link: true,
|
|
265
248
|
icon: Delete,
|
|
266
|
-
hidden: () => !BUTTONS.value["base:tenant:project:delete"],
|
|
249
|
+
hidden: () => !isDefaultTenant.value || !BUTTONS.value["base:tenant:project:delete"],
|
|
267
250
|
onClick: scope => handleDelete(scope.row as BaseTenantProject)
|
|
268
251
|
}
|
|
269
252
|
]
|
|
@@ -276,14 +259,14 @@ const headerActions = computed<HeaderActionProps[]>(() => [
|
|
|
276
259
|
label: t("common.action.create"),
|
|
277
260
|
type: "success",
|
|
278
261
|
icon: CirclePlus,
|
|
279
|
-
hidden: () => !BUTTONS.value["base:tenant:project:create"],
|
|
262
|
+
hidden: () => !isDefaultTenant.value || !BUTTONS.value["base:tenant:project:create"],
|
|
280
263
|
onClick: () => handleOpenDialog()
|
|
281
264
|
},
|
|
282
265
|
{
|
|
283
266
|
label: t("common.action.delete"),
|
|
284
267
|
type: "danger",
|
|
285
268
|
icon: Delete,
|
|
286
|
-
hidden: () => !BUTTONS.value["base:tenant:project:delete"],
|
|
269
|
+
hidden: () => !isDefaultTenant.value || !BUTTONS.value["base:tenant:project:delete"],
|
|
287
270
|
disabled: scope => !scope.selectedList.length,
|
|
288
271
|
onClick: scope => handleDelete(scope.selectedList as BaseTenantProject[])
|
|
289
272
|
}
|
|
@@ -292,10 +275,7 @@ const headerActions = computed<HeaderActionProps[]>(() => [
|
|
|
292
275
|
/** 请求项目分页列表并加载当前页外部业务字段。 */
|
|
293
276
|
async function requestBaseTenantProjectTable(params: PageBaseTenantProjectRequest) {
|
|
294
277
|
const revision = ++extraDataRequestRevision;
|
|
295
|
-
const request =
|
|
296
|
-
...buildPageRequest(params),
|
|
297
|
-
tenant_id: toRequestTenantId(params.tenant_id)
|
|
298
|
-
} as PageBaseTenantProjectRequest;
|
|
278
|
+
const request = buildPageRequest(params) as PageBaseTenantProjectRequest;
|
|
299
279
|
const data = await defBaseTenantProjectService.PageBaseTenantProject(request);
|
|
300
280
|
const projects = data.base_tenant_projects ?? [];
|
|
301
281
|
if (!props.loadExtraData || !projects.length) {
|
|
@@ -336,7 +316,6 @@ function resolveTenantProjectSlotContext(scope: Record<string, any>) {
|
|
|
336
316
|
/** 打开项目编辑弹窗。 */
|
|
337
317
|
async function handleOpenDialog(id?: number) {
|
|
338
318
|
resetForm();
|
|
339
|
-
await loadTenantOptions();
|
|
340
319
|
dialog.titleKey = id ? "common.action.edit_resource" : "common.action.create_resource";
|
|
341
320
|
dialog.visible = true;
|
|
342
321
|
if (id) Object.assign(formData, await defBaseTenantProjectService.GetBaseTenantProject({ id }));
|
|
@@ -353,7 +332,6 @@ function resetForm() {
|
|
|
353
332
|
formDialogRef.value?.resetFields();
|
|
354
333
|
formDialogRef.value?.clearValidate();
|
|
355
334
|
formData.id = 0;
|
|
356
|
-
formData.tenant_id = undefined;
|
|
357
335
|
formData.name = "";
|
|
358
336
|
formData.code = "";
|
|
359
337
|
formData.sort = 1;
|
|
@@ -365,10 +343,11 @@ function resetForm() {
|
|
|
365
343
|
function handleSubmit() {
|
|
366
344
|
formDialogRef.value?.validate()?.then(valid => {
|
|
367
345
|
if (!valid) return;
|
|
368
|
-
const submitData = JSON.parse(JSON.stringify(formData)) as BaseTenantProjectForm
|
|
346
|
+
const submitData = JSON.parse(JSON.stringify(formData)) as Partial<BaseTenantProjectForm>;
|
|
347
|
+
delete submitData.tenant_id;
|
|
369
348
|
const request = submitData.id
|
|
370
|
-
? defBaseTenantProjectService.UpdateBaseTenantProject({ base_tenant_project: submitData })
|
|
371
|
-
: defBaseTenantProjectService.CreateBaseTenantProject({ base_tenant_project: submitData });
|
|
349
|
+
? defBaseTenantProjectService.UpdateBaseTenantProject({ base_tenant_project: submitData as BaseTenantProjectForm })
|
|
350
|
+
: defBaseTenantProjectService.CreateBaseTenantProject({ base_tenant_project: submitData as BaseTenantProjectForm });
|
|
372
351
|
request.then(() => {
|
|
373
352
|
ElMessage.success(
|
|
374
353
|
t(submitData.id ? "common.message.update_success" : "common.message.create_success", {
|
|
@@ -807,6 +807,7 @@
|
|
|
807
807
|
"system.base.redact_rule.description.fixed_length_mask": "Replace content with a fixed character while preserving its length",
|
|
808
808
|
"system.base.redact_rule.description.hash_digest": "Generate an irreversible result with a digest algorithm",
|
|
809
809
|
"system.base.redact_rule.description.ip_mask": "Keep the IP prefix octets and mask the rest",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "Keep configured leading and trailing characters and mask the middle",
|
|
810
811
|
"system.base.redact_rule.description.phone_mask": "Keep the first three and last four digits of a phone number",
|
|
811
812
|
"system.base.redact_rule.description.regex_replace": "Replace matching content with a regular expression",
|
|
812
813
|
"system.base.redact_rule.description.stable_uuid": "Convert text to a stable UUID",
|
|
@@ -821,6 +822,7 @@
|
|
|
821
822
|
"system.base.redact_rule.parameter.char": "Replacement character",
|
|
822
823
|
"system.base.redact_rule.parameter.keep_first": "Leading characters to keep",
|
|
823
824
|
"system.base.redact_rule.parameter.keep_last": "Trailing characters to keep",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "Minimum masked characters",
|
|
824
826
|
"system.base.redact_rule.parameter.keep_local_first": "Local-part characters to keep",
|
|
825
827
|
"system.base.redact_rule.parameter.keep_octets": "IP octets to keep",
|
|
826
828
|
"system.base.redact_rule.parameter.length": "Kept length",
|
|
@@ -834,6 +836,7 @@
|
|
|
834
836
|
"system.base.redact_rule.template.fixed_length_mask": "Fixed-length mask",
|
|
835
837
|
"system.base.redact_rule.template.hash_digest": "Hash digest",
|
|
836
838
|
"system.base.redact_rule.template.ip_mask": "IP address mask",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "Generic string mask",
|
|
837
840
|
"system.base.redact_rule.template.phone_mask": "Phone number mask",
|
|
838
841
|
"system.base.redact_rule.template.regex_replace": "Regular expression replacement",
|
|
839
842
|
"system.base.redact_rule.template.stable_uuid": "Stable UUID",
|
|
@@ -841,6 +844,9 @@
|
|
|
841
844
|
"system.base.redact_rule.template.url_mask": "URL parameter mask",
|
|
842
845
|
"system.base.redact_rule.title": "Redaction rules",
|
|
843
846
|
"system.base.redact_rule.validation.parameters": "Enter the rule parameters",
|
|
847
|
+
"system.base.redact_rule.validation.code": "Enter the rule code",
|
|
848
|
+
"system.base.redact_rule.validation.name": "Enter the rule name",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "Select the rule type",
|
|
844
850
|
"system.base.redact_storage_policy.field.column_name": "Field",
|
|
845
851
|
"system.base.redact_storage_policy.field.parameters": "Rule parameters",
|
|
846
852
|
"system.base.redact_storage_policy.field.rule": "Redaction rule",
|
|
@@ -807,6 +807,7 @@
|
|
|
807
807
|
"system.base.redact_rule.description.fixed_length_mask": "固定文字で置換し、元の長さを保持します",
|
|
808
808
|
"system.base.redact_rule.description.hash_digest": "ダイジェストアルゴリズムで不可逆な結果を生成します",
|
|
809
809
|
"system.base.redact_rule.description.ip_mask": "IP の先頭オクテットを保持し、残りをマスクします",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "設定した先頭と末尾の文字を保持し、中間をマスクします",
|
|
810
811
|
"system.base.redact_rule.description.phone_mask": "電話番号の先頭 3 桁と末尾 4 桁を保持します",
|
|
811
812
|
"system.base.redact_rule.description.regex_replace": "正規表現で一致した内容を置換します",
|
|
812
813
|
"system.base.redact_rule.description.stable_uuid": "テキストを安定 UUID に変換します",
|
|
@@ -821,6 +822,7 @@
|
|
|
821
822
|
"system.base.redact_rule.parameter.char": "置換文字",
|
|
822
823
|
"system.base.redact_rule.parameter.keep_first": "先頭から保持する文字数",
|
|
823
824
|
"system.base.redact_rule.parameter.keep_last": "末尾から保持する文字数",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最小マスク文字数",
|
|
824
826
|
"system.base.redact_rule.parameter.keep_local_first": "ローカル部で保持する文字数",
|
|
825
827
|
"system.base.redact_rule.parameter.keep_octets": "保持するオクテット数",
|
|
826
828
|
"system.base.redact_rule.parameter.length": "保持する長さ",
|
|
@@ -834,6 +836,7 @@
|
|
|
834
836
|
"system.base.redact_rule.template.fixed_length_mask": "固定長マスク",
|
|
835
837
|
"system.base.redact_rule.template.hash_digest": "ハッシュダイジェスト",
|
|
836
838
|
"system.base.redact_rule.template.ip_mask": "IP アドレスマスク",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "汎用文字列マスク",
|
|
837
840
|
"system.base.redact_rule.template.phone_mask": "電話番号マスク",
|
|
838
841
|
"system.base.redact_rule.template.regex_replace": "正規表現置換",
|
|
839
842
|
"system.base.redact_rule.template.stable_uuid": "安定 UUID",
|
|
@@ -841,6 +844,9 @@
|
|
|
841
844
|
"system.base.redact_rule.template.url_mask": "URL パラメーターマスク",
|
|
842
845
|
"system.base.redact_rule.title": "脱敏ルール",
|
|
843
846
|
"system.base.redact_rule.validation.parameters": "ルールパラメーターを入力してください",
|
|
847
|
+
"system.base.redact_rule.validation.code": "ルールコードを入力してください",
|
|
848
|
+
"system.base.redact_rule.validation.name": "ルール名を入力してください",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "ルールタイプを選択してください",
|
|
844
850
|
"system.base.redact_storage_policy.field.column_name": "フィールド",
|
|
845
851
|
"system.base.redact_storage_policy.field.parameters": "ルールパラメーター",
|
|
846
852
|
"system.base.redact_storage_policy.field.rule": "脱敏ルール",
|
|
@@ -807,6 +807,7 @@
|
|
|
807
807
|
"system.base.redact_rule.description.fixed_length_mask": "使用固定字符替换为等长文本",
|
|
808
808
|
"system.base.redact_rule.description.hash_digest": "使用摘要算法生成不可逆结果",
|
|
809
809
|
"system.base.redact_rule.description.ip_mask": "保留 IP 前缀网段并隐藏其余部分",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "按配置保留字符串首尾字符并掩码中间内容",
|
|
810
811
|
"system.base.redact_rule.description.phone_mask": "保留手机号前三位和后四位",
|
|
811
812
|
"system.base.redact_rule.description.regex_replace": "使用正则表达式替换匹配内容",
|
|
812
813
|
"system.base.redact_rule.description.stable_uuid": "将文本转换为稳定 UUID",
|
|
@@ -821,6 +822,7 @@
|
|
|
821
822
|
"system.base.redact_rule.parameter.char": "替换字符",
|
|
822
823
|
"system.base.redact_rule.parameter.keep_first": "保留开头字符数",
|
|
823
824
|
"system.base.redact_rule.parameter.keep_last": "保留结尾字符数",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最少脱敏字符数",
|
|
824
826
|
"system.base.redact_rule.parameter.keep_local_first": "保留本地部分字符数",
|
|
825
827
|
"system.base.redact_rule.parameter.keep_octets": "保留网段数",
|
|
826
828
|
"system.base.redact_rule.parameter.length": "保留长度",
|
|
@@ -834,6 +836,7 @@
|
|
|
834
836
|
"system.base.redact_rule.template.fixed_length_mask": "等长掩码",
|
|
835
837
|
"system.base.redact_rule.template.hash_digest": "哈希摘要",
|
|
836
838
|
"system.base.redact_rule.template.ip_mask": "IP 地址掩码",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "通用字符串掩码",
|
|
837
840
|
"system.base.redact_rule.template.phone_mask": "手机号掩码",
|
|
838
841
|
"system.base.redact_rule.template.regex_replace": "正则替换",
|
|
839
842
|
"system.base.redact_rule.template.stable_uuid": "稳定 UUID",
|
|
@@ -841,6 +844,9 @@
|
|
|
841
844
|
"system.base.redact_rule.template.url_mask": "URL 参数掩码",
|
|
842
845
|
"system.base.redact_rule.title": "脱敏规则",
|
|
843
846
|
"system.base.redact_rule.validation.parameters": "请输入规则参数",
|
|
847
|
+
"system.base.redact_rule.validation.code": "请输入规则编码",
|
|
848
|
+
"system.base.redact_rule.validation.name": "请输入规则名称",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "请选择规则类型",
|
|
844
850
|
"system.base.redact_storage_policy.field.column_name": "字段",
|
|
845
851
|
"system.base.redact_storage_policy.field.parameters": "规则参数",
|
|
846
852
|
"system.base.redact_storage_policy.field.rule": "脱敏规则",
|
|
@@ -807,6 +807,7 @@
|
|
|
807
807
|
"system.base.redact_rule.description.fixed_length_mask": "使用固定字元取代為等長文字",
|
|
808
808
|
"system.base.redact_rule.description.hash_digest": "使用摘要演算法產生不可逆結果",
|
|
809
809
|
"system.base.redact_rule.description.ip_mask": "保留 IP 前綴網段並隱藏其餘部分",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "依設定保留字串首尾字元並遮罩中間內容",
|
|
810
811
|
"system.base.redact_rule.description.phone_mask": "保留手機號碼前三碼和後四碼",
|
|
811
812
|
"system.base.redact_rule.description.regex_replace": "使用正規表示式取代符合的內容",
|
|
812
813
|
"system.base.redact_rule.description.stable_uuid": "將文字轉換為穩定 UUID",
|
|
@@ -821,6 +822,7 @@
|
|
|
821
822
|
"system.base.redact_rule.parameter.char": "取代字元",
|
|
822
823
|
"system.base.redact_rule.parameter.keep_first": "保留開頭字元數",
|
|
823
824
|
"system.base.redact_rule.parameter.keep_last": "保留結尾字元數",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最少遮罩字元數",
|
|
824
826
|
"system.base.redact_rule.parameter.keep_local_first": "保留本機部分字元數",
|
|
825
827
|
"system.base.redact_rule.parameter.keep_octets": "保留網段數",
|
|
826
828
|
"system.base.redact_rule.parameter.length": "保留長度",
|
|
@@ -834,6 +836,7 @@
|
|
|
834
836
|
"system.base.redact_rule.template.fixed_length_mask": "等長遮罩",
|
|
835
837
|
"system.base.redact_rule.template.hash_digest": "雜湊摘要",
|
|
836
838
|
"system.base.redact_rule.template.ip_mask": "IP 位址遮罩",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "通用字串遮罩",
|
|
837
840
|
"system.base.redact_rule.template.phone_mask": "手機號碼遮罩",
|
|
838
841
|
"system.base.redact_rule.template.regex_replace": "正規表示式取代",
|
|
839
842
|
"system.base.redact_rule.template.stable_uuid": "穩定 UUID",
|
|
@@ -841,6 +844,9 @@
|
|
|
841
844
|
"system.base.redact_rule.template.url_mask": "URL 參數遮罩",
|
|
842
845
|
"system.base.redact_rule.title": "脫敏規則",
|
|
843
846
|
"system.base.redact_rule.validation.parameters": "請輸入規則參數",
|
|
847
|
+
"system.base.redact_rule.validation.code": "請輸入規則編碼",
|
|
848
|
+
"system.base.redact_rule.validation.name": "請輸入規則名稱",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "請選擇規則類型",
|
|
844
850
|
"system.base.redact_storage_policy.field.column_name": "欄位",
|
|
845
851
|
"system.base.redact_storage_policy.field.parameters": "規則參數",
|
|
846
852
|
"system.base.redact_storage_policy.field.rule": "脫敏規則",
|