Skip to content

Commit 132ef01

Browse files
committed
fix: The cancel button for the knowledge base workflow is not displayed
1 parent 459a670 commit 132ef01

4 files changed

Lines changed: 53 additions & 37 deletions

File tree

apps/knowledge/serializers/knowledge_workflow.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,11 @@ def upload_document(self, instance: Dict, user, with_valid=True):
170170
{'knowledge_id': self.data.get("knowledge_id"), 'knowledge_action_id': knowledge_action_id, 'stream': True,
171171
'workspace_id': self.data.get("workspace_id"),
172172
**instance},
173-
KnowledgeWorkflowPostHandler(None, knowledge_action_id))
173+
KnowledgeWorkflowPostHandler(None, knowledge_action_id),
174+
is_the_task_interrupted=lambda: cache.get(
175+
Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_key(action_id=knowledge_action_id),
176+
version=Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_version()) or False
177+
)
174178
work_flow_manage.run()
175179
return {'id': knowledge_action_id, 'knowledge_id': self.data.get("knowledge_id"), 'state': State.STARTED,
176180
'details': {}, 'meta': meta}
@@ -196,7 +200,8 @@ def cancel(self, is_valid=True):
196200
knowledge_action_id = self.data.get("id")
197201
cache.set(Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_key(action_id=knowledge_action_id), True,
198202
version=Cache_Version.KNOWLEDGE_WORKFLOW_INTERRUPTED.get_version())
199-
QuerySet(KnowledgeAction).filter(id=knowledge_action_id).update(state=State.REVOKE)
203+
QuerySet(KnowledgeAction).filter(id=knowledge_action_id, state__in=[State.STARTED, State.PENDING]).update(
204+
state=State.REVOKE)
200205
return True
201206

202207

apps/knowledge/views/knowledge_workflow.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ class KnowledgeWorkflowUploadDocumentView(APIView):
7171
tags=[_('Knowledge Base')] # type: ignore
7272
)
7373
@has_permissions(
74-
PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(),
75-
PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(),
74+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
75+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
7676
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
7777
ViewPermission(
7878
[RoleConstants.USER.get_workspace_role()],
@@ -181,8 +181,8 @@ class Cancel(APIView):
181181
tags=[_('Knowledge Base')] # type: ignore
182182
)
183183
@has_permissions(
184-
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_knowledge_permission(),
185-
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_permission_workspace_manage_role(),
184+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
185+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
186186
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
187187
ViewPermission(
188188
[RoleConstants.USER.get_workspace_role()],
@@ -272,7 +272,7 @@ class Export(APIView):
272272
)
273273
def get(self, request: Request, workspace_id: str, knowledge_id: str):
274274
return KnowledgeWorkflowSerializer.Export(
275-
data={'knowledge_id': knowledge_id,'user_id': request.user.id,'workspace_id': workspace_id}
275+
data={'knowledge_id': knowledge_id, 'user_id': request.user.id, 'workspace_id': workspace_id}
276276
).export()
277277

278278
class Import(APIView):
@@ -301,7 +301,7 @@ class Import(APIView):
301301
@log(menu='Knowledge', operate="Import knowledge workflow",
302302
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
303303
)
304-
def post(self, request: Request, workspace_id:str, knowledge_id: str):
304+
def post(self, request: Request, workspace_id: str, knowledge_id: str):
305305
is_import_tool = get_is_permissions(request, workspace_id=workspace_id)(
306306
PermissionConstants.TOOL_IMPORT.get_workspace_permission(),
307307
PermissionConstants.TOOL_IMPORT.get_workspace_permission_workspace_manage_role(),

ui/src/views/knowledge-workflow/component/execution-record/ExecutionDetailDrawer.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,10 @@
105105
</template>
106106

107107
<script setup lang="ts">
108-
import { ref, reactive, computed, watch } from 'vue'
108+
import { ref, computed, watch } from 'vue'
109109
import { useRoute } from 'vue-router'
110110
import Result from '@/views/knowledge-workflow/component/action/Result.vue'
111111
import { datetimeFormat } from '@/utils/time'
112-
import { t } from '@/locales'
113112
const props = withDefaults(
114113
defineProps<{
115114
/**

ui/src/views/knowledge-workflow/component/execution-record/ExecutionRecordDrawer.vue

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
direction="rtl"
66
size="800px"
77
:before-close="close"
8+
destroy-on-close
89
>
910
<div class="flex mb-16">
1011
<div class="flex-between complex-search">
@@ -40,14 +41,16 @@
4041
</div>
4142
</div>
4243

43-
<app-table-infinite-scroll
44+
<app-table
45+
ref="multipleTableRef"
46+
class="mt-16 document-table"
4447
:data="data"
45-
class="w-full"
48+
:maxTableHeight="200"
49+
:pagination-config="paginationConfig"
50+
@sizeChange="changeSize"
51+
@changePage="getList(true)"
4652
v-loading="loading"
47-
@changePage="changePage"
48-
:maxTableHeight="150"
49-
:paginationConfig="paginationConfig"
50-
:row-class-name="setRowClass"
53+
:row-key="(row: any) => row.id"
5154
>
5255
<el-table-column prop="user_name" :label="$t('workflow.initiator')">
5356
<template #default="{ row }">
@@ -105,7 +108,7 @@
105108
effect="dark"
106109
:content="$t('chat.executionDetails.cancel')"
107110
placement="top"
108-
v-if="row.state === 'PADDING'"
111+
v-if="['PADDING', 'STARTED'].includes(row.state)"
109112
>
110113
<el-button type="danger" text @click.stop="cancelExecution(row)">
111114
<el-icon><CircleCloseFilled /></el-icon>
@@ -114,7 +117,8 @@
114117
</div>
115118
</template>
116119
</el-table-column>
117-
</app-table-infinite-scroll>
120+
</app-table>
121+
118122
<ExecutionDetailDrawer
119123
ref="ExecutionDetailDrawerRef"
120124
v-model:currentId="currentId"
@@ -128,10 +132,9 @@
128132
</template>
129133
<script setup lang="ts">
130134
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
131-
import AppTableInfiniteScroll from '@/components/app-table-infinite-scroll/index.vue'
132135
import ExecutionDetailDrawer from './ExecutionDetailDrawer.vue'
133-
import { computed, ref, reactive } from 'vue'
134-
import { useRoute, useRouter } from 'vue-router'
136+
import { computed, ref, reactive, onBeforeUnmount } from 'vue'
137+
import { useRoute } from 'vue-router'
135138
import { datetimeFormat } from '@/utils/time'
136139
import type { Dict } from '@/api/type/common'
137140
import { MsgError, MsgConfirm } from '@/utils/message'
@@ -150,7 +153,7 @@ const apiType = computed(() => {
150153
})
151154
const paginationConfig = reactive({
152155
current_page: 1,
153-
page_size: 50,
156+
page_size: 10,
154157
total: 0,
155158
})
156159
const query = ref<any>({
@@ -192,21 +195,22 @@ const cancelExecution = (row: any) => {
192195
const changeFilterHandle = () => {
193196
query.value = { user_name: '', status: '' }
194197
}
195-
const changePage = () => {
196-
paginationConfig.current_page += 1
198+
const changeSize = () => {
199+
paginationConfig.current_page = 1
197200
getList()
198201
}
199202
200-
const getList = (clear?: boolean) => {
201-
if (clear) {
202-
paginationConfig.current_page = 1
203-
data.value = []
204-
}
203+
const getList = (isLoading?: boolean) => {
205204
return loadSharedApi({ type: 'knowledge', systemType: apiType.value })
206-
.getWorkflowActionPage(active_knowledge_id.value, paginationConfig, query.value, loading)
205+
.getWorkflowActionPage(
206+
active_knowledge_id.value,
207+
paginationConfig,
208+
query.value,
209+
isLoading ? loading : undefined,
210+
)
207211
.then((ok: any) => {
208212
paginationConfig.total = ok.data?.total
209-
data.value = data.value.concat(ok.data.records)
213+
data.value = ok.data.records
210214
})
211215
}
212216
@@ -220,10 +224,7 @@ const next_disable = computed(() => {
220224
return index >= data.value.length && index >= paginationConfig.total - 1
221225
})
222226
223-
const setRowClass = ({ row }: any) => {
224-
return currentId.value === row?.id ? 'highlight' : ''
225-
}
226-
227+
const interval = ref<any>()
227228
/**
228229
* 下一页
229230
*/
@@ -234,7 +235,7 @@ const nextRecord = () => {
234235
return
235236
}
236237
paginationConfig.current_page = paginationConfig.current_page + 1
237-
getList().then(() => {
238+
getList(true).then(() => {
238239
currentId.value = data.value[index].id
239240
currentContent.value = data.value[index]
240241
})
@@ -257,16 +258,27 @@ const preRecord = () => {
257258
}
258259
259260
const open = (knowledge_id: string) => {
261+
interval.value = setInterval(() => {
262+
getList(false)
263+
}, 6000)
260264
active_knowledge_id.value = knowledge_id
261-
getList()
265+
getList(true)
262266
drawer.value = true
263267
}
264268
const close = () => {
265269
paginationConfig.current_page = 1
266270
paginationConfig.total = 0
267271
data.value = []
268272
drawer.value = false
273+
if (interval.value) {
274+
clearInterval(interval.value)
275+
}
269276
}
277+
onBeforeUnmount(() => {
278+
if (interval.value) {
279+
clearInterval(interval.value)
280+
}
281+
})
270282
defineExpose({ open, close })
271283
</script>
272284
<style lang="scss" scoped></style>

0 commit comments

Comments
 (0)