diff --git a/apps/knowledge/serializers/knowledge.py b/apps/knowledge/serializers/knowledge.py index 9daeb7dad..8a80cfa25 100644 --- a/apps/knowledge/serializers/knowledge.py +++ b/apps/knowledge/serializers/knowledge.py @@ -80,6 +80,8 @@ class KnowledgeEditRequest(serializers.Serializer): ) file_size_limit = serializers.IntegerField(required=False, label=_('file size limit')) file_count_limit = serializers.IntegerField(required=False, label=_('file count limit')) + user_id = serializers.UUIDField(required=False, label=_('user id')) + create_user = serializers.UUIDField(required=False, label=_('create user')) @staticmethod def get_knowledge_meta_valid_map(): @@ -381,6 +383,10 @@ class KnowledgeSerializer(serializers.Serializer): knowledge.file_size_limit = instance.get('file_size_limit') if 'file_count_limit' in instance: knowledge.file_count_limit = instance.get('file_count_limit') + if 'user_id' in instance: + knowledge.user_id = instance.get('user_id') + if 'create_user' in instance: + knowledge.create_user = instance.get('create_user') if 'application_id_list' in instance and instance.get('application_id_list') is not None: application_id_list = instance.get('application_id_list') # 当前用户可修改关联的知识库列表 diff --git a/ui/src/locales/lang/en-US/common.ts b/ui/src/locales/lang/en-US/common.ts index c58e5ddc9..f19983118 100644 --- a/ui/src/locales/lang/en-US/common.ts +++ b/ui/src/locales/lang/en-US/common.ts @@ -31,6 +31,7 @@ export default { upgrade: 'Upgrade', createDate: 'Create Date', createTime: 'Create Time', + updateTime: 'Update Time', operation: 'Action', character: 'characters', export: 'Export', @@ -96,6 +97,8 @@ export default { uploadImagePrompt: 'Please upload an image', }, info: 'Base Information', + basicInfo: 'Basic Information', + unknown: 'Unknown', otherSetting: 'Other Settings', username: 'username', importCreate: 'Import Create', diff --git a/ui/src/locales/lang/zh-CN/common.ts b/ui/src/locales/lang/zh-CN/common.ts index f0dc6a198..5810f36e0 100644 --- a/ui/src/locales/lang/zh-CN/common.ts +++ b/ui/src/locales/lang/zh-CN/common.ts @@ -32,6 +32,7 @@ export default { upgrade: '升级', createDate: '创建日期', createTime: '创建时间', + updateTime: '更新时间', operation: '操作', character: '字符', export: '导出', @@ -97,6 +98,8 @@ export default { uploadImagePrompt: '请上传一张图片', }, info: '基本信息', + basicInfo: '基本信息', + unknown: '未知', otherSetting: '其他设置', username: '用户名', importCreate: '导入创建', diff --git a/ui/src/locales/lang/zh-Hant/common.ts b/ui/src/locales/lang/zh-Hant/common.ts index 367cac9d9..9493a0891 100644 --- a/ui/src/locales/lang/zh-Hant/common.ts +++ b/ui/src/locales/lang/zh-Hant/common.ts @@ -31,6 +31,7 @@ export default { upgrade: '升級', createDate: '創建日期', createTime: '創建時間', + updateTime: '更新時間', operation: '操作', character: '字符', export: '匯出', @@ -96,6 +97,8 @@ export default { uploadImagePrompt: '請上傳一張圖片', }, info: '使用者資訊', + basicInfo: '基本資訊', + unknown: '未知', otherSetting: '其他設定', username: '用戶名', importCreate: '導入創建', diff --git a/ui/src/views/knowledge/KnowledgeSetting.vue b/ui/src/views/knowledge/KnowledgeSetting.vue index 6912d4498..a1804e96c 100644 --- a/ui/src/views/knowledge/KnowledgeSetting.vue +++ b/ui/src/views/knowledge/KnowledgeSetting.vue @@ -9,6 +9,22 @@ {{ $t('common.info') }} + + + + + + + {{ detail?.nick_name ? i18n_name(detail.nick_name) : detail?.create_user || $t('common.unknown') }} + + + {{ detail?.create_time ? new Date(detail.create_time).toLocaleString() : $t('common.unknown') }} + + + {{ detail?.update_time ? new Date(detail.update_time).toLocaleString() : $t('common.unknown') }} + + + { const webFormRef = ref() const BaseFormRef = ref() const loading = ref(false) -const detail = ref({}) +const detail = ref({ }) const cloneModelId = ref('') +const user_options = ref([]) +const selectedCreator = ref('') const form = ref({ source_url: '', @@ -269,11 +290,15 @@ async function submit() { meta: form.value, file_count_limit: form.value.file_count_limit, file_size_limit: form.value.file_size_limit, + create_user: selectedCreator.value, + user_id: selectedCreator.value, ...BaseFormRef.value.form, } : { file_count_limit: form.value.file_count_limit, file_size_limit: form.value.file_size_limit, + create_user: selectedCreator.value, + user_id: selectedCreator.value, ...BaseFormRef.value.form, } @@ -290,6 +315,13 @@ async function submit() { .putReEmbeddingKnowledge(id) .then(() => { MsgSuccess(t('common.saveSuccess')) + // 更新页面上显示的创建者信息 + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.create_user = selectedUser.id + detail.value.user_id = selectedUser.id + detail.value.nick_name = selectedUser.nick_name + } }) }) } else { @@ -300,6 +332,13 @@ async function submit() { .putReEmbeddingKnowledge(id) .then(() => { MsgSuccess(t('common.saveSuccess')) + // 更新页面上显示的创建者信息 + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.create_user = selectedUser.id + detail.value.user_id = selectedUser.id + detail.value.nick_name = selectedUser.nick_name + } }) }) } @@ -312,13 +351,25 @@ async function submit() { .putLarkKnowledge(id, obj, loading) .then(() => { MsgSuccess(t('common.saveSuccess')) + // 更新页面上显示的创建者信息 + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.create_user = selectedUser.id + detail.value.nick_name = selectedUser.nick_name + } }) } else { loadSharedApi({type: 'knowledge', systemType: apiType.value}) .putKnowledge(id, obj, loading) - .then(() => { - MsgSuccess(t('common.saveSuccess')) - }) + .then(() => { + MsgSuccess(t('common.saveSuccess')) + // 更新页面上显示的创建者信息 + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.create_user = selectedUser.id + detail.value.nick_name = selectedUser.nick_name + } + }) } } } @@ -332,6 +383,8 @@ function getDetail() { .then((res: any) => { detail.value = res.data cloneModelId.value = res.data?.embedding_model_id + // 优先使用user_id,如果不存在则使用create_user + selectedCreator.value = res.data?.user_id || res.data?.create_user || '' if (detail.value?.type === 0) { form.value.file_count_limit = res.data.file_count_limit form.value.file_size_limit = res.data.file_size_limit @@ -339,11 +392,34 @@ function getDetail() { if (detail.value?.type === 1 || detail.value?.type === 2) { form.value = res.data.meta } + // 如果有用户列表,尝试找到对应的用户信息来更新nick_name + if (user_options.value.length > 0 && selectedCreator.value) { + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.nick_name = selectedUser.nick_name + } + } + }) +} + +function getUserList() { + loadSharedApi({ type: 'workspace', isShared: isShared.value, systemType: apiType.value }) + .getAllMemberList(user.getWorkspaceId(), loading) + .then((res: any) => { + user_options.value = res.data + // 如果已经有selectedCreator的值,尝试找到对应的用户信息来更新nick_name + if (selectedCreator.value) { + const selectedUser = user_options.value.find(user => user.id === selectedCreator.value) + if (selectedUser) { + detail.value.nick_name = selectedUser.nick_name + } + } }) } onMounted(() => { getDetail() + getUserList() })