@liujitcn/kratos-admin-system 0.0.65 → 0.0.67
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 +5 -3
- package/dist/package/declarations/src/api/base/v1/ai_knowledge.d.ts +7 -0
- package/dist/package/declarations/src/api/system/admin/v1/ai_provider.d.ts +3 -1
- package/dist/package/declarations/src/api/system/admin/v1/ai_query.d.ts +10 -0
- package/dist/package/declarations/src/api/system/admin/v1/ai_session.d.ts +9 -0
- package/dist/package/declarations/src/locales/generated.d.ts +1805 -1553
- package/dist/package/declarations/src/rpc/base/v1/ai_knowledge.d.ts +22 -0
- package/dist/package/declarations/src/rpc/base/v1/ai_message.d.ts +2 -0
- package/dist/package/declarations/src/rpc/base/v1/login.d.ts +2 -39
- package/dist/package/declarations/src/rpc/base/v1/oauth.d.ts +2 -2
- package/dist/package/declarations/src/rpc/common/v1/types.d.ts +4 -4
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_provider.d.ts +66 -7
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_query.d.ts +73 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_session.d.ts +114 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +3 -3
- package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +4 -3
- package/dist/package/declarations/src/rpc/system/admin/v1/base_login_policy.d.ts +2 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_message_provider.d.ts +3 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_oauth_provider.d.ts +3 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +3 -3
- package/dist/package/declarations/src/views/ai/chat/components/ChatPanel.vue.d.ts +9 -2
- package/dist/package/declarations/src/views/ai/chat/components/XSender.vue.d.ts +7 -0
- package/dist/package/declarations/src/views/ai/query/index.vue.d.ts +3 -0
- package/dist/package/declarations/src/views/ai/session/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/v1/ai_knowledge.ts +22 -0
- package/dist/package/src/api/system/admin/v1/ai_provider.ts +7 -0
- package/dist/package/src/api/system/admin/v1/ai_query.ts +25 -0
- package/dist/package/src/api/system/admin/v1/ai_session.ts +25 -0
- package/dist/package/src/components/account/ChangePasswordForm.vue +7 -5
- package/dist/package/src/components/tenant-project/TenantProjectSelect.vue +21 -4
- package/dist/package/src/locales/README.md +1 -1
- package/dist/package/src/locales/en-US.json +355 -292
- package/dist/package/src/locales/ja-JP.json +352 -289
- package/dist/package/src/locales/zh-CN.json +352 -289
- package/dist/package/src/locales/zh-TW.json +352 -289
- package/dist/package/src/module.ts +8 -0
- package/dist/package/src/rpc/base/v1/ai_knowledge.ts +33 -0
- package/dist/package/src/rpc/base/v1/ai_message.ts +2 -0
- package/dist/package/src/rpc/base/v1/login.ts +2 -42
- package/dist/package/src/rpc/base/v1/oauth.ts +2 -2
- package/dist/package/src/rpc/common/v1/types.ts +4 -4
- package/dist/package/src/rpc/system/admin/v1/ai_provider.ts +73 -7
- package/dist/package/src/rpc/system/admin/v1/ai_query.ts +89 -0
- package/dist/package/src/rpc/system/admin/v1/ai_session.ts +131 -0
- package/dist/package/src/rpc/system/admin/v1/auth.ts +3 -3
- package/dist/package/src/rpc/system/admin/v1/base_config.ts +6 -3
- package/dist/package/src/rpc/system/admin/v1/base_login_policy.ts +2 -2
- package/dist/package/src/rpc/system/admin/v1/base_message_provider.ts +5 -2
- package/dist/package/src/rpc/system/admin/v1/base_oauth_provider.ts +5 -2
- package/dist/package/src/rpc/system/admin/v1/base_user.ts +3 -3
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +18 -0
- package/dist/package/src/views/ai/chat/components/XSender.vue +102 -0
- package/dist/package/src/views/ai/chat/index.vue +22 -2
- package/dist/package/src/views/ai/query/index.vue +222 -0
- package/dist/package/src/views/ai/session/index.vue +422 -0
- package/dist/package/src/views/base/ai-provider/index.vue +216 -169
- package/dist/package/src/views/base/config/index.vue +9 -9
- package/dist/package/src/views/base/login-policy/index.vue +2 -2
- package/dist/package/src/views/base/message-provider/index.vue +7 -5
- package/dist/package/src/views/base/oauth-provider/index.vue +10 -7
- package/dist/package/src/views/base/tenant-project-grant/index.vue +9 -4
- package/dist/package/src/views/base/user/index.vue +3 -3
- package/dist/package/src/views/profile/components/security.vue +4 -5
- package/dist/package/src/views/tool/code-gen/config.ts +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import service from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import type {
|
|
3
|
+
AiKnowledgeService,
|
|
4
|
+
ListAiKnowledgeOptionsRequest,
|
|
5
|
+
ListAiKnowledgeOptionsResponse
|
|
6
|
+
} from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_knowledge";
|
|
7
|
+
|
|
8
|
+
const AI_KNOWLEDGE_OPTIONS_URL = "/v1/base/ai/knowledge/options";
|
|
9
|
+
|
|
10
|
+
/** AI知识库选项服务。 */
|
|
11
|
+
export class AiKnowledgeServiceImpl implements AiKnowledgeService {
|
|
12
|
+
/** 查询可用的AI知识库选项。 */
|
|
13
|
+
ListAiKnowledgeOptions(request: ListAiKnowledgeOptionsRequest): Promise<ListAiKnowledgeOptionsResponse> {
|
|
14
|
+
return service<ListAiKnowledgeOptionsRequest, ListAiKnowledgeOptionsResponse>({
|
|
15
|
+
url: AI_KNOWLEDGE_OPTIONS_URL,
|
|
16
|
+
method: "get",
|
|
17
|
+
params: request
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const defAiKnowledgeService = new AiKnowledgeServiceImpl();
|
|
@@ -5,6 +5,8 @@ import type {
|
|
|
5
5
|
CreateAiProviderRequest,
|
|
6
6
|
DeleteAiProviderRequest,
|
|
7
7
|
GetAiProviderRequest,
|
|
8
|
+
ListAiProviderOptionsRequest,
|
|
9
|
+
ListAiProviderOptionsResponse,
|
|
8
10
|
PageAiProviderRequest,
|
|
9
11
|
PageAiProviderResponse,
|
|
10
12
|
SetAiProviderStatusRequest,
|
|
@@ -38,6 +40,11 @@ export class AiProviderServiceImpl implements AiProviderService {
|
|
|
38
40
|
return service({ url: `${AI_PROVIDER_URL}/${request.ai_provider?.id ?? ""}`, method: "put", data: request.ai_provider });
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
/** 查询已启用的AI供应商选项。 */
|
|
44
|
+
ListAiProviderOptions(request: ListAiProviderOptionsRequest): Promise<ListAiProviderOptionsResponse> {
|
|
45
|
+
return service({ url: `${AI_PROVIDER_URL}/options`, method: "get", params: request });
|
|
46
|
+
}
|
|
47
|
+
|
|
41
48
|
/** 测试供应商表单中的全部模型。 */
|
|
42
49
|
TestAiProviderModels(request: TestAiProviderModelsRequest): Promise<TestAiProviderModelsResponse> {
|
|
43
50
|
return service({ url: `${AI_PROVIDER_URL}/test-models`, method: "post", data: request.ai_provider });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import service from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import type {
|
|
3
|
+
AiQueryService,
|
|
4
|
+
GetAiQueryRequest,
|
|
5
|
+
PageAiQueryRequest,
|
|
6
|
+
PageAiQueryResponse
|
|
7
|
+
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/ai_query";
|
|
8
|
+
import type { AiQueryRecord } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/ai_query";
|
|
9
|
+
|
|
10
|
+
const AI_QUERY_URL = "/v1/admin/base/ai-query";
|
|
11
|
+
|
|
12
|
+
/** 智能问数记录管理服务实现。 */
|
|
13
|
+
export class AiQueryServiceImpl implements AiQueryService {
|
|
14
|
+
/** 分页查询智能问数记录。 */
|
|
15
|
+
PageAiQuery(request: PageAiQueryRequest): Promise<PageAiQueryResponse> {
|
|
16
|
+
return service({ url: AI_QUERY_URL, method: "get", params: request });
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** 查询智能问数记录详情。 */
|
|
20
|
+
GetAiQuery(request: GetAiQueryRequest): Promise<AiQueryRecord> {
|
|
21
|
+
return service({ url: `${AI_QUERY_URL}/${request.id}`, method: "get" });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const defAiQueryService = new AiQueryServiceImpl();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import service from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import type {
|
|
3
|
+
AiSessionService,
|
|
4
|
+
PageAiSessionMessageRequest,
|
|
5
|
+
PageAiSessionMessageResponse,
|
|
6
|
+
PageAiSessionRequest,
|
|
7
|
+
PageAiSessionResponse
|
|
8
|
+
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/ai_session";
|
|
9
|
+
|
|
10
|
+
const AI_SESSION_URL = "/v1/admin/base/ai-session";
|
|
11
|
+
|
|
12
|
+
/** AI会话管理服务实现。 */
|
|
13
|
+
export class AiSessionServiceImpl implements AiSessionService {
|
|
14
|
+
/** 分页查询AI会话。 */
|
|
15
|
+
PageAiSession(request: PageAiSessionRequest): Promise<PageAiSessionResponse> {
|
|
16
|
+
return service({ url: AI_SESSION_URL, method: "get", params: request });
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** 分页查询AI会话消息。 */
|
|
20
|
+
PageAiSessionMessage(request: PageAiSessionMessageRequest): Promise<PageAiSessionMessageResponse> {
|
|
21
|
+
return service({ url: `${AI_SESSION_URL}/${request.id}/message`, method: "get", params: { page_num: request.page_num, page_size: request.page_size } });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const defAiSessionService = new AiSessionServiceImpl();
|
|
@@ -29,8 +29,9 @@ import { LOGIN_URL } from "@liujitcn/kratos-admin-core/config";
|
|
|
29
29
|
import { clearPasswordChangeRequired } from "@liujitcn/kratos-admin-core/request";
|
|
30
30
|
import { useUserStore } from "@liujitcn/kratos-admin-core/stores/runtime";
|
|
31
31
|
import {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
encryptPassword,
|
|
33
|
+
fetchSecretPublicKey,
|
|
34
|
+
encryptWithPublicKey
|
|
34
35
|
} from "@liujitcn/kratos-admin-core/security";
|
|
35
36
|
|
|
36
37
|
/** 修改密码表单状态,明文只在前端校验和加密前短暂保存。 */
|
|
@@ -58,7 +59,7 @@ const passwordFormFields = computed<ProFormField[]>(() => [
|
|
|
58
59
|
prop: "old_pwd",
|
|
59
60
|
label: t("system.profile.password.field.old_password"),
|
|
60
61
|
component: "password",
|
|
61
|
-
props: { placeholder: t("system.profile.password.placeholder.old_password") }
|
|
62
|
+
props: { autocomplete: "current-password", placeholder: t("system.profile.password.placeholder.old_password") }
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
65
|
prop: "new_pwd",
|
|
@@ -91,8 +92,9 @@ async function handleSubmitPassword() {
|
|
|
91
92
|
}
|
|
92
93
|
submitLoading.value = true;
|
|
93
94
|
try {
|
|
94
|
-
const
|
|
95
|
-
const
|
|
95
|
+
const publicKey = await fetchSecretPublicKey();
|
|
96
|
+
const oldPwd = await encryptWithPublicKey(publicKey, passwordForm.old_pwd);
|
|
97
|
+
const newPwd = await encryptWithPublicKey(publicKey, passwordForm.new_pwd);
|
|
96
98
|
const userPassword: UserPasswordForm = {
|
|
97
99
|
old_pwd: oldPwd,
|
|
98
100
|
new_pwd: newPwd
|
|
@@ -7,13 +7,12 @@
|
|
|
7
7
|
check-strictly
|
|
8
8
|
filterable
|
|
9
9
|
clearable
|
|
10
|
-
|
|
11
|
-
v-bind="$attrs"
|
|
10
|
+
v-bind="treeSelectAttrs"
|
|
12
11
|
/>
|
|
13
12
|
</template>
|
|
14
13
|
|
|
15
14
|
<script setup lang="ts">
|
|
16
|
-
import { computed, onMounted, ref } from "vue";
|
|
15
|
+
import { computed, onMounted, ref, useAttrs } from "vue";
|
|
17
16
|
import { defBaseTenantProjectService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant_project";
|
|
18
17
|
import type { TreeBaseTenantProjectResponse_Option } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project";
|
|
19
18
|
|
|
@@ -50,12 +49,19 @@ const emit = defineEmits<{
|
|
|
50
49
|
(event: "change", value: TenantProjectSelection | undefined): void;
|
|
51
50
|
}>();
|
|
52
51
|
|
|
52
|
+
const attrs = useAttrs();
|
|
53
53
|
const loadedOptions = ref<TreeBaseTenantProjectResponse_Option[]>([]);
|
|
54
54
|
const treeOptions = computed(() => props.options ?? loadedOptions.value);
|
|
55
55
|
const treeProps = { label: "label", value: "value", children: "children" };
|
|
56
56
|
|
|
57
|
+
/** 消费方传入的 renderAfterExpand=false 会清空 el-tree-select 的选中标签缓存,导致已选值显示成节点原始值,这里统一忽略并保持标签缓存可用。 */
|
|
58
|
+
const treeSelectAttrs = computed(() => {
|
|
59
|
+
const { renderAfterExpand: _ignored, ...rest } = attrs;
|
|
60
|
+
return { ...rest, renderAfterExpand: true };
|
|
61
|
+
});
|
|
62
|
+
|
|
57
63
|
const selectedValue = computed<string | undefined>({
|
|
58
|
-
get: () => props.modelValue
|
|
64
|
+
get: () => resolveSelectedKey(props.modelValue),
|
|
59
65
|
set: value => {
|
|
60
66
|
const selection = parseSelection(value);
|
|
61
67
|
emit("update:modelValue", selection);
|
|
@@ -63,6 +69,17 @@ const selectedValue = computed<string | undefined>({
|
|
|
63
69
|
}
|
|
64
70
|
});
|
|
65
71
|
|
|
72
|
+
/** 解析选中的树节点值;容错误包了一层对象或非字符串的值,避免选中后显示 [object Object]。 */
|
|
73
|
+
function resolveSelectedKey(modelValue?: TenantProjectSelection): string | undefined {
|
|
74
|
+
const raw = modelValue?.value as unknown;
|
|
75
|
+
if (typeof raw === "string") return raw || undefined;
|
|
76
|
+
if (raw && typeof raw === "object") {
|
|
77
|
+
const nested = (raw as { value?: unknown }).value;
|
|
78
|
+
if (typeof nested === "string") return nested || undefined;
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
|
|
66
83
|
onMounted(async () => {
|
|
67
84
|
if (props.options) return;
|
|
68
85
|
const response = await defBaseTenantProjectService.TreeBaseTenantProject({ keyword: "" });
|