feat: 接入模型动态 Fallback 与调用审计

This commit is contained in:
hh
2026-07-21 10:35:50 +08:00
parent 9429133d04
commit d0c3690d47
45 changed files with 9253 additions and 173 deletions
+14 -2
View File
@@ -417,7 +417,13 @@ def admin_asset_reviews_poll(request):
@permission_classes([IsPlatformAdmin])
def admin_tasks(request):
"""全局 AITask 列表(?status= / ?task_type= / ?team= / ?anomaly=1 成本异常 筛 + 分页)。"""
qs = AITask.objects.select_related("team", "model_config").order_by("-created_at")
# 列表不返回请求/响应/完整错误正文。部分图片、视频任务的 JSON 可达数 MB,若随列表页
# 从远程 MySQL 读取,会让只有 10 行的分页请求也长时间卡在“加载中”;详情接口仍完整读取。
qs = (
AITask.objects.select_related("team", "model_config")
.defer("request_payload", "response_payload", "error_message")
.order_by("-created_at")
)
st = request.query_params.get("status")
if st in dict(AITask.Status.choices):
qs = qs.filter(status=st)
@@ -437,7 +443,13 @@ def admin_tasks(request):
@api_view(["GET"])
@permission_classes([IsPlatformAdmin])
def admin_task_detail(request, task_id):
task = AITask.objects.select_related("team", "model_config").filter(id=task_id).first()
# 尝试链只在详情请求加载,列表仍保持原查询与一任务一行。
task = (
AITask.objects.select_related("team", "model_config")
.prefetch_related("model_attempts")
.filter(id=task_id)
.first()
)
if task is None:
return Response({"detail": "not found"}, status=status.HTTP_404_NOT_FOUND)
return Response(AdminTaskDetailSerializer(task).data)