You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

5.6 KiB

实施任务

交付与证明映射

需求域 规划来源 实现任务 主要证明
词库来源与覆盖 proposal、design T1、T2、T3 来源清单、中文名检查、Flyway 执行成功
词云筛选与排序 skill-cloud spec T4、T5 Repository/Service 单测、MockMvc 场景
TOP10 派生与一致性 skill-cloud、skill-match spec T5、T7、T8 集成测试断言同一排序结果
个人技能匹配 skill-match spec T6、T8 别名、分母、空数据和部分命中单测
学习路径与建议 learning-path spec T7、T8 优先级连续、模板建议和空列表测试
权限与隐私 三份 spec、design T8、T10 401/403、响应脱敏和日志检查
文档与契约 proposal、design T1、T10 docs/verify_openapi.py、接口文档审查

任务

  • 1. 固化 ESCO + O*NET 代表性数据清单:在 changes/n03-skill-cloud/data/source-manifest.md 和 docs/skill-taxonomy-sources.md 记录行业、职位、技能范围、源版本、许可、归属 URL、中文映射负责人和导入规则。产出:互联网、金融、教育及代表性职位的可审查数据边界。依赖:无。证据:人工审查清单,所有入选技能均有稳定来源 ID 和中文标准名。
  • 2. 新增 Flyway 词库结构迁移:创建 mydreamjob-server/src/main/resources/db/migration/V35__skill_cloud_taxonomy.sql,实现七张词库表、外键、唯一约束、查询索引,以及 occupation_skills.importance_source_code、importance_element_id、importance_is_proxy 来源追溯字段,不修改 V1–V34。产出:H2/MySQL 均可创建词库结构。依赖:T1。证据:mvn -Dtest=SkillTaxonomyMigrationTest test。
  • 3. 导入代表性种子数据:创建 mydreamjob-server/src/main/resources/db/migration/V36__skill_cloud_seed.sql,导入三类行业、代表性职位、全部已声明技能分类、ESCO 主来源技能、ONET software_skills 补充技术、别名和 ONET Importance;每条非空热度必须保存真实 SOC、Element ID 和代理标记,无映射时 importance 留空。产出:种子数据可重复执行迁移并满足中文名约束。依赖:T2。证据:迁移测试断言数量、中文名、分类覆盖、ESCO 职位来源、47 条 O*NET 技术来源和全部非空 Importance 与版本化证据快照一致。
  • 4. 建立词库领域与查询仓储:在 mydreamjob-server/src/main/java/com/mydreamjob/skill/ 新增实体、Repository 和查询投影,覆盖行业—职位—分类校验及技能关系查询。产出:能按 industryId、occupationId、可选 categoryId 读取技能。依赖:T2、T3。证据:mvn -Dtest=SkillTaxonomyRepositoryTest test。
  • 5. 实现共享词云排名服务与 DTO:在 mydreamjob-server/src/main/java/com/mydreamjob/skill/ 实现统一筛选、heat DESC, nameZh ASC, skillId ASC 排序和完整列表输出;返回 rank、技能身份、分类、heat、来源字段。产出:词云和 TOP10 使用同一个事实来源。依赖:T4。证据:mvn -Dtest=SkillCloudQueryServiceTest test,覆盖空热度、同热度、空范围和分类缺省。
  • 6. 实现个人技能匹配服务:新增 SkillMatchService、别名归一化器和匹配 DTO,只从 JWT 对应学生的 skills_json 读取技能;按 min(10, actualSize) 截取并计算整数匹配度。产出:命中、缺失、分母和异常 JSON 行为符合规范。依赖:T5。证据:mvn -Dtest=SkillMatchServiceTest test,覆盖 0、1/3=33、全命中、少技能和重复别名。
  • 7. 实现学习路径生成服务:新增 SkillLearningPathService 和分类模板,按缺失技能顺序生成连续优先级与通用建议;不接 AI 或外部资源。产出:无缺口返回空列表,有缺口返回最小学路径。依赖:T6。证据:mvn -Dtest=SkillLearningPathServiceTest test。
  • 8. 暴露三个 STUDENT 接口并登记权限:新增 SkillCloudController,实现 GET /skills/word-cloud、GET /skills/match、GET /skills/learning-path,在 SecurityConfig 中加入 /skills/** 的登录与 STUDENT 校验,并补充 OpenAPI 注解。产出:三个 API 只接受 STUDENT,响应统一为 ApiResponse。依赖:T5、T6、T7。证据:mvn -Dtest=SkillCloudControllerTest test,覆盖匿名 401、COMPANY/ADMIN 403、参数非法 400 和学生成功 200。
  • 9. 补齐持久化与端到端回归测试:在 mydreamjob-server/src/test/java/com/mydreamjob/skill/ 增加 H2 持久化、排序一致性、匹配与学习路径复用同一 TOP10 的集成测试,并验证响应不含原始 skills_json。产出:三个接口的边界与一致性有自动化证明。依赖:T3、T8。证据:mvn test。
  • 10. 更新接口与来源文档并执行发布级验证:新增 docs/skill-cloud-api.md,更新 docs/frontend-integration.md、docs/openapi-rc.json 和词库来源说明,明确 TOP10 由前端截取、参数规则、响应字段、无 AI 和许可归属。依赖:T8、T9。产出:静态契约、运行时行为和文档一致。证据:python docs\verify_openapi.py、mvn clean verify。

实施顺序

T1 → T2 → T3 → T4 → T5 → T6 → T7 → T8 → T9 → T10。

退出条件

  • 所有任务完成且证据命令通过。
  • 三份 spec 的场景全部有对应自动化或明确人工契约验证。
  • 词库来源版本和许可可追溯,未修改历史迁移。
  • 未实现非目标范围;没有课程、AI、后台维护或个人进度持久化。
  • OpenAPI 静态契约与运行时接口一致,且 STUDENT 权限边界可验证。