diff --git a/backend/app/api/v1/review.py b/backend/app/api/v1/review.py index 27b826a..ea4250d 100644 --- a/backend/app/api/v1/review.py +++ b/backend/app/api/v1/review.py @@ -50,6 +50,7 @@ def review_queue( def _fmt_queue_item(t: GenerationTask, db: Session) -> dict: import json from app.models.product import Product + from app.api.v1.tasks import _score_array_to_obj product = db.query(Product).filter(Product.id == t.product_id).first() operator = db.query(User).filter(User.id == t.operator_id).first() selected_text = db.query(TextCandidate).filter( @@ -67,6 +68,14 @@ def _fmt_queue_item(t: GenerationTask, db: Session) -> dict: except (json.JSONDecodeError, ValueError): text_parsed = {"content": selected_text.content} + # 质量分:解析 score_json 明细数组算总分+透传维度(绝不读 eval_score,设计留NULL) + text_score = None + if selected_text and selected_text.score_json: + try: + text_score = _score_array_to_obj(json.loads(selected_text.score_json)) + except (json.JSONDecodeError, ValueError): + text_score = None + return { "task_id": t.id, "product_name": product.name if product else None, @@ -79,6 +88,7 @@ def _fmt_queue_item(t: GenerationTask, db: Session) -> dict: "title": text_parsed.get("title", ""), "content": text_parsed.get("content", ""), # 纯正文 "tags": text_parsed.get("tags", []), + "score": text_score, # 审核显分:总分+7维明细(C2) } if selected_text else None, "selected_image": { "candidate_id": selected_image.id, diff --git a/frontend/src/components/review/ReviewCard.tsx b/frontend/src/components/review/ReviewCard.tsx index b633c57..f959460 100644 --- a/frontend/src/components/review/ReviewCard.tsx +++ b/frontend/src/components/review/ReviewCard.tsx @@ -4,6 +4,7 @@ * 通过(+5) / 打回(-3,必填原因) */ import { ReviewQueueItem } from '@/types/index'; +import { ScoreDimBars } from '@/components/tasks/ScoreDimBars'; interface ReviewCardProps { item: ReviewQueueItem; @@ -30,6 +31,10 @@ export function ReviewCard({ item, onApprove, onReject }: ReviewCardProps) { {item.selected_text.content}
)} + {/* 质量分:审核可判断(C2)。合格线80=红线,不用组件默认85 */} + {item.selected_text?.score && ( +