Skip to content

Commit 43c9e2f

Browse files
authored
feat: Trigger task record details (#4696)
1 parent 0c8d420 commit 43c9e2f

File tree

5 files changed

+78
-3
lines changed

5 files changed

+78
-3
lines changed

apps/trigger/serializers/trigger_task.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,23 @@
1313
from django.utils.translation import gettext_lazy as _
1414
from rest_framework import serializers
1515

16+
from application.models import ChatRecord
1617
from common.db.search import native_page_search, get_dynamics_model
18+
from common.exception.app_exception import AppApiException
1719
from common.utils.common import get_file_content
1820
from maxkb.conf import PROJECT_DIR
1921
from trigger.models import TriggerTask, TaskRecord
2022

2123

24+
class ChatRecordSerializerModel(serializers.ModelSerializer):
25+
class Meta:
26+
model = ChatRecord
27+
fields = ['id', 'chat_id', 'vote_status', 'vote_reason', 'vote_other_content', 'problem_text', 'answer_text',
28+
'message_tokens', 'answer_tokens', 'const', 'improve_paragraph_id_list', 'run_time', 'index',
29+
'answer_text_list', 'details',
30+
'create_time', 'update_time']
31+
32+
2233
class TriggerTaskResponse(serializers.ModelSerializer):
2334
class Meta:
2435
model = TriggerTask
@@ -40,6 +51,28 @@ def list(self, with_valid=True):
4051
return [TriggerTaskResponse(row).data for row in self.get_query_set()]
4152

4253

54+
class TriggerTaskRecordOperateSerializer(serializers.Serializer):
55+
trigger_id = serializers.CharField(required=True, label=_("Trigger ID"))
56+
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
57+
trigger_task_id = serializers.CharField(required=True, label=_("Trigger task ID"))
58+
trigger_task_record_id = serializers.CharField(required=True, label=_("Trigger task record ID"))
59+
60+
def get_execution_details(self, is_valid=True):
61+
if is_valid:
62+
self.is_valid(raise_exception=True)
63+
task_record = QuerySet(TaskRecord).filter(trigger_id=self.data.get("trigger_id"),
64+
trigger_task_id=self.data.get("trigger_task_id"),
65+
id=self.data.get('trigger_task_record_id')).first()
66+
if not task_record:
67+
raise AppApiException(500, _('Trigger task record id does not exist'))
68+
if task_record.source_type == 'APPLICATION':
69+
chat_record = QuerySet(ChatRecord).filter(id=task_record.task_record_id).first()
70+
return ChatRecordSerializerModel(chat_record).data
71+
if task_record.source_type == 'TOOL':
72+
pass
73+
return None
74+
75+
4376
class TriggerTaskRecordQuerySerializer(serializers.Serializer):
4477
trigger_id = serializers.CharField(required=True, label=_("Trigger ID"))
4578
workspace_id = serializers.CharField(required=True, label=_('workspace id'))

apps/trigger/urls.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,8 @@
3131
'workspace/<str:workspace_id>/trigger/<str:trigger_id>/task_record/<int:current_page>/<int:page_size>',
3232
views.TriggerTaskRecordPageView.as_view(), name='trigger_task_record'),
3333
path('workspace/<str:workspace_id>/task', views.TriggerTaskView.as_view(), name='task'),
34-
path('trigger/v1/webhook/<str:trigger_id>', EventTriggerView.as_view(), name='trigger_webhook')
34+
path('trigger/v1/webhook/<str:trigger_id>', EventTriggerView.as_view(), name='trigger_webhook'),
35+
path(
36+
'workspace/<str:workspace_id>/trigger/<str:trigger_id>/trigger_task/<str:trigger_task_id>/trigger_task_record/<str:trigger_task_record_id>',
37+
views.TriggerTaskRecordExecutionDetailsView.as_view(), name='task source trigger'),
3538
]

apps/trigger/views/trigger_task.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
from application.api.application_api import ApplicationCreateAPI
1515
from common import result
16-
from trigger.serializers.trigger_task import TriggerTaskQuerySerializer, TriggerTaskRecordQuerySerializer
16+
from trigger.serializers.trigger_task import TriggerTaskQuerySerializer, TriggerTaskRecordQuerySerializer, \
17+
TriggerTaskRecordOperateSerializer
1718

1819

1920
class TriggerTaskView(APIView):
@@ -36,6 +37,26 @@ class TriggerTaskRecordView(APIView):
3637
pass
3738

3839

40+
class TriggerTaskRecordExecutionDetailsView(APIView):
41+
@extend_schema(
42+
methods=['GET'],
43+
description=_('Retrieve detailed records of tasks executed by the trigger.'),
44+
summary=_('Retrieve detailed records of tasks executed by the trigger.'),
45+
operation_id=_('Retrieve detailed records of tasks executed by the trigger.'), # type: ignore
46+
parameters=ApplicationCreateAPI.get_parameters(),
47+
request=ApplicationCreateAPI.get_request(),
48+
responses=ApplicationCreateAPI.get_response(),
49+
tags=[_('Trigger')] # type: ignore
50+
)
51+
def get(self, request: Request, workspace_id: str, trigger_id: str, trigger_task_id: str,
52+
trigger_task_record_id: str):
53+
return result.success(
54+
TriggerTaskRecordOperateSerializer(
55+
data={'workspace_id': workspace_id, 'trigger_id': trigger_id, 'trigger_task_id': trigger_task_id,
56+
'trigger_task_record_id': trigger_task_record_id})
57+
.get_execution_details())
58+
59+
3960
class TriggerTaskRecordPageView(APIView):
4061
@extend_schema(
4162
methods=['GET'],

ui/src/api/trigger/trigger.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,19 @@ const pageTriggerTaskRecord = (
141141
loading,
142142
)
143143
}
144+
145+
const getTriggerTaskRecordDetails = (
146+
trigger_id: string,
147+
trigger_task_id: string,
148+
trigger_task_record_id: string,
149+
loading?: Ref<boolean>,
150+
) => {
151+
return get(
152+
`${prefix.value}/${trigger_id}/trigger_task/${trigger_task_id}/trigger_task_record/${trigger_task_record_id}`,
153+
{},
154+
loading,
155+
)
156+
}
144157
export default {
145158
pageTrigger,
146159
getTriggerList,
@@ -151,4 +164,5 @@ export default {
151164
delMulTrigger,
152165
activateMulTrigger,
153166
pageTriggerTaskRecord,
167+
getTriggerTaskRecordDetails,
154168
}

ui/src/views/trigger/component/TriggerTaskRecordDrawer.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,11 @@ import { ref, reactive } from 'vue'
146146
import { isAppIcon, resetUrl } from '@/utils/common'
147147
import triggerAPI from '@/api/trigger/trigger'
148148
import { datetimeFormat } from '@/utils/time'
149-
const toDetails = (row: any) => {}
149+
const toDetails = (row: any) => {
150+
triggerAPI.getTriggerTaskRecordDetails(row.trigger_id, row.trigger_task_id, row.id).then((ok) => {
151+
console.log(ok)
152+
})
153+
}
150154
const searchType = ref<string>('name')
151155
const drawer = ref<boolean>(false)
152156
const paginationConfig = reactive({

0 commit comments

Comments
 (0)