解决已发现问题

This commit is contained in:
Azmat@qq.com
2026-09-17 15:00:15 +08:00
parent f3c49b36be
commit 5df038c635
24 changed files with 1913 additions and 94 deletions
+6 -1
View File
@@ -116,6 +116,8 @@ class AdminUserSerializer(serializers.ModelSerializer):
class AdminTaskSerializer(serializers.ModelSerializer):
team_name = serializers.CharField(source="team.name", read_only=True, default=None)
model_name = serializers.CharField(source="model_config.name", read_only=True, default=None)
# 不改变 AITask.task_type 的调度语义;后台展示/筛选使用来源分类。
task_category = serializers.SerializerMethodField()
cost_anomaly = serializers.SerializerMethodField()
# 单任务毛利(¥):actual_cost(积分)÷汇率 base_cost。base_cost=0(成本未知)时 None,报表侧过滤
margin_yuan = serializers.SerializerMethodField()
@@ -125,11 +127,14 @@ class AdminTaskSerializer(serializers.ModelSerializer):
class Meta:
model = AITask
fields = [
"id", "task_type", "status", "team", "team_name", "model_name",
"id", "task_type", "task_category", "status", "team", "team_name", "model_name",
"estimated_cost", "actual_cost", "base_cost", "margin_yuan", "cost_anomaly", "error_code", "reapable", "created_at",
]
read_only_fields = fields
def get_task_category(self, obj) -> str:
return str(getattr(obj, "task_category", "standard") or "standard")
def get_cost_anomaly(self, obj) -> bool:
return is_cost_anomaly(obj.estimated_cost, obj.actual_cost)