Developer
ffe365201a
fix(ui): 统一设计语言——颜色、字号、间距、控件样式
...
UI 修正清单:
┌────────────────────────────────────────────────────────────┐
│ 问题 │ 修复 │
├──────────────────────────┼────────────────────────────────┤
│ 登录页 blue → 不一致 │ 统一改为 indigo 系 │
│ text-[10px] 标签难读 │ → text-xs (设置页所有标签) │
│ text-[9px] 徽章太小 │ → text-xs (角色/租户/权限) │
│ text-[14px] 输入框不统一 │ → text-sm (编辑弹窗) │
│ py-3 vs py-3.5 不一致 │ → py-3 统一 (所有输入框) │
│ 表格头 py-4 过大 │ → py-3 │
│ 编辑弹窗 max-w-md 太窄 │ → max-w-lg (更宽松) │
│ 操作列 opacity-0 隐藏 │ → opacity-60 始终可见 │
│ 原生 checkbox 不匹配 │ → 自定义圆角 checkbox + Check │
│ 登录页 rounded-lg │ → rounded-xl 统一 │
│ 登录按钮缺阴影 │ → 加 shadow-lg │
└────────────────────────────────────────────────────────────┘
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 10:28:49 +08:00
Developer
9b4412792b
feat: 用户管理页加角色列和角色编辑弹窗
...
- 用户表新增「角色」列,显示超级管理员/管理员/用户徽章
- 编辑用户弹窗增加角色选择(USER/TENANT_ADMIN/SUPER_ADMIN)
- 角色选择时同步显示该角色的权限预览
- 保存时自动调用 PATCH /tenants/:id/members/:userId 更新角色
- 新增 test-permission-flow.mjs 三层用户权限测试脚本
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 23:37:13 +08:00
Developer
ba33d517c1
feat: 分层 RBAC 权限管理系统
...
后端:
- 新增 Role / RolePermission 实体(自动 seed 系统角色)
- PermissionService——通过 isAdmin / TenantMember 链路解析用户权限
- @Permission() 装饰器 + PermissionsGuard 守卫
- /api/permissions 和 /api/roles REST API
- UserController 内联 role 检查迁移到 @Permission()
- PermissionModule 全局注册
前端:
- usePermissions hook——获取当前用户权限集
- PermissionGate 组件级门控
- PermissionSettingsView——角色列表+权限矩阵编辑页面
- SettingsView 新增「权限管理」Tab(仅 admin 可见)
- 权限预览(26 项,7 分类)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 23:25:22 +08:00
Developer
6d9acd7252
fix: MC options display, question selection, timeout handling, and grading prompts
2026-06-03 20:58:19 +08:00
Developer
a83de861dd
fix: replace PDF with HTML report (fontkit unavailable)
2026-05-21 16:30:36 +08:00
Developer
b15e821252
feat: enriched certificate with template name, dimension scores, question details + Modal UI
...
- generateCertificate: return templateName, questionDetails, dimensionScores
- Frontend: replace alert() with certificate Modal showing level, scores, dimensions, questions
- Status label: change from '已验证' to '合格'
2026-05-21 15:42:59 +08:00
Developer
9303d7ac64
fix: auto-submit answer on timeout instead of blocking
...
- Timeout triggers forced submission of current answer (or empty)
- Prevents assessment from hanging when time expires
- autoSubmitted flag prevents duplicate submissions
2026-05-21 14:32:01 +08:00
Developer
7fd2a4cda2
fix: option display + partial credit grading
...
- Option display: use slice(1) instead of regex to strip letter prefix
- Grader prompts: add explicit partial credit guidance (5-7 for partial, 0-2 only for off-target)
2026-05-21 13:13:21 +08:00
Developer
5c82c75a09
fix: strip option letter prefix in QuestionBankDetailView
...
Consistent with AssessmentView, now strips A./B./C./D. prefix
from option text before displaying alongside letter badge.
2026-05-21 12:48:35 +08:00
Developer
240aea24aa
fix: linkedGroupIds null check in validateRequiredFields
...
null !== undefined was true, causing false validation failure on templates
without linked groups. Changed to != null check.
2026-05-21 11:17:45 +08:00
Developer
54762ca299
fix: passingScore scaling and dimensions propagation
...
- Frontend: divide by 10 on load, multiply by 10 on send (UI:0-10, DB:0-100)
- Backend: include template dimensions in session templateData snapshot
2026-05-21 11:07:07 +08:00
Developer
35b1c6c37d
feat: judgment-anchored grading and per-question results
...
- Grader: inject judgment as pass criteria anchor in LLM prompt
- Grader: use followupHints for follow-up direction (not generic text)
- Grader: follow-up limit from followupHints.length instead of hardcoded 2
- Session: correctAnswer/judgment stored in questions, stripped during assessment
- Frontend: per-question results panel with choice ✅ /❌ + judgment display
2026-05-21 10:18:15 +08:00
Developer
3993099907
feat: end-to-end choice question support in assessment pipeline
...
- Data pathway: flow options through questions, answerKey in graph state
- Interviewer: format MULTIPLE_CHOICE with A/B/C/D options
- Grader: instant choice scoring (zero LLM), compare correctAnswer
- AssessmentView: render choice buttons vs textarea based on questionType
- Security: sanitizeStateForClient strips correctAnswer/judgment/answerKey
- Bank detection: check PUBLISHED items (not PUBLISHED bank status)
- Batch UI: select all / batch approve / batch reject on detail view
2026-05-21 10:06:33 +08:00
Developer
57898f939c
fix: add status guards to prevent data loss
...
- create: auto-delete REJECTED→throw error; add tenantId filter
- remove: forbid PUBLISHED bank deletion
- removeItem: forbid PUBLISHED item deletion
- generateQuestions: restrict to DRAFT status only
- frontend: render MULTIPLE_CHOICE options/judgment/followupHints
- frontend: add judgment and followupHints to QuestionBankItem type
- add 12 service guard tests (109 total)
2026-05-21 08:55:35 +08:00
Developer
83483d8117
F1-F10: audit fixes (dimension normalize, passingScore scale, DB defaults, onDelete, item status filter, timeout event type, userId privacy) + generator.node.ts strict prompt rules (anti-hallucination)
2026-05-20 11:13:37 +08:00
Developer
29bac74b58
M3: console.log -> Logger + UI redesign (QuestionBank) + S7/A9/A10/A11/U11 bug fixes + #1/#2/#3/#4 enhancements + i18n for QuestionBank pages
2026-05-19 16:57:45 +08:00
Developer
68371922ca
P0-1/P0-2/P1-1: dimensions form + E2E tests + PDF export
...
P0-1 Backend: dimensions column on template entity + validation
P0-1 Frontend: dimensions edit UI in TemplateManager
P0-2: routeAfterGrading unit tests (10 cases), service spec fix + certificate tests, jest-e2e.json
P1-1: proper PDF generation with embedded CJK font via pdf-lib low-level API
2026-05-19 08:42:03 +08:00
Developer
0b0a060967
fix: 全部TS错误修复(25->0) + 证书API 500修复 + i18n缺失key补全 + 类型定义修正
...
- 证书API 500修复: AssessmentCertificate实体注册到app.module.ts
- 前端TS错误25个清零: i18n key 17个, 类型定义8个
- i18n补全: 17个缺失key添加到zh/en/ja
- KnowledgeFile类型: 添加title, content字段
- importService: 改用apiClient.request替代raw fetch
- ModeSelector: 移除jsx prop
- questionBankService: .ok -> .status >= 400
- NotebookDetailView: .filter -> .items.filter
- ImportTasksDrawer: tasks.items提取
- API端点审计: 16/16通过
- 数据库Schema审计: 25表288列一致
- AGENTS.md更新
2026-05-18 08:30:59 +08:00
Developer
7ee13b3499
fix: 整合验证修复9个代码缺口 - 历史限制3条、证书公开端点、题库默认DRAFT状态、Admin硬编码
2026-05-15 10:09:27 +08:00
Developer
368eddfd75
fix: 代码整合修复 - Entity类型、题库生成、评估流程等14项修复
2026-05-14 09:55:07 +08:00
Developer
b2c17e3eca
feat: 题库管理功能完善
...
- QuestionBankView: 添加删除按钮、卡片点击跳转详情页
- QuestionBankDetailView: 新建题库详情页(题目CRUD/AI生成/审核)
- questionBankService: 添加generateQuestions方法
- index.tsx: 添加详情页路由
2026-05-13 21:51:33 +08:00
Developer
8686d101cd
Initial commit: AuraK人才测评系统基础框架
...
## 已实现功能
- 题库管理后端API完整实现
- 模板管理页面(Settings-测评模板)
- 评估统计页面
- 人才测评页面(AssessmentView)
- QuestionBank前端服务层
## 技术栈
- 后端: Node.js + NestJS + TypeORM
- 前端: React + TypeScript
- 容器化: Docker Compose
## 已知待完善
- 题库列表页缺少删除按钮
- 题库详情页未实现(题目管理/AI生成/审核)
2026-05-13 21:32:41 +08:00
Developer
0a9588abb7
feat: implement QuestionBank CRUD with pagination and template query
...
- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
2026-04-23 17:19:11 +08:00