07308cae99
涵盖: - Phase 0-5 测试架构与详细用例清单 - 脚本索引(11个测试脚本)与执行策略 - 全部测试结果汇总(~314项 100%通过) - 14个已修复缺陷跟踪表 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
413 lines
18 KiB
Markdown
413 lines
18 KiB
Markdown
# AuraK 完整测试框架
|
||
|
||
> 版本: v2.0 · 更新: 2026-06-16
|
||
> 覆盖: 用户管理 / 权限系统 / 考核评估 / 并发场景 / UI验证
|
||
|
||
---
|
||
|
||
## 一、测试架构总览
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────┐
|
||
│ AuraK 测试框架 │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Phase 0: 系统测试 (System Tests) │
|
||
│ ├── test-systematic.mjs 142项 · 全角色全维度 │
|
||
│ └── test-full-coverage.mjs 52项 · 未覆盖路径补全 │
|
||
│ │
|
||
│ Phase 1: 认证与用户 (Auth & User) │
|
||
│ ├── 登录/登出/Token校验/API Key │
|
||
│ ├── 用户 CRUD 正常/异常/边界 │
|
||
│ └── 角色升降级即时生效 │
|
||
│ │
|
||
│ Phase 2: 权限 RBAC (Permission) │
|
||
│ ├── 三层角色权限验证 (26/21/5) │
|
||
│ ├── 系统角色保护 / 自定义角色 CRUD │
|
||
│ └── 前端组件级门控 (PermissionGate) │
|
||
│ │
|
||
│ Phase 3: 考核评估 (Assessment) │
|
||
│ ├── test-assessment-smoke.mjs 29项 · 烟雾测试 │
|
||
│ ├── test-e2e-assessment-full-flow.mjs 29项 · 端到端全流程 │
|
||
│ ├── test-p2-advanced.mjs 20项 · P2 高级功能 │
|
||
│ ├── test-concurrent-assessments.mjs · 20人并发考核 │
|
||
│ └── test-multiround.mjs · 多轮对话 │
|
||
│ │
|
||
│ Phase 4: 出题引擎 (Question Engine) │
|
||
│ ├── 维度权重分配算法验证 (floor+remainder) │
|
||
│ ├── 题库容量与重叠率检查 │
|
||
│ └── judgment/评分标准完整性校验 │
|
||
│ │
|
||
│ Phase 5: 场景验证 (Scenario) │
|
||
│ ├── exam-organizer.mjs · 考试组织者全流程 │
|
||
│ └── test-permission-flow.mjs · 三层角色权限验证 │
|
||
│ │
|
||
│ Phase 6: 缺陷回归 (Regression) │
|
||
│ ├── shuffleArray bug 回归 │
|
||
│ ├── 系统角色权限不可改 (isSystem 保护) │
|
||
│ └── 获取 /users/:id 端点缺失修复 │
|
||
│ │
|
||
└────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 二、各 Phase 详细说明
|
||
|
||
### Phase 0 — 系统测试 (System Tests)
|
||
|
||
**执行周期**: 每次代码变更后必跑
|
||
|
||
| 脚本 | 项数 | 通过率 | 说明 |
|
||
|------|:----:|:------:|------|
|
||
| `test-systematic.mjs` | 142 | ✅ 142/142 | 全角色(SA/TA/USER) × 全维度(身份/CRUD/RBAC/UI/用户故事) |
|
||
| `test-full-coverage.mjs` | 52 | ✅ 52/52 | 未覆盖路径: 角色权限边界 × 模板极值 × 异常链 × 跨功能交互 |
|
||
|
||
**测试范围**:
|
||
|
||
```
|
||
1. 环境准备 4项
|
||
2. 身份认证 15项 (登录/错误密码/空凭据/篡改JWT/API Key)
|
||
3. 用户CRUD正常 11项 (创建/查询/编辑/升降级/删除/登录失效)
|
||
4. 用户CRUD异常 17项 (重复/空/短密码/emoji/不存在/越权)
|
||
5. 边界测试 7项 (并发同名/超长/空权限/幂等删除)
|
||
6. 权限矩阵RBAC 49项 (三层权限数/S应有/TA应有/USER无/API校验证/系统保护)
|
||
7. 租户隔离 1项
|
||
8. 缺陷回归 5项
|
||
9. 前端UI一致性 22项 (登录页/导航/设置Tab/弹窗/权限矩阵/三角色限制)
|
||
10. 用户故事完整 14项 (SA/TA/USER闭环/升降级即时/系统不可破坏)
|
||
```
|
||
|
||
---
|
||
|
||
### Phase 1 — 认证与用户系统
|
||
|
||
#### 1.1 身份认证 (Authentication)
|
||
|
||
| # | 测试点 | 输入 | 预期 |
|
||
|---|--------|------|------|
|
||
| A-01 | 正常密码登录 | admin / admin123 | 200 + access_token |
|
||
| A-02 | 错误密码 | admin / wrong | 401 |
|
||
| A-03 | 空密码 | admin / "" | 401 |
|
||
| A-04 | 不存在用户 | nobody / x | 401 |
|
||
| A-05 | 空JSON body | {} | 401 |
|
||
| A-06 | 空body | (empty) | 400/401 |
|
||
| A-07 | 无Authorization头 | — | 401 |
|
||
| A-08 | 无效Bearer | "Bearer invalid" | 401 |
|
||
| A-09 | 篡改JWT | 伪造token | 401 |
|
||
| A-10 | API Key获取 | Bearer token | 200 + apiKey |
|
||
| A-11 | JWT payload校验 | — | 含 id, role, tenantId |
|
||
| A-12 | USER登录 | user1/pass123 | 200 |
|
||
| A-13 | TA登录 | ta_admin/pass123 | 200 |
|
||
|
||
#### 1.2 用户 CRUD (User Create/Read/Update/Delete)
|
||
|
||
**正常路径**:
|
||
|
||
| # | 操作 | 预期 |
|
||
|---|------|------|
|
||
| U-01 | SA创建用户(含displayName) | 201 + user.id |
|
||
| U-02 | TA创建用户(本租户) | 201 |
|
||
| U-03 | 用户加入租户 | 201 |
|
||
| U-04 | 按ID查询用户 | 200 + 用户数据 |
|
||
| U-05 | 用户列表含新用户 | 列表中可找到 |
|
||
| U-06 | 编辑用户displayName | 200 |
|
||
| U-07 | 提升 USER→TENANT_ADMIN | 200 + 权限从5→21 |
|
||
| U-08 | 降级 TENANT_ADMIN→USER | 200 + 权限从21→5 |
|
||
| U-09 | 删除用户 | 200 |
|
||
| U-10 | 删除后不可查询 | 404 |
|
||
| U-11 | 删除后无法登录 | 401 |
|
||
|
||
**异常路径**:
|
||
|
||
| # | 操作 | 预期 |
|
||
|---|------|------|
|
||
| U-12 | 重复用户名 | 409 |
|
||
| U-13 | 空用户名 | 400 |
|
||
| U-14 | 密码太短(5位) | 400 |
|
||
| U-15 | 缺password | 400 |
|
||
| U-16 | 密码6位(边界) | 201 |
|
||
| U-17 | 编辑不存在用户 | 404 |
|
||
| U-18 | 编辑 admin 账号 | 400 |
|
||
| U-19 | 删自己 | 400 |
|
||
| U-20 | 删不存在用户 | 404 |
|
||
| U-21 | 删 admin 账号 | 400 |
|
||
| U-22 | USER 删用户 | 403 |
|
||
| U-23 | TA 删用户 | 403 |
|
||
| U-24 | 非法角色值 | 400 |
|
||
| U-25 | 改不存成员 | 400 |
|
||
|
||
---
|
||
|
||
### Phase 2 — 权限系统 (RBAC)
|
||
|
||
#### 2.1 三层角色权限矩阵
|
||
|
||
| 权限 | SUPER_ADMIN | TENANT_ADMIN | USER |
|
||
|------|:-----------:|:------------:|:----:|
|
||
| user:view | ✅ | ✅ | ❌ |
|
||
| user:create | ✅ | ✅ | ❌ |
|
||
| user:edit | ✅ | ✅ | ❌ |
|
||
| user:delete | ✅ | ❌ | ❌ |
|
||
| user:role | ✅ | ❌ | ❌ |
|
||
| tenant:view | ✅ | ✅ | ❌ |
|
||
| tenant:create | ✅ | ❌ | ❌ |
|
||
| tenant:delete | ✅ | ❌ | ❌ |
|
||
| tenant:members | ✅ | ✅ | ❌ |
|
||
| kb:view | ✅ | ✅ | ✅ |
|
||
| kb:create | ✅ | ✅ | ✅ |
|
||
| kb:edit | ✅ | ✅ | ✅ |
|
||
| kb:delete | ✅ | ✅ | ❌ |
|
||
| assess:view | ✅ | ✅ | ✅ |
|
||
| assess:manage | ✅ | ✅ | ❌ |
|
||
| assess:template | ✅ | ✅ | ❌ |
|
||
| assess:bank | ✅ | ✅ | ❌ |
|
||
| model:view | ✅ | ✅ | ❌ |
|
||
| model:config | ✅ | ✅ | ❌ |
|
||
| plugin:view | ✅ | ✅ | ✅ |
|
||
| plugin:manage | ✅ | ✅ | ❌ |
|
||
| settings:view | ✅ | ✅ | ❌ |
|
||
| settings:system | ✅ | ❌ | ❌ |
|
||
| **权限总数** | **26** | **21** | **5** |
|
||
|
||
#### 2.2 角色 CRUD
|
||
|
||
| # | 操作 | 预期 |
|
||
|---|------|------|
|
||
| R-01 | SA列出角色 | 200 + 3系统角色 |
|
||
| R-02 | TA列出角色 | 200 |
|
||
| R-03 | USER列出角色 | 403 |
|
||
| R-04 | 创建自定义角色 | 201 |
|
||
| R-05 | 重复角色名 | 400 |
|
||
| R-06 | 编辑自定义角色名 | 200 |
|
||
| R-07 | 编辑系统角色名 | 400 |
|
||
| R-08 | 删除自定义角色 | 200 |
|
||
| R-09 | 删除系统角色 | 400 |
|
||
| R-10 | 删除已删角色 | 404 |
|
||
| R-11 | 角色设权限 | 200 |
|
||
| R-12 | 角色读权限 | 200 |
|
||
| R-13 | 空权限数组 | 200 |
|
||
| R-14 | 无效权限key | 400 |
|
||
| R-15 | 系统角色权限不可改 | 400 (isSystem保护) |
|
||
|
||
#### 2.3 前端权限门控
|
||
|
||
| # | 角色 | 可见Tab |
|
||
|---|------|---------|
|
||
| F-01 | SUPER_ADMIN | 用户管理 ✅ / 权限管理 ✅ / 租户管理 ✅ |
|
||
| F-02 | TENANT_ADMIN | 用户管理 ❌(仅SA可见) / 权限管理 ✅ / 租户管理 ❌ |
|
||
| F-03 | USER | 用户管理 ❌ / 权限管理 ❌ / 租户管理 ❌ |
|
||
|
||
---
|
||
|
||
### Phase 3 — 考核评估系统 (Assessment)
|
||
|
||
#### 3.1 烟雾测试 (Smoke Test) — `test-assessment-smoke.mjs`
|
||
|
||
| # | 检查项 | 说明 |
|
||
|---|--------|------|
|
||
| S-01 | admin 登录 | 管理员身份验证 |
|
||
| S-02 | ta_admin 登录 | 租管身份验证 |
|
||
| S-03 | user1 登录 | 用户身份验证 |
|
||
| S-04 | 模板列表可获取 | API 可用 |
|
||
| S-05 | 至少一个模板 | 系统有默认模板 |
|
||
| S-06 | 技术人员模板存在 | 核心模板存在 |
|
||
| S-07 | 非技术人员模板存在 | 备选模板存在 |
|
||
| S-08 | attemptLimit 未锁定 | 非1(admin不被锁) |
|
||
| S-09 | 题库可获取 | 题库 API 正常 |
|
||
| S-10 | 题库有题目 | 题库非空 |
|
||
| S-11 | 启动考核正常 | start API 正常 |
|
||
| S-12 | 出题成功 | 异步出题完成 |
|
||
| S-13 | 包含 PROMPT 维度 | 维度覆盖正确 |
|
||
| S-14 | 包含 LLM 维度 | 维度覆盖正确 |
|
||
| S-15 | 答题提交正常 | 4题全部成功 |
|
||
| S-16 | 评分状态正常 | 评分不报错 |
|
||
| S-17 | 证书可获取 | 证书 API 正常 |
|
||
| S-18 | 证书含等级 | 等级判定正常 |
|
||
| S-19 | 证书含总分 | 分数计算正常 |
|
||
| S-20 | USER 创建模板被拒 | 权限隔离生效 |
|
||
| S-21 | TA 可查看模板 | TA 权限正确 |
|
||
| S-22 | USER 可查看题库 | 读权限开放 |
|
||
| S-23 | USER 不能查看他人回顾 | 数据隔离生效 |
|
||
| S-24 | 考核页渲染 | 前端页面加载 |
|
||
| S-25 | 模板按钮可见 | UI 元素渲染 |
|
||
| S-26 | 开始评估按钮可见 | UI 交互可用 |
|
||
| S-27 | 点击开始无报错 | 前端无崩溃 |
|
||
| S-28 | 题目已加载 | 题目显示到页面 |
|
||
|
||
#### 3.2 端到端全流程 (E2E Full Flow) — `test-e2e-assessment-full-flow.mjs`
|
||
|
||
| 阶段 | 测试项 | 详细验证 |
|
||
|------|--------|---------|
|
||
| **模板校验** | 维度配置 | 技术人员模板有 PROMPT/LLM/IDE/DEV_PATTERN |
|
||
| | attemptLimit | 非1锁定状态 |
|
||
| | 题数合理 | ≥4题 |
|
||
| **题库校验** | 技术人员题库 | 有MC和SA题 |
|
||
| | PROMPT/LLM/IDE/DEV_PATTERN | 每维度≥10/10/4/4题 |
|
||
| | 评分标准 | 全部简答题有judgment |
|
||
| | 非技术人员题库 | 有题且无IDE/DEV_PATTERN |
|
||
| **API考核** | 创建考生 | POST /users |
|
||
| | 启动考核 | POST /assessment/start |
|
||
| | 异步出题 | 等待 /state 返回 questions |
|
||
| | 维度分布 | 含PROMPT和LLM |
|
||
| | 答题 | 4题全部成功 |
|
||
| | 证书 | 可获取+含等级+含分数+含维度得分 |
|
||
| | 历史记录 | 考核列表有记录 |
|
||
| **非技术模板** | 启动 | 正常 |
|
||
| | 出题 | 无IDE/DEV_PATTERN |
|
||
| | 维度 | 仅PROMPT/LLM |
|
||
| **前端 UI** | 登录 | 页面登录成功 |
|
||
| | 模板选择 | 按钮可见可点 |
|
||
| | 答题(MC+SA) | 最多4题含追问 |
|
||
| | 结果 | 显示等级/分数 |
|
||
| | 截图 | e2e-assessment-result.png |
|
||
|
||
#### 3.3 P2 高级功能 (Advanced Features) — `test-p2-advanced.mjs`
|
||
|
||
| # | 功能 | 测试 | 结果 |
|
||
|---|------|------|:----:|
|
||
| P-01 | attemptLimit 写入 | 设2→读取=2 | ✅ |
|
||
| P-02 | reviewMode 写入 | 设after_completion→读取 | ✅ |
|
||
| P-03 | shuffleQuestions 写入 | 设true→读取 | ✅ |
|
||
| P-04 | 尝试次数限制 | 超限后拒绝 | ✅ |
|
||
| P-05 | 预约开始 | 未到时间拒绝 | ✅ |
|
||
| P-06 | 预约结束 | 已过时间拒绝 | ✅ |
|
||
| P-07 | 答题回顾API | 返回含正确答案 | ✅ |
|
||
| P-08 | 回顾含解析 | judgment字段可见 | ✅ |
|
||
| P-09 | shuffleQuestions生效 | flag=true时启用 | ✅ |
|
||
| P-10 | 模板配置恢复 | 恢复后正常 | ✅ |
|
||
| **总计** | **20项** | **全部通过** | **✅** |
|
||
|
||
#### 3.4 多轮对话 (Multi-round) — `test-multiround.mjs`
|
||
|
||
| # | 场景 | 说明 |
|
||
|---|------|------|
|
||
| M-01 | 选择题答题 | 检测选项按钮→点击→确认答案 |
|
||
| M-02 | 简答题答题 | textarea输入→发送按钮 |
|
||
| M-03 | AI追问 | 简答后textarea重现→输入追问回答 |
|
||
| M-04 | 4题全流程 | 完整完成4题混合题型 |
|
||
|
||
#### 3.5 出题算法验证
|
||
|
||
```
|
||
验证: floor + remainder 分配法 → 总和恒等于题数
|
||
|
||
技术人员模板(30/30/20/20):
|
||
20题 → PROMPT:6 + LLM:6 + IDE:4 + DEV_PATTERN:4 = 20 ✅
|
||
10题 → PROMPT:3 + LLM:3 + IDE:2 + DEV_PATTERN:2 = 10 ✅
|
||
5题 → PROMPT:2 + LLM:1 + IDE:1 + DEV_PATTERN:1 = 5 ✅
|
||
4题 → PROMPT:2 + LLM:2 + IDE:0 + DEV_PATTERN:0 = 4 ✅ (旧算法: 4题 = 1+1+1+1=4❌)
|
||
|
||
非技术人员模板(50/30/20):
|
||
10题 → PROMPT:5 + LLM:3 + WORK_CAP:2 = 10 ✅
|
||
```
|
||
|
||
---
|
||
|
||
### Phase 4 — 场景测试 (Scenario)
|
||
|
||
#### 4.1 考试组织者场景 — `exam-organizer.mjs`
|
||
|
||
```
|
||
流程: 管理员登录 → 创建4个考生(初/中/高级+初级)
|
||
→ 4考生依次参加考核(UI操作,含MC+SA+追问)
|
||
→ 查看考核结果统计
|
||
```
|
||
|
||
#### 4.2 并发考核场景 — `test-concurrent-assessments.mjs`
|
||
|
||
| # | 场景 | 结果 |
|
||
|---|------|:----:|
|
||
| C-01 | 20人并发创建账号 | ✅ 全部成功 |
|
||
| C-02 | 20人并发启动考核 | ✅ 全部成功, Session ID 唯一 |
|
||
| C-03 | 异步出题完成率 | ✅ 20/20, 每题20题 |
|
||
| C-04 | 各会话题数一致 | ✅ 均为20题 |
|
||
| C-05 | 维度分布正确 | ✅ IDE:4/LLM:6/PROMPT:6/DEV_PATTERN:4 |
|
||
| C-06 | 并发提交答案 | ✅ 6人×4题全部成功 |
|
||
| C-07 | 题目重叠率 | ⚠️ 10.5%(题库281题不够400槽位) |
|
||
|
||
---
|
||
|
||
### Phase 5 — 缺陷回归 (Regression)
|
||
|
||
| # | 缺陷 | 发现者 | 修复状态 |
|
||
|---|------|--------|:--------:|
|
||
| REG-01 | shuffleArray 返回新数组但调用处用const未接收 | 代码审查 | ✅ 已修 |
|
||
| REG-02 | 系统角色权限可被修改(setRolePermissions缺isSystem检查) | 全量回归测试 | ✅ 已修 |
|
||
| REG-03 | GET /users/:id 端点不存在 | 系统性测试 | ✅ 已修 |
|
||
| REG-04 | DTO中perQuestionTimeLimit边界值校验缺失 | 边界测试 | ✅ 已修 |
|
||
| REG-05 | P2字段(attemptLimit等)在startSession中未正确映射 | P2测试 | ✅ 已修 |
|
||
|
||
---
|
||
|
||
## 三、测试脚本索引
|
||
|
||
### 3.1 脚本一览
|
||
|
||
| 脚本 | 行数 | 测试类型 | 运行时间 | 依赖 | 说明 |
|
||
|------|:----:|:--------:|:--------:|:----|------|
|
||
| `test-systematic.mjs` | 480+ | API+UI | ~60s | 前后端 | **必跑** 全角色全维度 |
|
||
| `test-full-coverage.mjs` | 350+ | API | ~5s | 后端 | 未覆盖路径补全 |
|
||
| `test-e2e-assessment-full-flow.mjs` | 300+ | API+UI | ~90s | 前后端 | **新** 考核端到端全流程 |
|
||
| `test-assessment-smoke.mjs` | 280+ | API+UI | ~75s | 前后端 | **新** 快速烟雾测试 |
|
||
| `test-p2-advanced.mjs` | 200+ | API | ~30s | 后端 | P2高级功能专项 |
|
||
| `test-concurrent-assessments.mjs` | 230+ | API | ~100s | 后端 | 20人并发考核 |
|
||
| `test-user-lifecycle.mjs` | 400+ | API+UI | ~30s | 前后端 | 用户全生命周期+异常 |
|
||
| `test-permission-flow.mjs` | 200+ | API+UI | ~40s | 前后端 | 三层角色权限验证 |
|
||
| `test-multiround.mjs` | 230+ | UI | ~60s | 前后端 | 考核多轮对话 |
|
||
| `test-question-distribution.mjs` | 70+ | UI | ~30s | 前后端 | 出题分布验证 |
|
||
| `exam-organizer.mjs` | 300+ | API+UI | ~180s | 前后端 | 考试组织场景 |
|
||
|
||
### 3.2 推荐执行策略
|
||
|
||
```
|
||
快速检查 (~2min):
|
||
node test-assessment-smoke.mjs # 29项烟雾测试
|
||
node test-full-coverage.mjs # 52项全量回归
|
||
|
||
完整检查 (~6min):
|
||
node test-systematic.mjs # 142项系统测试
|
||
node test-e2e-assessment-full-flow.mjs # 29项端到端
|
||
node test-p2-advanced.mjs # 20项P2专项
|
||
|
||
深度检查 (~10min):
|
||
完整检查 +
|
||
node test-concurrent-assessments.mjs # 20人并发
|
||
node exam-organizer.mjs # 考试组织场景
|
||
node test-multiround.mjs # 多轮对话
|
||
```
|
||
|
||
---
|
||
|
||
## 四、测试结果汇总
|
||
|
||
| 测试套件 | 通过 | 失败 | 通过率 | 最新运行 |
|
||
|---------|:---:|:----:|:------:|:--------:|
|
||
| 系统性测试 (142项) | 142 | 0 | 100% | 2026-06-09 |
|
||
| 全量回归 (52项) | 52 | 0 | 100% | 2026-06-09 |
|
||
| 烟雾测试 (29项) | 29 | 0 | 100% | 2026-06-16 |
|
||
| 端到端全流程 (29项) | 29 | 0 | 100% | 2026-06-16 |
|
||
| P2专项 (20项) | 20 | 0 | 100% | 2026-06-09 |
|
||
| 并发测试 (20人) | — | — | ✅ | 2026-06-08 |
|
||
| 用户生命周期 (42项) | 42 | 0 | 100% | 2026-06-09 |
|
||
| **总计** | **~314** | **0** | **100%** | |
|
||
|
||
---
|
||
|
||
## 五、测试发现并修复的缺陷清单
|
||
|
||
| # | 缺陷 | 模块 | 严重度 | 修复PR |
|
||
|---|------|------|:------:|--------|
|
||
| 1 | shuffleArray 返回值未接收 | question-bank.service | 🔴 | c57c302 |
|
||
| 2 | 系统角色权限可被随意修改 | permission.service | 🔴 | a7e7c85 |
|
||
| 3 | GET /users/:id 缺失 | user.controller | 🟡 | 7e74165 |
|
||
| 4 | P2模板字段未映射到 session | assessment.service | 🟡 | d15e881 |
|
||
| 5 | 出题分配Math.round合计偏差 | question-bank.service | 🟡 | 1aee7e0 |
|
||
| 6 | questionCount=0/50未做DAO校验 | dto/create-template.dto | 🟡 | 9fd503b |
|
||
| 7 | text-[10px] 字号系统不统一 | UI (多个组件) | 🟢 | ffe3652 |
|
||
| 8 | 登录页blue与后台indigo不一致 | LoginPage.tsx | 🟢 | ffe3652 |
|
||
| 9 | 操作列 opacity-0 完全隐藏 | SettingsView.tsx | 🟢 | c166d29 |
|
||
| 10 | 编辑弹窗 max-w-md 过窄 | SettingsView.tsx | 🟢 | c166d29 |
|
||
| 11 | 会议记录题 PROMPT→LLM 维度错位 | question_bank_items | 🟡 | 75769b1 |
|
||
| 12 | 151道简答题缺评分标准 | question_bank_items | 🟡 | 75769b1 |
|
||
| 13 | 非技术人员模板无题库 blank | 题库关联 | 🟡 | 75769b1 |
|
||
| 14 | templateData P2字段显式映射确认 | assessment.service | 🟡 | d15e881 |
|