library-picturebook-activity/docs/design/judge-portal/review-tasks.md

3.2 KiB
Raw Permalink Blame History

评委端:评审任务

所属端:评委端(tenant_id 对应评委租户,如 code=judge
菜单与定位见 菜单配置说明 中「评委端」章节:仅能查看被分配的活动与作品。

活动列表

接口GET /contests/reviews/judge/contests

活动来源(并集)

  1. t_biz_contest_judgejudge_idvalid_state=1 的赛事(机构显式添加的评委);
  2. t_biz_contest_work_judge_assignment 中该评委出现过的 contest_id(含仅通过作品分配参与的隐式场景)。

响应字段(与前端 activities/Review.vue 对齐)

字段 说明
contestId 活动 ID
contestName 活动名称
contestState / status 活动状态
reviewStartTime / reviewEndTime 评审时间窗
totalAssigned 该评委在该活动下的分配记录总数
reviewed 其中 status=completed 的数量(已提交评分)
pending totalAssigned - reviewed(待评审)

活动下作品列表

接口GET /contests/reviews/judge/contests/{contestId}/works

分配状态 reviewStatus 查询参数(与库表兼容)

  • 库中 t_biz_contest_work_judge_assignment.status 实际使用:assigned(已分配未评完)、completed(已评审)。
  • 前端下拉「未评审」传 pending → 后端按 status != completed 筛选。
  • 前端「已评审」传 reviewed → 后端按 status = completed 筛选。

作品编号workNo 为空时,前端可用作品 workId 展示兜底(如 #123)。

活动详情(含评审规则)

接口GET /contests/reviews/judge/contests/{contestId}/detail

权限:满足以下任一即可:

  • 存在有效的 t_biz_contest_judge 关联;或
  • 存在该 contestId + judgeId 的作品分配记录。

避免「列表能进、详情 403」与隐式评委场景不一致。


与租户端「评审进度」的口径对齐

维度 租户机构端 contests/reviews/progress(活动列表行) 评委端 activities/review(上表)
数据来源 GET /contests 列表项中的 reviewedCount / totalWorksCount GET /contests/reviews/judge/contests
含义 totalWorksCount:该活动最新有效作品总数。reviewedCount该活动下已分配评委且全部分配记录均为 completed 的作品数(与分配表 t_biz_contest_work_judge_assignment 一致,与作品表 accepted/awarded 终态无关) 评委维度reviewed/totalAssigned/pending 为该评委在分配表上的任务数;与租户「整作品是否全部评委评完」为不同聚合粒度
作品列表/详情 GET /contests/works 每条作品含 reviewedCount/totalJudgesCount(按该作品分配条数统计) 评委在单活动下作品列表同样基于分配 completed

说明:顶部「作品统计」卡片若仍按作品 status 汇总,可能与逐活动行「分配完成作品数」不完全同数,属汇总维度不同;列表/详情/评委任务以分配表为准。