# Implementation Plan ## Overview 本任务清单将设计转化为增量式编码任务。任务遵循测试驱动、底座先行的顺序:先建立能力图谱与技能能力中心两个底座及合规/可信横切层,再实现各业务模块,最后串联端到端流程。带 `*` 的任务为可选。 ## Tasks - [x] 1. 项目脚手架与共享基础设施 - 初始化 NestJS + TypeScript 后端工程与 PostgreSQL 连接,建立模块化目录结构 - 实现统一的 `Result` 返回类型与错误基类(区分校验/生成/授权/系统错误) - 配置测试框架(Jest)与属性测试库(fast-check),建立 mock AI 网关与 mock 资料来源适配器骨架 - _Requirements: 全局基础_ - [x] 2. 能力图谱底座(Competency_Graph) - [x] 2.1 能力标签体系与数据模型 - 实现 `CompetencyTag`(唯一标识、所属维度)与 `CompetencyDimension` 模型及持久化 - 实现统一标签体系的维护与 `listTags()` 接口 - 编写单元测试覆盖标签定义与维度归属 - _Requirements: 14.1_ - [x] 2.2 能力数据映射与校验 - 实现 `mapData()`:将模块数据映射到 1-10 个已定义标签(5 秒内) - 实现未定义标签拒绝逻辑:拒绝映射、不创建记录、记录原因、返回提示 - 编写属性测试验证 Property 2(能力标签映射有效性) - _Requirements: 14.2, 14.3_ - [x] 2.3 能力概览聚合 - 实现 `getCompetencyOverview()`:按维度以 0-100 量化分值聚合(5 秒内) - 实现数据不足维度标记"数据不足"并保留其余维度 - 编写属性测试验证 Property 3(画像维度分值有界性,能力概览部分) - _Requirements: 14.4, 14.5_ - [x] 3. 技能能力中心底座(Skill_Center) - [x] 3.1 技能定义模型与序列化 - 实现 `SkillDefinition` 五要素结构(输入规格、AI 处理逻辑、知识源绑定、输出格式、可信度标注规则) - 实现 `serialize()` / `deserialize()` - 编写属性测试验证 Property 1(技能定义序列化往返一致性) - _Requirements: 13.2, 13.9_ - [x] 3.2 技能治理:配置、启用与审计 - 实现 `upsertSkillDefinition()` 与 `enableSkill()`,限定管理员或导师操作 - 实现技能定义变更的审计日志记录(操作者、时间、变更内容) - 初始化至少 8 个内置技能定义(资料查询、检索式生成、文献综述、病例分析、鉴别诊断辅助、医患沟通模拟、医学翻译、引用生成) - 编写单元测试覆盖治理流程与技能库完整性 - _Requirements: 13.1, 13.6, 13.7_ - [x] 3.3 技能调用与失败处理 - 实现 `invokeSkill()`:输入规格校验、按输出格式返回结果并附可信度标注(30 秒内) - 实现输入不符规格的拒绝、知识源不可用或处理失败的终止(不返回结果与标注、提示失败) - 仅成功调用完成才写入能力图谱 - 编写单元测试覆盖正常路径与各错误路径 - _Requirements: 13.3, 13.4, 13.5, 13.8_ - [x] 4. 横切层:合规模块与 AI 可信层 - [x] 4.1 权限分级与访问判定 - 实现 `checkAccess()`:为学生/导师/管理员定义权限范围(可访问资源类型与允许操作类型) - 实现范围内允许、越权拒绝并记录拒绝事件(操作者、时间、资源标识、拒绝原因) - 编写属性测试验证 Property 6(权限判定一致性) - _Requirements: 17.1, 17.2, 17.3_ - [x] 4.2 知情同意授权与画像脱敏 - 实现 `ConsentRecord` 模型(范围、用途、有效期、撤销)与 `verifyConsent()` / `revokeConsent()` - 实现 `resolveProfileView()`:非本人无有效授权时拒绝完整画像、对未授权敏感字段脱敏(2 秒内,仅返回已授权字段) - 实现授权撤销即时失效、此后按未授权处理 - 编写属性测试验证 Property 4(授权强制不变量) - _Requirements: 7.2, 7.3, 7.4, 7.5, 7.8_ - [x] 4.3 审计日志 - 实现 `writeAuditLog()`:敏感数据访问/导出/修改记录(操作者、时间、操作类型、数据范围,5 秒内),保留≥12 个月 - 编写单元测试覆盖审计字段完整性与保留策略 - _Requirements: 7.6, 17.4_ - [x] 4.4 AI 可信层 - 实现统一可信度标注封装:为 AI 输出附带≥1 来源与 0%-100% 置信度 - 实现依据查看(3 秒内展示可追溯来源条目及引用标识)与无法溯源时标注"未经核验" - 编写单元测试覆盖可信度标注与未经核验标记 - _Requirements: 16.1, 16.2, 16.3, 16.4_ - [x] 5. 个人学习空间(Learning_Space) - [x] 5.1 学习成果模型与新增校验 - 实现 `Achievement` 模型与成果类型枚举 - 实现 `addAchievement()`:必填元数据校验、标题≤200 字符与时间有效性校验,失败时拒绝且不创建记录 - 编写属性测试验证 Property 7(错误路径数据保全,学习成果部分) - _Requirements: 1.1, 1.2, 1.6, 1.9_ - [x] 5.2 自动归档与里程碑 - 实现保存成功后按学年、学期归档;含临床轮转科室信息时额外按科室归档 - 实现 `markMilestone()`:标记里程碑并关联节点内成果 - 编写单元测试覆盖归档维度与里程碑关联 - _Requirements: 1.3, 1.4, 1.8_ - [x] 5.3 成果检索与能力标签关联 - 实现 `listAchievements()`:按时间倒序、支持按成果类型/学年/学期/轮转科室筛选、每页≤50 分页 - 实现保存成功后关联能力图谱标签;无匹配标签时标记"待关联能力标签"并提示 - 编写属性测试验证 Property 8(分页边界不变量,学习空间部分) - _Requirements: 1.5, 1.7, 1.10_ - [x] 6. AI 评估引擎(AI_Evaluation_Engine) - [x] 6.1 形成性与终结性评价 - 实现 `generateFormativeEvaluation()`(30 秒内)与 `generateSummativeEvaluation()`(节点须有成果) - 实现评价附带可信度标注(≥1 依据来源)与发展建议引用≥1 能力标签 - 编写单元测试覆盖评价生成与标注 - _Requirements: 2.1, 2.2, 2.3, 2.4, 2.7_ - [x] 6.2 评价错误路径 - 实现信息不足时中止、保留数据、提示缺失类别 - 实现生成失败或超时时中止、保留数据、提示失败 - 编写单元测试覆盖错误路径(验证 Property 7 相关部分) - _Requirements: 2.5, 2.6_ - [x] 7. 课程对练引擎(Practice_Engine) - [x] 7.1 题目生成与权威源绑定 - 实现 `generateQuestions()`:基于课程内容生成 5-50 道题(30 秒内),支持 A1/A2/A3/A4/病例分析/临床决策题型 - 实现每题绑定≥1 权威知识源并记录引用标识;无法绑定时不进入审核并记录原因 - 实现课程内容不足时中止并提示 - 编写单元测试覆盖生成、题型、绑定与错误路径 - _Requirements: 3.1, 3.2, 3.3, 3.7, 3.8_ - [x] 7.2 题目审核状态机 - 实现题目状态流转(待导师审核→可用于对练/已退回),审核前不向学生发布 - 实现导师通过/退回(退回记录原因) - 编写单元测试覆盖状态机与导师审核 - _Requirements: 3.4, 3.5, 3.6, 15.1_ - [x] 7.3 模拟对练与结果诊断 - 实现 `startPractice()` / `submitAnswer()` / `finishPractice()`:逐题呈现采集作答、3 秒内判定正误、单题超 120 秒判错并继续 - 实现对练报告(正确率、用时、薄弱环节=正确率<60% 的能力标签)并按能力标签映射能力图谱 - 实现 AI 评估引擎对每个薄弱环节生成改进建议并附可信度标注 - 编写单元测试覆盖对练流程、报告与映射 - _Requirements: 4.1, 4.2, 4.4, 4.5, 4.6, 4.7, 4.8_ - [x] 8. 临床情景对话对练(Clinical_Dialogue_Practice) - 实现 `startDialogue()`:基于绑定权威知识源 10 秒内呈现情景;未绑定时阻止启动、不创建记录、提示 - 实现 `sendTurn()` 多轮对话(最多 50 轮)并逐轮记录学生输入与系统应答 - 实现 `finishDialogue()`:30 秒内生成含问诊完整性/临床推理/医患沟通三维报告并映射能力图谱;失败或超时时中止、保留对话记录、提示 - 编写单元测试覆盖发起、多轮、报告与错误路径 - _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6_ - [x] 9. 学生画像引擎(Profile_Engine) - 实现 `generateProfile()`:基于学习空间与能力图谱生成六维度画像(0-100,5 秒内) - 实现能力图谱更新后 10 秒内同步、每项结论可追溯≥1 来源记录 - 实现数据不足维度标记"数据不足"并保留其余;敏感字段标记;仅采集与维度直接相关字段(数据最小化) - 编写属性测试验证 Property 3(画像维度分值有界性,画像部分) - _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 7.1, 7.7_ - [x] 10. 职业规划模块(Career_Module) - [x] 10.1 职业目标与胜任力模型 - 实现 `setCareerGoal()`:3 秒内关联岗位胜任力模型并展示 - 实现胜任力模型四维度(科学与学术/临床能力/健康与社会/职业素养),每维度≥3 能力标签 - 实现无匹配模型时提示并推荐≥3 相近目标;关联系统错误时提示并保留已设目标 - 编写单元测试覆盖目标设定与错误路径 - _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_ - [x] 10.2 动态闭环发展规划 - 实现 `generateDevelopmentPlan()`:逐项对照能力水平与要求、标记能力差距项(含缺数据项) - 实现每差距项≥1 建议行动(标明目标水平)、推荐≥1 学习资源或对练任务、引用对应能力标签 - 实现能力图谱更新后再次请求时重算全部差距项;未选目标/模型不可用时拒绝并保留数据;差距项无资源时保留并标注暂无推荐 - 编写单元测试覆盖对照、规划生成、动态更新与错误路径 - _Requirements: 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7_ - [x] 11. 研究资料查询技能(Research_Query_Skill) - [x] 11.1 检索式生成与检索 - 实现 `generateSearchQuery()`:NL→PICO/MeSH 检索式(10 秒内,问题 1-2000 字符) - 实现 `search()`:指定来源 30 秒内检索、每页≤50 分页;空结果返回空列表并提示;来源全不可用时中止、保留检索式、提示 - 实现问题为空/超长/无医学要素时拒绝生成并提示 - 实现结果每条仅含检索信息/摘要/原文链接(不存储分发全文)、查询完成 5 秒内映射能力图谱 - 编写单元测试覆盖检索式、检索、筛选与错误路径 - _Requirements: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8_ - [x] 11.2 总结、证据分级与引用管理 - 实现 `summarize()`:30 秒内生成总结,每条结论附≥1 来源引用,每条资料标注唯一证据分级 - 实现无法溯源结论标注"未验证"且不作为引用输出;呈现总结时显示"仅辅助不替代阅读原文"提示 - 实现 `generateCitation()` / `exportCitations()`:Vancouver/GB-T 7714 格式、导出 EndNote/NoteExpress;生成或导出失败时中止、保留数据、提示 - 编写属性测试验证 Property 5(引用可追溯不变量) - _Requirements: 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7_ - [x] 12. AI 协同能力培养模块(AI_Collaboration_Module) - 实现协同训练任务(提问能力/批判性验证/责任边界意识/协同工作流四维度各≥1) - 实现 `evaluateTask()`:30 秒内四维度 0-100 评估;直接采用未核验 AI 输出时提示并要求核验、计入批判性验证;评估结果 5 秒内映射能力图谱计入画像与胜任力对照 - 实现导师点评(对学生可见);评估失败或超时时中止、保留记录、提示;维度数据不足时标记"数据不足"并保留其余 - 编写单元测试覆盖任务、评估、点评与错误路径 - _Requirements: 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7_ - [x] 13. 导师端集成 - 集成题目审核(复用 7.2)、成果点评(关联学习成果并对学生可见) - 实现带教关系校验:允许查看所带学生画像;查看非所带学生画像时合规模块拒绝并记录越权尝试 - 编写单元测试覆盖点评与带教关系访问控制 - _Requirements: 15.2, 15.3, 15.4_ - [x] 14. 端到端集成与贯通验证 - 串联学习成果→能力标签→画像→职业规划的数据贯通流程并编写集成测试 - 串联技能调用(课程对练/研究查询)→能力图谱→画像的贯通流程并编写集成测试 - 验证全系统 AI 输出均经 AI 可信层、敏感资源访问均经合规模块 - 运行全部属性测试(Property 1-8)确认核心不变量成立 - _Requirements: 2.4, 4.6, 5.4, 9.1, 12.4, 14.1, 16.1, 17.2_ - [x] 15. 三端前端界面(可选) - 实现学生端(学习空间、对练、画像、职业规划、研究查询、协同训练)核心界面 - 实现导师端(题目审核、成果点评、带教学生画像)与管理端(技能治理、权限与合规管理)核心界面 - _Requirements: 全部用户故事的界面呈现_ ## Task Dependency Graph ```mermaid graph TD T1["1. 脚手架与基础设施"] T2["2. 能力图谱底座"] T3["3. 技能能力中心底座"] T4["4. 合规与AI可信横切层"] T5["5. 个人学习空间"] T6["6. AI评估引擎"] T7["7. 课程对练引擎"] T8["8. 临床情景对话对练"] T9["9. 学生画像引擎"] T10["10. 职业规划模块"] T11["11. 研究资料查询技能"] T12["12. AI协同能力培养"] T13["13. 导师端集成"] T14["14. 端到端集成"] T15["15*. 三端前端界面"] T1 --> T2 T1 --> T3 T1 --> T4 T2 --> T5 T3 --> T7 T3 --> T8 T3 --> T11 T4 --> T9 T4 --> T13 T5 --> T6 T5 --> T9 T6 --> T7 T2 --> T6 T2 --> T9 T9 --> T10 T2 --> T10 T2 --> T12 T7 --> T13 T9 --> T13 T5 --> T14 T6 --> T14 T7 --> T14 T8 --> T14 T9 --> T14 T10 --> T14 T11 --> T14 T12 --> T14 T13 --> T14 T14 --> T15 ``` ```json { "waves": [ { "wave": 1, "tasks": ["1"] }, { "wave": 2, "tasks": ["2", "3", "4"] }, { "wave": 3, "tasks": ["5"] }, { "wave": 4, "tasks": ["6", "7", "8", "9", "11", "12"] }, { "wave": 5, "tasks": ["10", "13"] }, { "wave": 6, "tasks": ["14"] }, { "wave": 7, "tasks": ["15"] } ] } ``` ## Notes - 任务 2(能力图谱)与任务 3(技能能力中心)是两大底座,应优先实现,多数业务模块依赖它们。 - 任务 4(合规与 AI 可信横切层)为所有涉及敏感数据访问与 AI 输出的模块提供统一保障,建议与底座并行推进。 - 每个业务模块任务均包含对应的单元测试或属性测试,覆盖正常路径与错误路径。 - 属性测试(Property 1-8)分散在相关任务中实现,并在任务 14 统一运行确认。 - 任务 15 为可选的前端界面实现,后端模块与测试可独立于前端完成验证。 - 技术栈(NestJS + TypeScript + PostgreSQL + Jest + fast-check)为设计阶段的假设,实现前可调整。