响应参数规范flhf模块

This commit is contained in:
wanjia 2025-06-09 16:51:00 +08:00
parent 4567e318ef
commit a4e2a76d97

View File

@ -41,7 +41,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
conversation = self.get_object() conversation = self.get_object()
messages = Message.objects.filter(conversation=conversation).order_by('timestamp') messages = Message.objects.filter(conversation=conversation).order_by('timestamp')
serializer = MessageSerializer(messages, many=True) serializer = MessageSerializer(messages, many=True)
return Response(serializer.data) return Response({
'code': 200,
'message': '成功',
'data': serializer.data
})
@action(detail=True, methods=['post']) @action(detail=True, methods=['post'])
def message(self, request, pk=None): def message(self, request, pk=None):
@ -49,7 +53,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
content = request.data.get('content') content = request.data.get('content')
if not content: if not content:
return Response({'error': '消息内容不能为空'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '消息内容不能为空',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
# 创建用户消息 # 创建用户消息
user_message = Message.objects.create( user_message = Message.objects.create(
@ -79,7 +87,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
MessageSerializer(ai_message).data MessageSerializer(ai_message).data
] ]
return Response(messages) return Response({
'code': 200,
'message': '成功',
'data': messages
})
@action(detail=True, methods=['post']) @action(detail=True, methods=['post'])
def submit(self, request, pk=None): def submit(self, request, pk=None):
@ -88,7 +100,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
description = request.data.get('description', '') description = request.data.get('description', '')
if conversation.is_submitted: if conversation.is_submitted:
return Response({'error': '该对话已提交'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '该对话已提交',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
# 更新对话为已提交状态 # 更新对话为已提交状态
conversation.is_submitted = True conversation.is_submitted = True
@ -115,8 +131,9 @@ class ConversationViewSet(viewsets.ModelViewSet):
) )
return Response({ return Response({
'code': 200,
'message': '对话提交成功', 'message': '对话提交成功',
'submission_id': submission.id 'data': {'submission_id': submission.id}
}) })
@action(detail=True, methods=['post']) @action(detail=True, methods=['post'])
@ -124,7 +141,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
conversation = self.get_object() conversation = self.get_object()
if not conversation.is_submitted: if not conversation.is_submitted:
return Response({'error': '该对话未提交,无需恢复'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '该对话未提交,无需恢复',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
# 更新对话为未提交状态 # 更新对话为未提交状态
conversation.is_submitted = False conversation.is_submitted = False
@ -147,7 +168,11 @@ class ConversationViewSet(viewsets.ModelViewSet):
target_id=str(conversation.id) target_id=str(conversation.id)
) )
return Response({'message': '对话已恢复为未提交状态'}) return Response({
'code': 200,
'message': '对话已恢复为未提交状态',
'data': None
})
def _generate_ai_response(self, user_message, conversation): def _generate_ai_response(self, user_message, conversation):
""" """
@ -221,13 +246,21 @@ class FeedbackViewSet(viewsets.ModelViewSet):
feedback_value = request.data.get('feedback_value') feedback_value = request.data.get('feedback_value')
if not message_id or not conversation_id: if not message_id or not conversation_id:
return Response({'error': '消息ID和对话ID不能为空'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '消息ID和对话ID不能为空',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
try: try:
message = Message.objects.get(id=message_id) message = Message.objects.get(id=message_id)
conversation = Conversation.objects.get(id=conversation_id) conversation = Conversation.objects.get(id=conversation_id)
except (Message.DoesNotExist, Conversation.DoesNotExist): except (Message.DoesNotExist, Conversation.DoesNotExist):
return Response({'error': '消息或对话不存在'}, status=status.HTTP_404_NOT_FOUND) return Response({
'code': 404,
'message': '消息或对话不存在',
'data': None
}, status=status.HTTP_404_NOT_FOUND)
# 创建或更新反馈 # 创建或更新反馈
feedback, created = Feedback.objects.update_or_create( feedback, created = Feedback.objects.update_or_create(
@ -244,7 +277,11 @@ class FeedbackViewSet(viewsets.ModelViewSet):
# 更新用户的标注统计 # 更新用户的标注统计
self._update_annotation_stats(request.user.id, feedback_value) self._update_annotation_stats(request.user.id, feedback_value)
return Response(FeedbackSerializer(feedback).data) return Response({
'code': 200,
'message': '反馈提交成功',
'data': FeedbackSerializer(feedback).data
})
def _update_annotation_stats(self, user_id, feedback_value): def _update_annotation_stats(self, user_id, feedback_value):
"""更新用户的标注统计信息""" """更新用户的标注统计信息"""
@ -308,14 +345,20 @@ class DetailedFeedbackViewSet(viewsets.ModelViewSet):
if not message_id or not conversation_id or not feedback_type: if not message_id or not conversation_id or not feedback_type:
return Response({ return Response({
'error': '消息ID、对话ID和反馈类型不能为空' 'code': 400,
'message': '消息ID、对话ID和反馈类型不能为空',
'data': None
}, status=status.HTTP_400_BAD_REQUEST) }, status=status.HTTP_400_BAD_REQUEST)
try: try:
message = Message.objects.get(id=message_id) message = Message.objects.get(id=message_id)
conversation = Conversation.objects.get(id=conversation_id) conversation = Conversation.objects.get(id=conversation_id)
except (Message.DoesNotExist, Conversation.DoesNotExist): except (Message.DoesNotExist, Conversation.DoesNotExist):
return Response({'error': '消息或对话不存在'}, status=status.HTTP_404_NOT_FOUND) return Response({
'code': 404,
'message': '消息或对话不存在',
'data': None
}, status=status.HTTP_404_NOT_FOUND)
# 将标签列表转换为JSON字符串 # 将标签列表转换为JSON字符串
if isinstance(feedback_tags, list): if isinstance(feedback_tags, list):
@ -351,7 +394,11 @@ class DetailedFeedbackViewSet(viewsets.ModelViewSet):
# 更新用户的标注统计 # 更新用户的标注统计
self._update_annotation_stats(request.user.id, feedback_type) self._update_annotation_stats(request.user.id, feedback_type)
return Response(DetailedFeedbackSerializer(detailed_feedback).data) return Response({
'code': 200,
'message': '详细反馈提交成功',
'data': DetailedFeedbackSerializer(detailed_feedback).data
})
def _update_annotation_stats(self, user_id, feedback_type): def _update_annotation_stats(self, user_id, feedback_type):
"""更新用户的标注统计信息""" """更新用户的标注统计信息"""
@ -407,7 +454,11 @@ class ConversationSubmissionViewSet(viewsets.ModelViewSet):
@action(detail=True, methods=['post']) @action(detail=True, methods=['post'])
def review(self, request, pk=None): def review(self, request, pk=None):
if request.user.role != 'admin': if request.user.role != 'admin':
return Response({'error': '只有管理员可以进行审核'}, status=status.HTTP_403_FORBIDDEN) return Response({
'code': 403,
'message': '只有管理员可以进行审核',
'data': None
}, status=status.HTTP_403_FORBIDDEN)
submission = self.get_object() submission = self.get_object()
status_value = request.data.get('status') status_value = request.data.get('status')
@ -415,10 +466,18 @@ class ConversationSubmissionViewSet(viewsets.ModelViewSet):
reviewer_notes = request.data.get('reviewer_notes', '') reviewer_notes = request.data.get('reviewer_notes', '')
if not status_value or status_value not in ['accepted', 'rejected']: if not status_value or status_value not in ['accepted', 'rejected']:
return Response({'error': '状态值无效'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '状态值无效',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
if quality_score is not None and (quality_score < 1 or quality_score > 5): if quality_score is not None and (quality_score < 1 or quality_score > 5):
return Response({'error': '质量分数必须在1-5之间'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '质量分数必须在1-5之间',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
# 更新提交状态 # 更新提交状态
submission.status = status_value submission.status = status_value
@ -441,8 +500,9 @@ class ConversationSubmissionViewSet(viewsets.ModelViewSet):
) )
return Response({ return Response({
'code': 200,
'message': '审核完成', 'message': '审核完成',
'submission': ConversationSubmissionSerializer(submission).data 'data': ConversationSubmissionSerializer(submission).data
}) })
@ -464,13 +524,19 @@ class ConversationEvaluationViewSet(viewsets.ModelViewSet):
if not conversation_id or not has_logical_issues or not needs_satisfied: if not conversation_id or not has_logical_issues or not needs_satisfied:
return Response({ return Response({
'error': '对话ID、逻辑问题和需求满足度不能为空' 'code': 400,
'message': '对话ID、逻辑问题和需求满足度不能为空',
'data': None
}, status=status.HTTP_400_BAD_REQUEST) }, status=status.HTTP_400_BAD_REQUEST)
try: try:
conversation = Conversation.objects.get(id=conversation_id) conversation = Conversation.objects.get(id=conversation_id)
except Conversation.DoesNotExist: except Conversation.DoesNotExist:
return Response({'error': '对话不存在'}, status=status.HTTP_404_NOT_FOUND) return Response({
'code': 404,
'message': '对话不存在',
'data': None
}, status=status.HTTP_404_NOT_FOUND)
# 创建或更新评估 # 创建或更新评估
evaluation, created = ConversationEvaluation.objects.update_or_create( evaluation, created = ConversationEvaluation.objects.update_or_create(
@ -497,7 +563,11 @@ class ConversationEvaluationViewSet(viewsets.ModelViewSet):
} }
) )
return Response(ConversationEvaluationSerializer(evaluation).data) return Response({
'code': 200,
'message': '评估提交成功',
'data': ConversationEvaluationSerializer(evaluation).data
})
class SystemConfigViewSet(viewsets.ModelViewSet): class SystemConfigViewSet(viewsets.ModelViewSet):
@ -519,17 +589,33 @@ class SystemConfigViewSet(viewsets.ModelViewSet):
# 获取当前模型 # 获取当前模型
model_config = SystemConfig.objects.filter(config_key='current_model').first() model_config = SystemConfig.objects.filter(config_key='current_model').first()
if model_config: if model_config:
return Response({'model': model_config.config_value}) return Response({
return Response({'model': '默认模型'}) 'code': 200,
'message': '成功',
'data': {'model': model_config.config_value}
})
return Response({
'code': 200,
'message': '成功',
'data': {'model': '默认模型'}
})
elif request.method == 'POST': elif request.method == 'POST':
# 设置当前模型 # 设置当前模型
if request.user.role != 'admin': if request.user.role != 'admin':
return Response({'error': '只有管理员可以更改模型'}, status=status.HTTP_403_FORBIDDEN) return Response({
'code': 403,
'message': '只有管理员可以更改模型',
'data': None
}, status=status.HTTP_403_FORBIDDEN)
model_name = request.data.get('model') model_name = request.data.get('model')
if not model_name: if not model_name:
return Response({'error': '模型名称不能为空'}, status=status.HTTP_400_BAD_REQUEST) return Response({
'code': 400,
'message': '模型名称不能为空',
'data': None
}, status=status.HTTP_400_BAD_REQUEST)
# 更新或创建配置 # 更新或创建配置
config, created = SystemConfig.objects.update_or_create( config, created = SystemConfig.objects.update_or_create(
@ -543,17 +629,25 @@ class SystemConfigViewSet(viewsets.ModelViewSet):
} }
) )
return Response({'model': model_name}) return Response({
'code': 200,
'message': '模型设置成功',
'data': {'model': model_name}
})
@action(detail=False, methods=['get']) @action(detail=False, methods=['get'])
def models(self, request): def models(self, request):
# 返回可用的模型列表 # 返回可用的模型列表
return Response({ return Response({
'models': [ 'code': 200,
{'id': 'model1', 'name': 'GPT-3.5'}, 'message': '成功',
{'id': 'model2', 'name': 'GPT-4'}, 'data': {
{'id': 'model3', 'name': 'Claude'}, 'models': [
{'id': 'model4', 'name': 'LLaMA'}, {'id': 'model1', 'name': 'GPT-3.5'},
{'id': 'model5', 'name': 'Qwen'} {'id': 'model2', 'name': 'GPT-4'},
] {'id': 'model3', 'name': 'Claude'},
{'id': 'model4', 'name': 'LLaMA'},
{'id': 'model5', 'name': 'Qwen'}
]
}
}) })