feat: cms overview and mobile case query
This commit is contained in:
@@ -324,6 +324,11 @@ class CmsStudentViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
|
||||
数据范围 = `teacher_student_relation` 中 `teacher=当前医生 且 status=1` 的学生。
|
||||
非名下学生访问详情时不在 queryset 内 → 404。
|
||||
|
||||
附带教能力相关接口(均自动收口名下学生):
|
||||
- CMS-TEA-3 教学工具-训练记录:`GET students/training-records/`
|
||||
- CMS-TEA-4 能力画像:`GET students/{id}/competency/`
|
||||
- CMS-TEA-5 排行榜:`GET students/ranking/`
|
||||
"""
|
||||
permission_classes = [IsAuthenticated, IsTeacher]
|
||||
serializer_class = CmsStudentSerializer
|
||||
@@ -340,3 +345,26 @@ class CmsStudentViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
.select_related('institution', 'department')
|
||||
.order_by('-created_at')
|
||||
)
|
||||
|
||||
@extend_schema(summary='CMS-TEA-3 教学工具-训练记录(名下学生)', tags=['CMS-我的学生'])
|
||||
@action(detail=False, methods=['get'], url_path='training-records')
|
||||
def training_records(self, request):
|
||||
"""名下学生训练记录列表(与超管 CMS-TRN-1 共用构建逻辑,范围限名下学生)。"""
|
||||
from apps.cms.training import build_training_records
|
||||
from apps.training.models import TrainingRecord
|
||||
student_ids = list(self.get_queryset().values_list('id', flat=True))
|
||||
base = TrainingRecord.objects.filter(user_id__in=student_ids)
|
||||
return build_training_records(base, request)
|
||||
|
||||
@extend_schema(summary='CMS-TEA-5 学生排行榜(名下学生多维度排名)', tags=['CMS-我的学生'])
|
||||
@action(detail=False, methods=['get'], url_path='ranking')
|
||||
def ranking(self, request):
|
||||
from apps.cms.training import build_ranking
|
||||
return Response(build_ranking(self.get_queryset(), request.query_params.get('dimension')))
|
||||
|
||||
@extend_schema(summary='CMS-TEA-4 学生能力画像(雷达 + 概览)', tags=['CMS-我的学生'])
|
||||
@action(detail=True, methods=['get'], url_path='competency')
|
||||
def competency(self, request, pk=None):
|
||||
"""单个名下学生的能力画像(越权对象不在 queryset → 404)。"""
|
||||
from apps.cms.training import student_competency
|
||||
return Response(student_competency(self.get_object()))
|
||||
|
||||
Reference in New Issue
Block a user