mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
Merge branch 'v2' into pr@v2@fix_knowledge_workflow
This commit is contained in:
commit
ad697d7f0b
|
|
@ -19,8 +19,8 @@ from common.utils.logger import maxkb_logger
|
|||
|
||||
|
||||
class BaseDataSourceWebNodeForm(BaseForm):
|
||||
source_url = forms.TextInputField('source url', required=True)
|
||||
selector = forms.TextInputField('knowledge selector', required=False,default_value="body")
|
||||
source_url = forms.TextInputField(_('Web source url'), required=True)
|
||||
selector = forms.TextInputField(_('Web knowledge selector'), required=False,attrs={'placeholder': _('The default is body, you can enter .classname/#idname/tagname')})
|
||||
|
||||
|
||||
def get_collect_handler():
|
||||
|
|
|
|||
|
|
@ -300,8 +300,9 @@ def smart_split_paragraph(content: str, limit: int):
|
|||
|
||||
# 优先级:句号 > 感叹号/问号 > 回车
|
||||
split_chars = [
|
||||
('。', 0), ('!', 0), ('?', 0), # 句子结束符,包含在当前段
|
||||
('\n', 0), # 回车符
|
||||
('。', 0), ('.', 0), # 中英文句号
|
||||
('!', 0), ('!', 0), # 中英文感叹号
|
||||
('?', 0), ('?', 0), # 中英文问号
|
||||
]
|
||||
|
||||
# 从后往前找分割点
|
||||
|
|
|
|||
|
|
@ -210,6 +210,7 @@ exec({dedent(code)!a})
|
|||
'-c',
|
||||
f'import base64,gzip; exec(gzip.decompress(base64.b64decode(\'{compressed_and_base64_encoded_code_str}\')).decode())',
|
||||
],
|
||||
'cwd': self.sandbox_path,
|
||||
'env': {
|
||||
'LD_PRELOAD': self.sandbox_so_path,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -73,8 +73,8 @@ class KnowledgeWorkflowActionView(APIView):
|
|||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
|
||||
ViewPermission(
|
||||
[RoleConstants.USER.get_workspace_role()],
|
||||
|
|
@ -148,8 +148,8 @@ class KnowledgeWorkflowView(APIView):
|
|||
responses=DefaultResultSerializer,
|
||||
tags=[_('Knowledge')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission_workspace_manage_role(),
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_permission_workspace_manage_role(),
|
||||
ViewPermission([RoleConstants.USER.get_workspace_role()],
|
||||
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()],
|
||||
CompareConstants.AND),
|
||||
|
|
|
|||
|
|
@ -8784,4 +8784,13 @@ msgid "SAML2 SSO"
|
|||
msgstr ""
|
||||
|
||||
msgid "Workflow"
|
||||
msgstr ""
|
||||
|
||||
msgid "Web source url"
|
||||
msgstr ""
|
||||
|
||||
msgid "Web knowledge selector"
|
||||
msgstr ""
|
||||
|
||||
msgid "The default is body, you can enter .classname/#idname/tagname"
|
||||
msgstr ""
|
||||
|
|
@ -8911,3 +8911,12 @@ msgstr "SAML2 单点登录"
|
|||
|
||||
msgid "Workflow"
|
||||
msgstr "工作流"
|
||||
|
||||
msgid "Web source url"
|
||||
msgstr "Web 根地址"
|
||||
|
||||
msgid "Web knowledge selector"
|
||||
msgstr "选择器"
|
||||
|
||||
msgid "The default is body, you can enter .classname/#idname/tagname"
|
||||
msgstr "默认为 body,可输入 .classname/#idname/tagname"
|
||||
|
|
@ -8910,4 +8910,13 @@ msgid "SAML2 SSO"
|
|||
msgstr "SAML2 單點登入"
|
||||
|
||||
msgid "Workflow"
|
||||
msgstr "工作流"
|
||||
msgstr "工作流"
|
||||
|
||||
msgid "Web source url"
|
||||
msgstr "Web 根地址"
|
||||
|
||||
msgid "Web knowledge selector"
|
||||
msgstr "選擇器"
|
||||
|
||||
msgid "The default is body, you can enter .classname/#idname/tagname"
|
||||
msgstr "默認為 body,可輸入 .classname/#idname/tagname"
|
||||
|
|
@ -96,4 +96,29 @@ export default {
|
|||
])
|
||||
},
|
||||
},
|
||||
'app-import-doc': {
|
||||
iconReader: () => {
|
||||
return h('i', [
|
||||
h(
|
||||
'svg',
|
||||
{
|
||||
style: { height: '100%', width: '100%' },
|
||||
viewBox: '0 0 1024 1024',
|
||||
version: '1.1',
|
||||
xmlns: 'http://www.w3.org/2000/svg',
|
||||
},
|
||||
[
|
||||
h('path', {
|
||||
d: 'M128 935.594667A45.653333 45.653333 0 0 0 173.482667 981.333333h338.346666v-85.76H213.248V128H810.24v426.666667h85.333333V87.978667A45.653333 45.653333 0 0 0 850.005333 42.24H173.482667A45.653333 45.653333 0 0 0 128 87.978667v847.616z',
|
||||
fill: 'currentColor',
|
||||
}),
|
||||
h('path', {
|
||||
d: 'M298.922667 480.768c0-6.314667 5.12-11.434667 11.392-11.434667h403.626666c6.314667 0 11.392 5.12 11.392 11.434667v62.890667c0 6.314667-5.12 11.434667-11.392 11.434666h-403.626666a11.392 11.392 0 0 1-11.392-11.434666v-62.890667zM310.4 298.666667a11.392 11.392 0 0 0-11.392 11.434666v62.890667c0 6.314667 5.12 11.434667 11.392 11.434667h190.208c6.314667 0 11.392-5.12 11.392-11.434667V310.101333A11.392 11.392 0 0 0 500.608 298.666667H310.4zM725.333333 661.333333a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333V768h106.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333H810.666667v106.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666a21.333333 21.333333 0 0 1-21.333334-21.333333V853.333333h-106.666666a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333H725.333333v-106.666667z',
|
||||
fill: 'currentColor',
|
||||
}),
|
||||
],
|
||||
),
|
||||
])
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ export default {
|
|||
'The Community Edition supports up to 5 APP. If you need more APP, please upgrade to the Professional Edition.',
|
||||
saveErrorMessage: 'Saving failed, please check your input or try again later',
|
||||
loadingErrorMessage: 'Failed to load configuration, please check your input or try again later',
|
||||
noDocPermission: 'No permission to create documents',
|
||||
},
|
||||
|
||||
form: {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ export default {
|
|||
professionalMessage: '社区版最多支持 5 个应用,如需拥有更多应用,请升级为专业版。',
|
||||
saveErrorMessage: '保存失败,请检查输入或稍后再试',
|
||||
loadingErrorMessage: '加载配置失败,请检查输入或稍后再试',
|
||||
noDocPermission: '无文档创建权限',
|
||||
},
|
||||
form: {
|
||||
appName: {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ export default {
|
|||
professionalMessage: '社群版最多支援 5 個應用,如需擁有更多應用,請升級為專業版。',
|
||||
saveErrorMessage: '儲存失敗,請檢查輸入或稍後再試',
|
||||
loadingErrorMessage: '載入配置失敗,請檢查輸入或稍後再試',
|
||||
noDocPermission: '無文檔創建權限',
|
||||
},
|
||||
form: {
|
||||
appName: {
|
||||
|
|
|
|||
|
|
@ -191,6 +191,12 @@ const systemManage = {
|
|||
PermissionConst.RESOURCE_KNOWLEDGE_WORKFLOW_READ
|
||||
],'OR'
|
||||
),
|
||||
workflow_edit: () =>
|
||||
hasPermission([
|
||||
RoleConst.ADMIN,
|
||||
PermissionConst.RESOURCE_KNOWLEDGE_WORKFLOW_EDIT
|
||||
],'OR'
|
||||
),
|
||||
chat_user_edit: () =>false,
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ const share = {
|
|||
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_TAG_DELETE], 'OR'),
|
||||
debug: () =>
|
||||
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_WORKFLOW_READ], 'OR'),
|
||||
workflow_edit: () =>
|
||||
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_WORKFLOW_EDIT], 'OR'),
|
||||
|
||||
chat_user_edit: () => false,
|
||||
|
||||
auth: () => false,
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ const workspaceShare = {
|
|||
folderDelete: () => false,
|
||||
hit_test: () => false,
|
||||
debug: () => true,
|
||||
workflow_edit: () => true,
|
||||
}
|
||||
|
||||
export default workspaceShare
|
||||
|
|
|
|||
|
|
@ -572,6 +572,21 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
workflow_edit: (source_id: string) =>
|
||||
hasPermission(
|
||||
[
|
||||
new ComplexPermission(
|
||||
[RoleConst.USER],
|
||||
[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],
|
||||
[],
|
||||
'AND',
|
||||
),
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.KNOWLEDGE_WORKFLOW_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
|
||||
PermissionConst.KNOWLEDGE_WORKFLOW_EDIT.getWorkspacePermissionWorkspaceManageRole,
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
hit_test: () => false,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,11 @@ import Result from '@/views/knowledge-workflow/component/action/Result.vue'
|
|||
import applicationApi from '@/api/application/application'
|
||||
import KnowledgeBase from '@/views/knowledge-workflow/component/action/KnowledgeBase.vue'
|
||||
import { WorkflowType } from '@/enums/application'
|
||||
|
||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||
import permissionMap from '@/permission'
|
||||
import { MsgError } from '@/utils/message'
|
||||
import { t } from '@/locales'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
provide('upload', (file: any, loading?: Ref<boolean>) => {
|
||||
return applicationApi.postUploadFile(file, id, 'KNOWLEDGE', loading)
|
||||
|
|
@ -121,8 +125,14 @@ const up = () => {
|
|||
active.value = 'data_source'
|
||||
})
|
||||
}
|
||||
|
||||
const permissionPrecise = computed(() => {
|
||||
return permissionMap['knowledge'][apiType.value]
|
||||
})
|
||||
|
||||
const upload = () => {
|
||||
ActionRef.value.validate().then(() => {
|
||||
if (permissionPrecise.value.doc_create(id)) {
|
||||
ActionRef.value.validate().then(() => {
|
||||
form_data.value[active.value] = ActionRef.value.get_data()
|
||||
loadSharedApi({ type: 'knowledge', systemType: apiType.value })
|
||||
.workflowAction(id, form_data.value, loading)
|
||||
|
|
@ -131,6 +141,9 @@ const upload = () => {
|
|||
active.value = 'result'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
MsgError(t('views.application.tip.noDocPermission'))
|
||||
}
|
||||
}
|
||||
const continueImporting = () => {
|
||||
active.value = 'data_source'
|
||||
|
|
|
|||
|
|
@ -34,11 +34,12 @@
|
|||
<AppIcon iconName="app-debug-outlined" class="mr-4"></AppIcon>
|
||||
{{ $t('common.debug') }}
|
||||
</el-button>
|
||||
<el-button @click="saveknowledge(true)">
|
||||
<el-button v-if="permissionPrecise.workflow_edit(id)"
|
||||
@click="saveknowledge(true)">
|
||||
<AppIcon iconName="app-save-outlined" class="mr-4"></AppIcon>
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="publish">
|
||||
<el-button type="primary" v-if="permissionPrecise.workflow_edit(id)" @click="publish">
|
||||
{{ $t('common.publish') }}
|
||||
</el-button>
|
||||
|
||||
|
|
@ -49,7 +50,7 @@
|
|||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="toImportDoc">
|
||||
<AppIcon iconName="app-create-chat" class="color-secondary"></AppIcon>
|
||||
<AppIcon iconName="app-import-doc" class="color-secondary"></AppIcon>
|
||||
{{ $t('views.workflow.operation.toImportDoc') }}
|
||||
</el-dropdown-item>
|
||||
|
||||
|
|
@ -57,7 +58,7 @@
|
|||
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
|
||||
{{ $t('views.workflow.setting.releaseHistory') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item>
|
||||
<el-dropdown-item v-if="permissionPrecise.workflow_edit(id)">
|
||||
<AppIcon iconName="app-save-outlined" class="color-secondary"></AppIcon>
|
||||
{{ $t('views.workflow.setting.autoSave') }}
|
||||
<div class="ml-4">
|
||||
|
|
|
|||
Loading…
Reference in New Issue