Repository navigation
新增功能一:学生个人中心 + 简历上传
Model 层:Student 新增了 studentNumber、major、grade、skillTags、cvFilePath 字段
UI 层:StudentDashboardPanel 增加了:
个人资料表单(姓名、学号、专业、年级、技能标签)
PDF 简历选择和上传按钮
技能匹配提示(申请岗位时显示缺少哪些技能)
Service 层:StudentService 增加了:
saveProfile() — 新建或更新学生资料
getMissingSkills() — 计算学生缺哪些技能
nextStudentId() — 自动生成 S001、S002 格式的学号
学号唯一性校验
新增功能二:MO 发布岗位 + 管理员审核
Model 层:Job 重新设计,新增了:
@RequiredSkills List // 岗位要求技能
@publisherid String // 发布者ID
@ReviewStatus ReviewStatus // 待审核/已通过/已拒绝
Service 层:JobService 增加了:
岗位新增时必须携带技能列表
findByPublisherId() — 按发布者查岗位
findOpenJobs() — 只查已发布的岗位(用于学生端展示)
UI 层:AdminReviewPanel 从 272 行扩到 459 行,增加了完整的审核面板:
待审核岗位列表
查看详情(岗位要求、发布者信息)
通过 / 拒绝操作
新增功能三:申请流程 + 审批
Model 层:新增 Application、ApplicationStatus(Pending / Reviewed / Rejected)
Service 层:ApplicationService 从 100 行扩到 200 行,增加了:
学生提交申请(自动过滤已申请、缺少技能的岗位)
管理员审批(通过/拒绝申请)
防止重复申请校验
申请数量统计
新增功能四:输入校验层
新增两个 Validator:
StudentValidator — 校验姓名非空、学号格式、技能标签列表
JobValidator — 校验标题非空、技能列表非空
所有 Service 方法在处理数据前都会先调校验,校验不通过抛 ValidationException
新增功能五:AI智能匹配模块
新增了11个文件,修改了6个文件,具体如下:
AI功能(6个新文件):
AiMatchingService.java,核心AI匹配服务,根据技能相似度给申请者和岗位打分排名
SkillNormalizer.java ,技能同义词归一化,比如MySQL和SQL视为等价
WorkloadService.java , 工作量监控和均衡,统计每个TA的周工作时间,超载预警
AiController.java,控制器,给UI层调用AI功能的接口
MatchResult.java ,匹配结果模型,含分数+可解释说明
WorkloadReport.java,工作量报告模型
新增功能六:
ui升级,包括web端与swing端;
工作内容可删改,优化填写需求的功能逻辑;
将测试的标准数据添加到data文件夹,方便直接调用;
将report,use's manual,以及readme文件导入,方便使用;
整体优化了上述功能。
新增功能七:
角色与登录:
在 UserRole 中新增 ADMIN。
LoginPanel 的角色下拉框加入 ADMIN,演示账号加入 admin1 / admin123。
MainFrame 增加 ADMIN_VIEW,登录后按角色分流:TA 进入 TA 面板,MO 进入 MO 面板,ADMIN 进入 Admin 面板。
Admin 业务能力:
新增 AdminService 和 AdminController。
AdminService 负责 Admin 专属业务,不把规则写进 DAO。
支持查看全部用户。
支持创建 TA / MO 账户,不支持通过界面创建 ADMIN 账户。
创建账户时校验用户名、密码、角色,禁止重复用户名。
新用户 ID 按现有 U001 风格生成下一个可用编号。
Admin 界面:
新增 AdminDashboardPanel。
页面包含用户管理、TA workload、Jobs / Applications、数据一致性检查四块。
用户管理:展示所有用户,提供创建 TA/MO 账户表单。
TA workload:调用现有 AiController.getWorkloadReport() 展示所有 TA 工作量。
Jobs / Applications:调用现有 JobController.getAllJobs() 和 ApplicationController.getAllApplications() 展示全量记录。
数据一致性:展示检查结果或 “No issues found”。
数据一致性检查:
检查 User、Student、Job、Application 的重复 ID。
检查 Student.userId 是否引用存在的 User。
检查 Job.publisherId 是否引用存在的 User,且是否为 MO。
检查 Application.studentId 是否引用存在的 Student。
检查 Application.jobId 是否引用存在的 Job。
检查核心字段是否为空。
检查结果使用简单对象,例如 ConsistencyIssue,包含 severity、category、message。
JSON 数据:
在 data/users.json 增加一个 Admin 示例账户:
id: U999
username: admin1
password: admin123
role: ADMIN
Test Plan
新增或补充 AdminServiceTest:
可以创建 TA 账户。
可以创建 MO 账户。
重复用户名创建失败。
尝试创建 ADMIN 账户失败。
生成的新用户 ID 不与已有用户冲突。
数据一致性检查能识别缺失 User、Student、Job 引用。
补充登录相关测试:
AuthService 能识别 ADMIN 角色登录。
TA/MO 原有登录不受影响。