Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions apps/knowledge/serializers/knowledge_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,11 @@ def upload_document(self, instance: Dict, user, with_valid=True):
{'knowledge_id': self.data.get("knowledge_id"), 'knowledge_action_id': knowledge_action_id, 'stream': True,
'workspace_id': self.data.get("workspace_id"),
**instance},
KnowledgeWorkflowPostHandler(None, knowledge_action_id))
KnowledgeWorkflowPostHandler(None, knowledge_action_id),
is_the_task_interrupted=lambda: cache.get(
Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_key(action_id=knowledge_action_id),
version=Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_version()) or False
)
work_flow_manage.run()
return {'id': knowledge_action_id, 'knowledge_id': self.data.get("knowledge_id"), 'state': State.STARTED,
'details': {}, 'meta': meta}
Expand All @@ -196,7 +200,8 @@ def cancel(self, is_valid=True):
knowledge_action_id = self.data.get("id")
cache.set(Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_key(action_id=knowledge_action_id), True,
version=Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_version())
QuerySet(KnowledgeAction).filter(id=knowledge_action_id).update(state=State.REVOKE)
QuerySet(KnowledgeAction).filter(id=knowledge_action_id, state__in=[State.STARTED, State.PENDING]).update(
state=State.REVOKE)
return True


Expand Down
12 changes: 6 additions & 6 deletions apps/knowledge/views/knowledge_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class KnowledgeWorkflowUploadDocumentView(APIView):
tags=[_('Knowledge Base')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_WORKFLOW_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()],
Expand Down Expand Up @@ -181,8 +181,8 @@ class Cancel(APIView):
tags=[_('Knowledge Base')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.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()],
Expand Down Expand Up @@ -272,7 +272,7 @@ class Export(APIView):
)
def get(self, request: Request, workspace_id: str, knowledge_id: str):
return KnowledgeWorkflowSerializer.Export(
data={'knowledge_id': knowledge_id,'user_id': request.user.id,'workspace_id': workspace_id}
data={'knowledge_id': knowledge_id, 'user_id': request.user.id, 'workspace_id': workspace_id}
).export()

class Import(APIView):
Expand Down Expand Up @@ -301,7 +301,7 @@ class Import(APIView):
@log(menu='Knowledge', operate="Import knowledge workflow",
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
)
def post(self, request: Request, workspace_id:str, knowledge_id: str):
def post(self, request: Request, workspace_id: str, knowledge_id: str):
is_import_tool = get_is_permissions(request, workspace_id=workspace_id)(
PermissionConstants.TOOL_IMPORT.get_workspace_permission(),
PermissionConstants.TOOL_IMPORT.get_workspace_permission_workspace_manage_role(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,10 @@
</template>

<script setup lang="ts">
import { ref, reactive, computed, watch } from 'vue'
import { ref, computed, watch } from 'vue'
import { useRoute } from 'vue-router'
import Result from '@/views/knowledge-workflow/component/action/Result.vue'
import { datetimeFormat } from '@/utils/time'
import { t } from '@/locales'
const props = withDefaults(
defineProps<{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
direction="rtl"
size="800px"
:before-close="close"
destroy-on-close
>
<div class="flex mb-16">
<div class="flex-between complex-search">
Expand Down Expand Up @@ -40,14 +41,16 @@
</div>
</div>

<app-table-infinite-scroll
<app-table
ref="multipleTableRef"
class="mt-16 document-table"
:data="data"
class="w-full"
:maxTableHeight="200"
:pagination-config="paginationConfig"
@sizeChange="changeSize"
@changePage="getList(true)"
v-loading="loading"
@changePage="changePage"
:maxTableHeight="150"
:paginationConfig="paginationConfig"
:row-class-name="setRowClass"
:row-key="(row: any) => row.id"
>
<el-table-column prop="user_name" :label="$t('workflow.initiator')">
<template #default="{ row }">
Expand Down Expand Up @@ -105,7 +108,7 @@
effect="dark"
:content="$t('chat.executionDetails.cancel')"
placement="top"
v-if="row.state === 'PADDING'"
v-if="['PADDING', 'STARTED'].includes(row.state)"
>
<el-button type="danger" text @click.stop="cancelExecution(row)">
<el-icon><CircleCloseFilled /></el-icon>
Expand All @@ -114,7 +117,8 @@
</div>
</template>
</el-table-column>
</app-table-infinite-scroll>
</app-table>

<ExecutionDetailDrawer
ref="ExecutionDetailDrawerRef"
v-model:currentId="currentId"
Expand All @@ -128,10 +132,9 @@
</template>
<script setup lang="ts">
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import AppTableInfiniteScroll from '@/components/app-table-infinite-scroll/index.vue'
import ExecutionDetailDrawer from './ExecutionDetailDrawer.vue'
import { computed, ref, reactive } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { computed, ref, reactive, onBeforeUnmount } from 'vue'
import { useRoute } from 'vue-router'
import { datetimeFormat } from '@/utils/time'
import type { Dict } from '@/api/type/common'
import { MsgError, MsgConfirm } from '@/utils/message'
Expand All @@ -150,7 +153,7 @@ const apiType = computed(() => {
})
const paginationConfig = reactive({
current_page: 1,
page_size: 50,
page_size: 10,
total: 0,
})
const query = ref<any>({
Expand Down Expand Up @@ -192,21 +195,22 @@ const cancelExecution = (row: any) => {
const changeFilterHandle = () => {
query.value = { user_name: '', status: '' }
}
const changePage = () => {
paginationConfig.current_page += 1
const changeSize = () => {
paginationConfig.current_page = 1
getList()
}

const getList = (clear?: boolean) => {
if (clear) {
paginationConfig.current_page = 1
data.value = []
}
const getList = (isLoading?: boolean) => {
return loadSharedApi({ type: 'knowledge', systemType: apiType.value })
.getWorkflowActionPage(active_knowledge_id.value, paginationConfig, query.value, loading)
.getWorkflowActionPage(
active_knowledge_id.value,
paginationConfig,
query.value,
isLoading ? loading : undefined,
)
.then((ok: any) => {
paginationConfig.total = ok.data?.total
data.value = data.value.concat(ok.data.records)
data.value = ok.data.records
})
}

Expand All @@ -220,10 +224,7 @@ const next_disable = computed(() => {
return index >= data.value.length && index >= paginationConfig.total - 1
})

const setRowClass = ({ row }: any) => {
return currentId.value === row?.id ? 'highlight' : ''
}

const interval = ref<any>()
/**
* 下一页
*/
Expand All @@ -234,7 +235,7 @@ const nextRecord = () => {
return
}
paginationConfig.current_page = paginationConfig.current_page + 1
getList().then(() => {
getList(true).then(() => {
currentId.value = data.value[index].id
currentContent.value = data.value[index]
})
Expand All @@ -257,16 +258,27 @@ const preRecord = () => {
}

const open = (knowledge_id: string) => {
interval.value = setInterval(() => {
getList(false)
}, 6000)
active_knowledge_id.value = knowledge_id
getList()
getList(true)
drawer.value = true
}
const close = () => {
paginationConfig.current_page = 1
paginationConfig.total = 0
data.value = []
drawer.value = false
if (interval.value) {
clearInterval(interval.value)
}
}
onBeforeUnmount(() => {
if (interval.value) {
clearInterval(interval.value)
}
})
defineExpose({ open, close })
</script>
<style lang="scss" scoped></style>