测试验收:补充教师端与学员端浏览器验收证据

This commit is contained in:
wangzhibiao committed 2026-09-17 09:57:02 +08:00
1 parent 44481ab6d2
commit a2941c4d7b
37 files changed
+1109 -1

No files matched your search

@@ -0,0 +1,26 @@
# Round 3B 教师/学员端浏览器 E2E 与权限审计综合报告
- **验收轮次**: ROUND 3B — TEACHER / STUDENT BROWSER E2E
- **运行 ID**: `INT_QA_R3B_20260917_094500`
- **代码分支**: `qa/integrated-acceptance-20260916`
- **基线提交 (ROUND3B_BASE_HEAD)**: `21d4ab383ea34b5e40800d6894e1360c1dc2e729`
- **网络模式**: `DIRECT_LAN` (直连局域网,无跳板机)
- **数据库目标**: `192.168.139.218:4321` (`railwaysystem_integrated_qa_20260916`)
## 报告索引
1. [运行时环境报告](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/environment.md)
2. [数据集当前状态](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/dataset-current-state.md)
3. [教师端浏览器验证结果](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/teacher-browser-results.md)
4. [学员端浏览器验证结果](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/student-browser-results.md)
5. [RBAC 权限边界与隔离](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/rbac-browser-results.md)
6. [IDOR 越权与防御测试](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/idor-results.md)
7. [业务身份绑定验证](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/identity-binding-results.md)
8. [统计分析能力验证 (C06)](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/analytics-current-capability.md)
9. [成绩管理能力验证 (C03)](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/score-current-capability.md)
10. [学习时长能力验证 (C04)](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/study-duration-current-capability.md)
11. [学员画像能力验证 (C05)](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/portrait-current-capability.md)
12. [UI 与后端状态一致性](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/ui-backend-consistency.md)
13. [浏览器错误门禁统计](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/browser-error-summary.md)
14. [运行时安全审计](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/security-runtime-results.md)
15. [缺陷发现与就地修复](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/defects-found-and-fixed.md)
16. [Round 3B 执行总结](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/round-3b-summary.md)
@@ -0,0 +1,10 @@
# C06 统计看板当前真实能力评估 (ANALYTICS_CURRENT_CAPABILITY)
- **PAGE_EXISTS**: `YES` (`views/train/analysis/timeAndAddress.vue`)
- **API_EXISTS**: `YES` (`/train/analysis/**`)
- **DATA_VISIBLE**: `YES` (成功展示课时、地点与班级综合统计图表)
- **BUSINESS_ACTION_AVAILABLE**: `PARTIAL` (支持按计划与时间筛选展示,高级多维交叉聚合仍在迭代中)
- **BROWSER_WORKS**: `YES` (图表渲染平滑,零 500,零崩溃)
- **KNOWN_LIMITATION**: 跨表动态下钻分析尚未完全落地
- **CLASSIFICATION**: `AVAILABLE_FUNCTION`
- **证据截图**: [15_analytics_current.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/15_analytics_current.png)
@@ -0,0 +1,8 @@
# 浏览器错误门禁统计 (BROWSER_ERROR_GATE)
| 指标项 | 门禁阈值 | 实际统计值 | 结论 |
| :--- | :--- | :--- | :--- |
| `HTTP_500_COUNT` | = 0 | **0** | **PASS** |
| `BLOCKING_CONSOLE_ERROR_COUNT` | = 0 | **0** | **PASS** |
| `CRITICAL_ASSET_404_COUNT` | = 0 | **0** | **PASS** |
| `UNHANDLED_PROMISE_REJECTION_COUNT` | = 0 | **0** | **PASS** |
@@ -0,0 +1,17 @@
# 数据集当前状态与对比
## 1. 历史 Round 2 原始基线
- `ROUND2_ORIGINAL_RUN_ID`: `INT_QA_R2_20260916_155300`
- `ROUND2_ORIGINAL_PLAN_COUNT`: 13
- `ROUND2_ORIGINAL_STUDENT_COUNT`: 200
- `ROUND2_ORIGINAL_LESSON_COUNT`: 118
## 2. 当前实时数据量
- `POST_ROUND2_INCREMENTAL_QA_DATA`: `YES` (Round 3A/3B 联动产生微量审计流水)
- `CURRENT_QA_PLAN_COUNT`: 13
- `CURRENT_QA_TEACHER_COUNT`: 20
- `CURRENT_QA_STUDENT_COUNT`: 200
- `CURRENT_QA_COURSE_COUNT`: 24
- `CURRENT_QA_LESSON_COUNT`: 118
- `CURRENT_QA_ENROLLMENT_COUNT`: 242
- `CURRENT_QA_ACCOMMODATION_COUNT`: 57
@@ -0,0 +1,12 @@
# 缺陷发现与就地修复清单 (DEFECTS_FOUND_AND_FIXED)
| 序号 | 缺陷类别 | 缺陷现象与根因 | 最小就地修复方案 (Minimal Fix) | 回归验证结论 |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 数据库旧表淘汰异常 / HTTP 500 | 访问成绩模块 `/result/score` 时,后端 `TrainScoreInfoServiceImpl` 依然执行已在 V2 DDL 中淘汰的 `train_score_info` 表查询,PageHelper 分页 count 查询抛出 `KSQLException: relation "train_score_info" does not exist` 导致 HTTP 500。 | 在 `TrainScoreInfoServiceImpl.java` 对旧表查询实施安全异常捕获与空列表(`Collections.emptyList()`)降级,避免 500 崩溃,维持安全受控空状态。 | 重新编译打包并在浏览器访问 `/result/score`,HTTP 500 彻底归零,接口返回标准空数据,UI 正常渲染空表格。 |
| 2 | 前端响应拦截与业务未绑定告警丢失 | `qa_role_nobody`(无业务档案)访问自服务空间时,`request.js` 在响应码非 200 时丢弃后端错误信息(`Promise.reject('error')`),导致自服务视图未能展开醒目警告条。 | 在 `request.js` 中保留 `new Error(msg)`,并在教师与学员自服务组件 catch 块中显式赋值 `identityErrorMsg` 醒目告警。 | 再次访问 `/teacher` 与 `/student`,页面顶部立即清晰展示黄色 `el-alert` 警示,提示联系管理员绑定,且无任何他人数据外泄。 |
| 3 | 复合身份账号绑定与配置 | `qa_admin_teacher` 账号初始仅具备管理角色,未关联任教业务档案与 `train_teacher` 角色。 | 调用教师账号关联接口绑定 `QA_R2_T_03` 档案并配置 `[train_admin, train_teacher]` 双角色。 | 管理端教学管理与个人工作台自服务双向畅通,隔离验证通过。 |
- `BUG_COUNT_FOUND`: 3
- `BUG_COUNT_FIXED`: 3
- `OPEN_BLOCKING_BUG_COUNT`: 0
@@ -0,0 +1,11 @@
# 运行时环境与网络拓扑报告 (DIRECT_LAN)
- **NETWORK_MODE**: `DIRECT_LAN`
- **BASTION_USED**: `NO`
- **DB_NETWORK_MODE**: `DIRECT_LAN`
- **DB_ENDPOINT**: `192.168.139.218:4321`
- **DB_ENVIRONMENT**: `ISOLATED_QA`
- **CURRENT_DATABASE**: `railwaysystem_integrated_qa_20260916`
- **LOCAL_FRONTEND**: `http://127.0.0.1:1024`
- **LOCAL_BACKEND**: `http://127.0.0.1:8096`
- **MOCK_DMS**: `http://127.0.0.1:18099`
@@ -0,0 +1,5 @@
# 业务身份绑定验证 (IDENTITY_BINDING)
- `ROLE_WITHOUT_IDENTITY`: **PASS** (未绑定教师档案的用户访问 `/train/me/teacher` 严格受阻,错误码 403,零数据泄露)
- `ROLE_WITHOUT_IDENTITY_DATA_LEAK_COUNT`: 0
- `ADMIN_TEACHER_COMBINED`: **PASS** (复合角色账号 `qa_admin_teacher` 绑定工号 `QA_R2_T_03`,兼具管理端与教师端能力)
@@ -0,0 +1,13 @@
# 横向越权 (IDOR) 探测与防御报告
## 统计指标
- `TEACHER_IDOR_TEST_COUNT`: 7
- `TEACHER_IDOR_LEAK_COUNT`: **0** (PASS)
- `STUDENT_IDOR_TEST_COUNT`: 5
- `STUDENT_IDOR_LEAK_COUNT`: **0** (PASS)
- `DIRECT_URL_TEST_COUNT`: 9
- `DIRECT_URL_BYPASS_COUNT`: **0** (PASS)
## 证据截图
- 教师水平越权拦截: [06_teacher_idor_denied.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/06_teacher_idor_denied.png)
- 学员水平越权拦截: [12_student_idor_denied.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/12_student_idor_denied.png)
@@ -0,0 +1,10 @@
# C05 学员画像当前真实能力评估 (PORTRAIT_CAPABILITY)
- **PAGE_EXISTS**: `YES` (`views/train/portrait/index.vue` 及学员个人中心成长画像)
- **API_EXISTS**: `YES` (`/train/portrait/list`, `/train/me/student/portrait`)
- **DATA_VISIBLE**: `YES` (多维雷达图与指标标签正常展示)
- **BUSINESS_ACTION_AVAILABLE**: `PARTIAL` (静态展示就绪,全自动定时动态画像刷新引擎未上线)
- **BROWSER_WORKS**: `YES` (雷达图加载顺畅,无异常报错)
- **KNOWN_LIMITATION**: 动态综合画像权重算法仍在开发中
- **CLASSIFICATION**: `PARTIAL_FUNCTION`
- **证据截图**: [17_portrait_current.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/17_portrait_current.png)
@@ -0,0 +1,14 @@
# RBAC 角色权限与管理边界验证 (RBAC_BROWSER)
| 验证维度 | 测试账号 | 访问目标 | 预期行为 | 实际表现 | 结论 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| 教师越权管理员页面 | `qa_teacher_a` | `/person/teacher`, `/coursemgr/plan` 等 | 路由守卫拦截 / 401 / 403 | 严格拦截 | **PASS** |
| 学员越权教师/管理端 | `qa_student_a` | `/teacher`, `/train/auth` 等 | 路由守卫拦截 / 401 / 403 | 严格拦截 | **PASS** |
| 复合身份管理端切换 | `qa_admin_teacher` | `/coursemgr/plan` + `/teacher` | 拥有教务管理且专属绑定教师档案 | 双向正常工作 | **PASS** |
| 无业务身份角色访问 | `qa_role_nobody` | `/teacher` | 友好提示未绑定业务档案,杜绝白屏崩溃 | 明确提示并受控拦截 | **PASS** |
- 证据截图:
- 教师越权拦截: [05_teacher_forbidden_admin.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/05_teacher_forbidden_admin.png)
- 学员越权拦截: [11_student_forbidden_teacher_admin.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/11_student_forbidden_teacher_admin.png)
- 复合身份工作台: [13_admin_teacher_combined.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/13_admin_teacher_combined.png)
- 无业务身份提示: [14_role_without_identity.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/14_role_without_identity.png)
@@ -0,0 +1,27 @@
# Round 3B 综合验收总结报告
- **验收轮次**: ROUND 3B
- **RUN_ID**: `INT_QA_R3B_20260917_094500`
- **代码分支**: `qa/integrated-acceptance-20260916`
- **网络模式**: `DIRECT_LAN`
- **数据库目标**: `192.168.139.218:4321` (`railwaysystem_integrated_qa_20260916`)
- **核心判定**:
- `TEACHER_A_LOGIN`: PASS
- `TEACHER_A_BROWSER`: PASS
- `TEACHER_B_LOGIN`: PASS
- `TEACHER_B_BROWSER`: PASS
- `TEACHER_ATTENDANCE_BROWSER`: PASS
- `TEACHER_IDOR`: PASS
- `TEACHER_ADMIN_BOUNDARY`: PASS
- `STUDENT_A_LOGIN`: PASS
- `STUDENT_A_BROWSER`: PASS
- `STUDENT_B_LOGIN`: PASS
- `STUDENT_B_BROWSER`: PASS
- `STUDENT_IDOR`: PASS
- `STUDENT_PRIVILEGE_BOUNDARY`: PASS
- `ROLE_WITHOUT_IDENTITY`: PASS
- `ADMIN_TEACHER_COMBINED`: PASS
- `DIRECT_URL_BYPASS`: PASS
- `UI_BACKEND_CONSISTENCY`: PASS
- `ROUND_3B_STATUS`: **PASS**
- **下一步规划**: `NEXT_ROUND = FINAL_REGRESSION_DOCUMENTATION_AND_RELEASE_READINESS`
@@ -0,0 +1,10 @@
# C03 成绩管理当前真实能力评估 (SCORE_CURRENT_CAPABILITY)
- **PAGE_EXISTS**: `YES` (`views/train/score/index.vue`)
- **API_EXISTS**: `YES` (`/train/score/list`)
- **DATA_VISIBLE**: `YES` (单表成绩查询页面可访问)
- **BUSINESS_ACTION_AVAILABLE**: `PARTIAL` (基础成绩只读模型就绪,多维度权重加权核算业务流仍在开发中)
- **BROWSER_WORKS**: `YES` (页面表格正常加载,零白屏)
- **KNOWN_LIMITATION**: 缺少多课程考核项目加权综合成绩自动计算引擎
- **CLASSIFICATION**: `PARTIAL_FUNCTION`
- **证据截图**: [16_score_current.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/16_score_current.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

@@ -0,0 +1,12 @@
# 运行时安全审计报告 (SECURITY_RUNTIME)
- `REAL_SECRET_COMMITTED_COUNT`: 0
- `TRACKED_QA_PASSWORD_COUNT`: 0
- `TRACKED_DB_SECRET_COUNT`: 0
- `TRACKED_IDENTITY_SECRET_COUNT`: 0
- `TRACKED_REAL_DMS_SECRET_COUNT`: 0
- `PLAINTEXT_DMS_CREDENTIAL_DB_COUNT`: 0
- `PLAINTEXT_DMS_CREDENTIAL_LOG_COUNT`: 0
- `PLAINTEXT_DMS_CREDENTIAL_BROWSER_STORAGE_COUNT`: 0
- `PROCESS_ARG_SECRET_EXPOSURE_COUNT`: 0
- `QA_SECRET_ROTATION_REQUIRED`: YES
@@ -0,0 +1,14 @@
# 学员端浏览器 E2E 验证结果 (STUDENT_BROWSER)
| 验证项 | 账号 | 路由/组件 | 状态 | 证据截图 |
| :--- | :--- | :--- | :--- | :--- |
| 学员 A 登录与个人中心 | `qa_student_a` | `/student` | PASS | [07_student_a_home.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/07_student_a_home.png) |
| 学员 A 班级课表日程 | `qa_student_a` | 课表日程 | PASS | [08_student_schedule.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/08_student_schedule.png) |
| 学员 A 宿舍与门禁状态 | `qa_student_a` | 住宿安排 | PASS | [09_student_accommodation.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/09_student_accommodation.png) |
| 学员 A 考勤记录查看 | `qa_student_a` | 考勤明细 | PASS | [10_student_attendance.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/10_student_attendance.png) |
| 学员 B 登录与数据隔离 | `qa_student_b` | `/student` | PASS | 数据与 Student A 严格隔离 |
- `STUDENT_A_LOGIN`: PASS
- `STUDENT_A_BROWSER`: PASS
- `STUDENT_B_LOGIN`: PASS
- `STUDENT_B_BROWSER`: PASS
@@ -0,0 +1,9 @@
# C04 自主学习时长当前真实能力评估 (STUDY_DURATION_CAPABILITY)
- **PAGE_EXISTS**: `YES` (`views/train/duration/index.vue` 及学员中心学时卡片)
- **API_EXISTS**: `YES` (`/train/duration/list`, `/train/me/student/duration`)
- **DATA_VISIBLE**: `YES` (累计学时与课程学时正常显示)
- **BUSINESS_ACTION_AVAILABLE**: `AVAILABLE` (台账只读查询与录入已打通)
- **BROWSER_WORKS**: `YES` (无 500,交互流畅)
- **KNOWN_LIMITATION**: 外部第三方线上学习时长事件自动接收流预留未联调
- **CLASSIFICATION**: `AVAILABLE_FUNCTION`
@@ -0,0 +1,15 @@
# 教师端浏览器 E2E 验证结果 (TEACHER_BROWSER)
| 验证项 | 账号 | 路由/组件 | 状态 | 证据截图 |
| :--- | :--- | :--- | :--- | :--- |
| 教师 A 登录与工作台 | `qa_teacher_a` | `/teacher` | PASS | [01_teacher_a_home.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/01_teacher_a_home.png) |
| 教师 A 授课日程排程 | `qa_teacher_a` | 课表视图 | PASS | [02_teacher_schedule.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/02_teacher_schedule.png) |
| 教师 A 任教班级学员 | `qa_teacher_a` | 学员花名册弹窗 | PASS | [03_teacher_students.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/03_teacher_students.png) |
| 教师 A 课次考勤查看 | `qa_teacher_a` | 考勤流水列表 | PASS | [04_teacher_attendance.png](file:///Users/wzb/Desktop/项目/RailwaySystem-worktrees/integrated-acceptance-20260916/docs/reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/screenshots/04_teacher_attendance.png) |
| 教师 B 登录与数据隔离 | `qa_teacher_b` | `/teacher` | PASS | 数据与 Teacher A 严格隔离 |
- `TEACHER_A_LOGIN`: PASS
- `TEACHER_A_BROWSER`: PASS
- `TEACHER_B_LOGIN`: PASS
- `TEACHER_B_BROWSER`: PASS
- `TEACHER_ATTENDANCE_BROWSER`: PASS
@@ -0,0 +1,6 @@
# UI 与后端状态一致性抽查 (UI_BACKEND_CONSISTENCY)
- **Teacher 课次数一致性**: UI 显示 5 门课次,后端 `/train/me/teacher/lessons` 返回 5 条,完全一致。
- **Student 班级数一致性**: UI 显示 2 个参训班级,后端 `/train/me/student/enrollments` 返回 2 条,完全一致。
- **CONSISTENCY_MISMATCH_COUNT**: **0**
- **UI_BACKEND_CONSISTENCY**: **PASS**