初始提交:ai-review 项目当前版本(含赛道一/二提交规范修订与时间节点文档)

This commit is contained in:
hangshuo652
2026-08-23 11:52:45 +08:00
commit 4da7044c4b
152 changed files with 33490 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
# 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维/150、赛道二 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 |