3.2 KiB
3.2 KiB
评委端:评审任务
所属端:评委端(
tenant_id对应评委租户,如code=judge)
菜单与定位见 菜单配置说明 中「评委端」章节:仅能查看被分配的活动与作品。
活动列表
接口:GET /contests/reviews/judge/contests
活动来源(并集):
t_biz_contest_judge中judge_id且valid_state=1的赛事(机构显式添加的评委);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 汇总,可能与逐活动行「分配完成作品数」不完全同数,属汇总维度不同;列表/详情/评委任务以分配表为准。