# AI-Review 用户故事与验收用例 > 来源:`config/teams.json`(2026年技术大赛报名表 14 支真实队伍) > 覆盖机制:评审管线(3阶段)、按时提交(§3.3.9 增强)、空仓库影响、硬规则、校准、L2/L3 认定 > 用途:驱动验收测试 `server/src/__tests__/user-stories.test.ts` --- ## 1. 参赛选手(Primary Actor) ### US-01 按时提交的参赛者 **作为** 一名按时完成开发并在截止日前提交代码的参赛者, **我希望** 我的作品被完整评审且不受迟交扣分, **以便** 我得到与作品质量相匹配的分数。 **验收标准:** - US-01-1 评审管线完整运行(clone → 构建 → 维度 → 校准 → 硬规则 → 出分) - US-01-2 提交时间 = git 最后 commit 时间,且早于 project.deadline → `late_days ≤ 0`,penalty = 0 - US-01-3 最终得分 = 原始总分(无迟交扣分) ### US-02 迟交的参赛者 **作为** 一名错过截止日期后才提交代码的参赛者, **我希望** 系统明确记录我的迟交天数并扣除相应分数, **以便** 公平地与其他按时提交的队伍竞争。 **验收标准:** - US-02-1 commit 时间晚于 deadline → `late_days > 0` - US-02-2 penalty = `min(总分, late_days × late_penalty)`,默认 late_penalty=5 - US-02-3 迟交超过 7 天 → 扣光总分 - US-02-4 前端展示「迟交 N 天」标识 ### US-03 空仓库/未上传代码的参赛者 **作为** 一名建了条目但仓库内容为空的参赛者, **我希望** 系统不因 git 异常而逃逸扣分,同时如实反映空仓库的评分影响, **以便** 评审结果公平反映"没有交付内容"的事实。 **验收标准:** - US-03-1 空仓库(可 clone,无文件)→ 走正常评审,不出逃逸 - US-03-2 空仓库文件数 = 0,代码统计全 0 注入 AI context - US-03-3 Agent核心维度门槛 4 项全失败 → 判定 0 分 - US-03-4 演示与文档维度无 README → 硬规则封顶 ≤2 分 - US-03-5 迟交判定:无 git commit → 用条目创建时间兜底,若创建晚于 deadline 则正常扣分 ### US-04 自拟选题的参赛者(A0/B0) **作为** 一名选择"自拟选题"并把自己的实际选题写在备注栏的参赛者, **我希望** 系统按我上传的标准维度进行评审, **以便** 我的自拟项目得到合理评估。 **验收标准:** - US-04-1 带 track 创建项目 → 自动导入对应赛道默认标准 - US-04-2 赛道一/赛道二 标准维度数与总分符合模板(赛道一 12维/200、赛道二 8维/100) ### US-05 选择官方选题的参赛者(A1-A6/B1-B6) **作为** 一名选择官方给定选题的参赛者, **我希望** 系统按赛道标准评审而不受选题编号影响, **以便** 官方选题与自拟选题公平竞争。 **验收标准:** - US-05-1 标准快照在评审时被锁定(`standard_snapshot`),后续改标准不影响已评审结果 - US-05-2 评审依据维度优先使用标准快照内容(`dim.content` 优先于内置兜底指南) --- ## 2. 项目管理员(Admin) ### US-06 创建比赛项目 **作为** 项目管理员, **我希望** 创建项目时必须指定赛道并设置截止时间, **以便** 系统能自动导入对应标准并支持迟交判定。 **验收标准:** - US-06-1 创建项目缺 track → 400 `赛道为必选项` - US-06-2 带 track 创建 → 自动导入默认标准 - US-06-3 可设置 `deadline` 与 `late_penalty` ### US-07 批量导入参赛队伍 **作为** 项目管理员, **我希望** 从报名表批量导入队伍(含 gittea 凭据与选题), **以便** 快速录入 14 支队伍。 **验收标准:** - US-07-1 批量导入合法条目成功 - US-07-2 重复 repo_url 被唯一约束拒绝 - US-07-3 非法 service_url(内网/本机)被拒绝 ### US-08 人工修正评审结果 **作为** 项目管理员, **我希望** 人工修正维度分数后系统重新计算总分与最终分(含迟交扣分), **以便** 纠正 AI 评分偏差。 **验收标准:** - US-08-1 修正后重算 totalScore,应用 max_score_cap 再扣迟交 - US-08-2 迟交扣分复用已存的 late_days(不重新判定提交时间) --- ## 3. 评审系统自身(System) ### US-09 评审管线按阶段推进 **作为** 评审系统, **我希望** 评审按固定管线执行并能被诊断, **以便** 任何阶段失败都不会静默挂起。 **验收标准:** - US-09-1 管线日志 `[pipe:entryId]` 覆盖 START/CLONE/ANALYZE/GATES/TEST/BROWSE/OVERVIEW/SUBAGENT/DONE/FAIL - US-09-2 任一步骤抛错 → FAIL 兜底,状态不静默卡死 ### US-10 维度独立评分 **作为** 评审系统, **我希望** 每个维度独立评分,互不因其他维度判定而扣分, **以便** 例如非 Agent 项目只要测试真实通过就应给效果与数据分。 **验收标准:** - US-10-1 效果与数据维度有真实测试证据时据实给分,不因"非 Agent"否决 --- ## 用户故事 → 测试映射 | 用户故事 | 验收用例 | 测试文件位置 | |---|---|---| | US-01 按时提交 | `US-01-1` ~ `US-01-3` | user-stories.test.ts TC-US01 | | US-02 迟交 | `US-02-1` ~ `US-02-4` | user-stories.test.ts TC-US02 | | US-03 空仓库 | `US-03-1` ~ `US-03-5` | user-stories.test.ts TC-US03 | | US-04 自拟选题 | `US-04-1` ~ `US-04-2` | user-stories.test.ts TC-US04 | | US-05 官方选题 | `US-05-1` ~ `US-05-2` | user-stories.test.ts TC-US05 | | US-06 创建项目 | `US-06-1` ~ `US-06-3` | user-stories.test.ts TC-US06 | | US-07 批量导入 | `US-07-1` ~ `US-07-3` | user-stories.test.ts TC-US07 | | US-08 人工修正 | `US-08-1` ~ `US-08-2` | user-stories.test.ts TC-US08 | | US-09 管线诊断 | `US-09-1` ~ `US-09-2` | user-stories.test.ts TC-US09 | | US-10 维度独立 | `US-10-1` | user-stories.test.ts TC-US10 |