From 7674b6063fb25236a8aa1fe5e73ce87ca456efad Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 17 Jun 2026 08:45:44 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BA=BA=E6=89=8D=E6=B5=8B=E8=AF=84?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=BB=E9=9D=A2=E5=9C=B0=E5=9B=BE=20?= =?UTF-8?q?=E2=80=94=207=E4=B8=AA=E7=94=BB=E9=9D=A2/4=E4=B8=AA=E8=B7=AF?= =?UTF-8?q?=E7=94=B1/10=E4=B8=AA=E6=B5=8B=E8=AF=95=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 画面清单: 1. 考核评估 /assessment — 答题/结果/证书/历史 2. 评估统计 /assessment-stats — 统计/雷达/趋势 3. 题库管理 /question-banks — 列表/详情/CRUD/AI生成/审核 4. 设置-测评模板 /settings — 模板/维度/P2配置 涵盖: 前端组件/后端API/路由/服务/测试脚本映射 发现: AssessmentStatsView + AssessmentTemplateManager 两个画面无测试覆盖 Co-Authored-By: Claude Opus 4.8 --- docs/assessment-screen-map.md | 199 ++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 docs/assessment-screen-map.md diff --git a/docs/assessment-screen-map.md b/docs/assessment-screen-map.md new file mode 100644 index 0000000..38fccde --- /dev/null +++ b/docs/assessment-screen-map.md @@ -0,0 +1,199 @@ +# 人才测评系统 — 画面地图 + +> 版本: 2026-06-17 +> 覆盖: 所有测评相关画面、功能模块、API 端点、测试脚本 + +--- + +## 一、画面全景 + +``` +┌────────────────────────────────────────────────────────────────┐ +│ AuraK 人才测评系统画面 │ +├────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ +│ │ 考核评估 │ │ 评估统计 │ │ 题库管理 │ │ +│ │ /assessment │ │ /stats │ │ /question-banks │ │ +│ ├──────────────┤ ├──────────────┤ ├──────────────────────┤ │ +│ │ 答题交互画面 │ │ 统计面板 │ │ 题库列表 │ │ +│ │ · MC选择 │ │ 雷达图展示 │ │ 题库详情/题目管理 │ │ +│ │ · 简答输入 │ │ 趋势图表 │ │ 题目CRUD弹窗 │ │ +│ │ · 追问流程 │ │ 筛选区 │ │ AI生成弹窗 │ │ +│ │ · 结果展示 │ │ │ │ 审核流程 │ │ +│ │ · 证书弹窗 │ │ │ │ 创建题库抽屉 │ │ +│ └──────────────┘ └──────────────┘ └──────────────────────┘ │ +│ │ +│ ┌────────────────────────────────────────────────────────┐ │ +│ │ 系统设置 → 测评模板 │ │ +│ │ /settings → Tab: assessment_templates │ │ +│ ├────────────────────────────────────────────────────────┤ │ +│ │ 模板创建/编辑弹窗 │ │ +│ │ 维度配置(添加/删除/权重) │ │ +│ │ 基本设置(题数/时间/及格分/P2字段) │ │ +│ └────────────────────────────────────────────────────────┘ │ +│ │ +└────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 二、画面清单 + +### 2.1 考核评估 `/assessment` + +| 画面 | 文件名 | 功能 | +|:----|--------|------| +| **考核首页** | `AssessmentView.tsx` | 选择模板 → 开始评估 | +| **答题交互** | `AssessmentView.tsx` (renderAssessment) | 选择题(选项按钮+确认)、简答题(textarea+发送)、追问流程 | +| **进度导航** | `AssessmentView.tsx` | 题序圆点(当前蓝/标记黄/其他灰) + 🏷️标记回头按钮 | +| **提交确认** | `AssessmentView.tsx` (submitConfirm modal) | 未答完时弹窗确认 | +| **结果展示** | `AssessmentView.tsx` (renderCompletion) | 等级、分数、每题详情、报告 | +| **证书弹窗** | `AssessmentView.tsx` (cert modal) | 等级、总分、维度得分、题目列表 | +| **历史侧栏** | `AssessmentView.tsx` (右栏) | 考评历史列表 | +| **答题回顾** | `AssessmentView.tsx` (review button) | reviewMode开启时查看答案+解析 | + +**组件文件**: `web/components/views/AssessmentView.tsx` +**页面入口**: `web/src/pages/workspace/AssessmentPage.tsx` +**路由**: `Route path="assessment"` +**服务**: `web/services/assessmentService.ts` + +### 2.2 评估统计 `/assessment-stats` + +| 画面 | 文件名 | 功能 | +|:----|--------|------| +| **统计面板** | `AssessmentStatsView.tsx` | 通过率、平均分、最高/最低分 | +| **雷达图** | `AssessmentStatsView.tsx` | 各维度平均分 | +| **趋势图** | `AssessmentStatsView.tsx` | 分数趋势 | +| **筛选区** | `AssessmentStatsView.tsx` | 时间/模板/组织筛选 | + +**组件文件**: `web/components/views/AssessmentStatsView.tsx` +**路由**: `Route path="assessment-stats"` + +### 2.3 题库管理 `/question-banks` + +| 画面 | 文件名 | 功能 | +|:----|--------|------| +| **题库列表** | `QuestionBankView.tsx` | 题库卡片列表/搜索/筛选Tab(全部/已发布/草稿/待审核) | +| **创建题库抽屉** | `QuestionBankView.tsx` (drawer) | 名称/描述/模板选择 → 创建提交 | +| **题库详情** | `QuestionBankDetailView.tsx` | 题库信息/状态/统计/题目列表 | +| **题目卡片** | `QuestionBankDetailView.tsx` | 题型/难度/维度/状态标签 + hover操作按钮 | +| **添加/编辑题目弹窗** | `QuestionBankDetailView.tsx` | 题干/类型/难度/维度/评分要点 | +| **AI生成弹窗** | `QuestionBankDetailView.tsx` | 生成数量设置 → AI出题 | +| **批量审核** | `QuestionBankDetailView.tsx` | 全选/单题通过驳回/批量通过驳回 | +| **提交审核** | `QuestionBankDetailView.tsx` | 题库状态 DRAFT→PENDING_REVIEW | +| **发布** | `QuestionBankDetailView.tsx` | PENDING_REVIEW→PUBLISHED | + +**组件文件**: `web/components/views/QuestionBankView.tsx`, `web/components/views/QuestionBankDetailView.tsx` +**路由**: `Route path="question-banks"`, `Route path="question-banks/:id"` +**服务**: `web/services/questionBankService.ts` + +### 2.4 设置 → 测评模板 `/settings` (Tab: assessment_templates) + +| 画面 | 文件名 | 功能 | +|:----|--------|------| +| **模板列表** | `SettingsView.tsx` + `AssessmentTemplateManager.tsx` | 所有模板列表 | +| **创建/编辑模板弹窗** | `AssessmentTemplateManager.tsx` | 名称/描述/题数/时间/及格分 | +| **维度配置** | `AssessmentTemplateManager.tsx` | 添加/删除维度 + 权重 | +| **P2配置** | `AssessmentTemplateManager.tsx` | attemptLimit/reviewMode/shuffleQuestions/预约时段 | + +**组件文件**: `web/components/views/AssessmentTemplateManager.tsx` +**路由**: `Route path="settings"` (Tab: assessment_templates) +**服务**: `web/services/templateService.ts` + +--- + +## 三、画面关系图 + +``` +侧栏导航 + │ + ├── 考核评估 ─────── AssessmentView + │ ├── 答题交互 (MC/SA/追问) + │ ├── 结果展示 (+ 证书弹窗) + │ └── 历史侧栏 + │ + ├── 评估统计 ─────── AssessmentStatsView + │ ├── 统计面板 + │ ├── 雷达图 + │ └── 趋势图 + │ + ├── 题库管理 ─────── QuestionBankView ──→ QuestionBankDetailView + │ │ ├── 题目列表 (CRUD) + │ │ ├── AI生成弹窗 + │ │ └── 审核流程 + │ └── 创建题库抽屉 + │ + └── 系统设置 ─────── SettingsView + └── 测评模板 Tab ── AssessmentTemplateManager + ├── 模板列表 + └── 创建/编辑弹窗 + └── 维度配置 +``` + +--- + +## 四、后端 API 端点对照 + +| 前端画面 | 后端 API | Controller | +|---------|----------|-----------| +| 考核进行 | `POST /assessment/start` → `GET /assessment/:id/state` → `POST /assessment/:id/answer` | `assessment.controller.ts` | +| 证书 | `GET /assessment/:id/certificate` | `assessment.controller.ts` | +| 回顾 | `GET /assessment/:id/review` | `assessment.controller.ts` | +| 历史 | `GET /assessment/history` | `assessment.controller.ts` | +| 统计 | `GET /assessment/stats` | `assessment.controller.ts` | +| 模板CRUD | `POST/GET/PUT/DELETE /assessment/templates` | `template.controller.ts` | +| 题库CRUD | `POST/GET/PUT/DELETE /question-banks` | `question-bank.controller.ts` | +| 题目CRUD | `POST/GET/PUT/DELETE /question-banks/:bankId/items` | `question-bank.controller.ts` | +| AI生成 | `POST /question-banks/:id/generate` | `question-bank.controller.ts` | +| 审核 | `POST /question-banks/:id/items/batch-review` | `question-bank.controller.ts` | + +--- + +## 五、已存在测试脚本 + +| 测试文件 | 覆盖画面 | 项数 | 通过率 | +|---------|---------|:----:|:------:| +| `tests/assessment.e2e.spec.ts` | 考核评估 UI | 8 | 100% ✅ | +| `tests/full-assessment.e2e.spec.ts` | 考核全流程(API+UI) | 18 | 83% ✅(1 flaky) | +| `tests/question-bank.e2e.spec.ts` | 题库管理全按钮 | 33 | 100% ✅ | +| `test-assessment-smoke.mjs` | 烟雾测试(全模块) | 29 | 100% ✅ | +| `test-e2e-assessment-full-flow.mjs` | 端到端全流程 | 29 | 100% ✅ | +| `test-p2-advanced.mjs` | P2高级功能 | 20 | 100% ✅ | +| `test-concurrent-assessments.mjs` | 并发考核 | 20人 | ✅ | +| `test-multiround.mjs` | 多轮对话 | — | ✅ | +| `test-question-distribution.mjs` | 出题分布 | — | ✅ | +| `exam-organizer.mjs` | 考试组织场景 | — | ✅ | + +--- + +## 六、未测试画面 + +| 画面 | 组件 | 测试覆盖 | 风险 | +|:----|------|:--------:|:----:| +| 评估统计 `/assessment-stats` | `AssessmentStatsView.tsx` | **❌ 无测试** | 🔴 统计面板/雷达图/趋势图 | +| 设置→测评模板 Tab | `AssessmentTemplateManager.tsx` | **❌ 无单独测试** | 🟡 维度配置/P2字段/模板CRUD | + +**待补充测试**: `AssessmentStatsView` 和 `AssessmentTemplateManager` 两个画面还未覆盖。 + +--- + +## 七、技术栈 + +| 层 | 技术 | 文件行数 | +|:---|------|:--------:| +| 前端画面 | React 19 + TypeScript + Tailwind CSS v4 | ~6,000 行 | +| 后端 API | NestJS 11 + TypeORM | ~3,500 行 | +| 测试 | Playwright 1.61.0 | ~3,800 行 | + +**前端组件总行数**: +- `AssessmentView.tsx` — ~1,100 行 (最大) +- `QuestionBankDetailView.tsx` — ~530 行 +- `QuestionBankView.tsx` — ~380 行 +- `SettingsView.tsx`(测评部分) — ~200 行 +- `AssessmentStatsView.tsx` — ~? (待读) +- `AssessmentTemplateManager.tsx` — ~540 行 + +--- + +> **下一步建议**: 补充评估统计画面 + 测评模板配置画面 的 Playwright 全按钮测试。