# AI 陪练二期开发推进计划 > 版本:v0.2 | 日期:2026-07-06 > 输入源:《AI陪练功能优化与缺口分析(修订版 · 2026-07-06)》+《物业行业 AI 人力资源系统 · BRD v1.1》。 > v0.2 修订:与两份输入源逐项复核后补齐 6 处缺漏——#6/#9/#16/师徒演练的明确处置(§2)、#13 定向再练的里程碑落点(M4)、画像雷达图与 BRD L1「留」段验收承载(M4)、TechSpec P1 表映射与岗位身份前置(M1)、场景管理权限口径(M1/§7)、G6 成本上限量化(§7)。 > 结论:二期不做“24 个缺口全量铺开”,先把 AI 陪练从 MVP 演示闭环推进到**生活顾问岗位试点可用**。 ## 1. 二期目标 二期的交付主题是:围绕“生活顾问”岗位,把 AI 陪练做成可训练、可复盘、可派发、可衡量的“数字师傅”训练闭环。 业务上承接 BRD 的“育 / 用 / 留”三段: | BRD 主线 | 二期落点 | |---|---| | 用 | 岗位 SOP 与训练场景绑定,训练前给预习卡和红线话术 | | 育 | 语音对手戏、多场景训练、求助、打断纠偏、训练记录 | | 留 | 画像扩展、复盘标注、主管预警、定向再练 | 二期不追求招聘、薪酬、绩效、知识图谱、原生 APP 的全量扩张。AI 分数仍定位为“辅助参考,人可否决”。 ## 2. 范围切割 ### 必做 | 工作包 | 覆盖缺口 | 价值 | |---|---|---| | 场景地基 | #1 #2 #3 #13 #17 #19 | 把代码 seed 迁到表,让岗位、场景、分发可运营 | | 对练体验增强 | #4 #5 #7 #8 #10 | 训练前有准备、训练中有情绪变化和纠偏、语音体验更像真实业主 | | 复盘与记录 | #11 #12 #14 #20 | 训练后能回放、标注、人工校准,形成可复盘资产 | | 画像与主管侧 | #15 #17 #19 | 员工看成长,主管看风险并派专项 | | 数据治理底线 | #22 #23 | Rubric 有版本,文本入库前脱敏,为试点和合规留余地 | ### 暂缓 | 暂缓项 | 原因 | |---|---| | 实时主管旁听(#18) | WebSocket + 低延迟音频工程量大;先做事后回放 | | 录像存储 | 涉员工隐私和 G3/G4,二期只存录音 | | 完整离线对练(#24) | 无 LLM 不可离线;只做 SOP/预习/题目缓存 | | 纯视觉向量检索 | 依赖素材规模和供应商合规;现有关键帧 caption 已可覆盖大部分检索 | | 原生 APP、SSO、知识图谱、绩效挂钩 | BRD 已明确为二期后或生产闸门项 | | 图片/视频情境输入(#9) | BRD 4.3.3 明列(拍照报修),vision 模型已就绪;但场景素材是瓶颈,待 12 条文本场景跑稳后独立评估,可与 B3 文生图联动 | | 环境噪音模拟(#6) | 前端混音成本不高但非试点闭环必需;噪音音源授权未解决 | | 自动案例沉淀(#16) | 挂 BRD 4.6/4.7 共创与 review_task 审核链;二期只保证"贡献度"有人工计分入口(见 M4),自动沉淀待案例量起来再评估 | | 师徒演练(BRD 4.4) | 依赖 mentor_assignment(P1)与真人师父运营;二期由"主管复盘 + 派发"承载师徒最小语义 | | 动态难度调级(#1 后半 / BRD 4.5) | 场景表保留 difficulty 字段即可;自动升降级依赖画像数据稳定,分发规则 v1 不做 | ## 3. 技术路线 ### 3.1 数据地基先行 二期第一优先级是把训练运营对象落库。当前现状是 2 个 seed 场景 + `aihr_practice_session` 汇总表,足够演示,不够试点。 建议新增或补齐以下表,统一使用 `aihr_*` 前缀: | 表 | 用途 | |---|---| | `aihr_practice_scenario` | 训练场景、岗位、项目类型、难度、人设、SOP 绑定 | | `aihr_practice_rubric` / `aihr_practice_rubric_dimension` | Rubric 版本、维度、权重、启停 | | `aihr_practice_assignment` | 主管/规则引擎派发每日小训、专项训练 | | `aihr_practice_annotation` | finish 后逐句标注、好/差示例、证据 turn | | `aihr_practice_calibration` | 人工修正评分,沉淀一致率校准集 | | `aihr_practice_audio` 或 `audio_oss_id` 字段 | 对练录音 MinIO/sys_oss 回放 | 注意:旧 TechSpec 中出现过 `practice_scenario` 等无前缀名称,二期实现时应同步修正文档或在 DDL 中明确采用 `aihr_practice_*`,避免和若依/未来模块冲突。 与 TechSpec P1 表的映射(不另建平行体系): - `aihr_practice_assignment` 吸收 `daily_drill`(每日一练)与 `training_camp`(专项训练营)的语义,用 `source`(daily/camp/retry/manual)+ `reason` 字段区分来源,不再单独建这两张表。 - `mistake_book`(错题本)语义由“低分维度 → 定向再练派发”承载(见 M4),`assignment.source='retry'` 即错题重练记录。 - 跨期五维画像仍走 TechSpec M6 的 `competency_assessment`,本计划只做单场四维分与四项画像聚合,勿与跨期评估混成一个数(BACKLOG B5 口径)。 ### 3.2 复用现有能力 - 语音识别继续复用 `POST /api/ai/asr`,不新建移动端专用 ASR。 - TTS 继续复用 `POST /api/ai/tts`,二期把 `voice` 扩成 `voice_profile`。 - 文件与录音存储复用 `sys_oss` + MinIO。 - SOP 求助复用 `/api/knowledge/search` 和 `/api/knowledge/summary-card`。 - 模型配置继续走 `aihr_model_config` 的 `chat/vector/rerank/asr/tts/vision` 分类。 - 员工端训练仍复用 `/api/train/practice/start|turn|finish`,不要另起一套移动端训练后端。 ## 4. 里程碑计划 ### M0. 二期基线冻结(2 天) 目标:确认二期不再追 MVP 演示壳,而是追试点可用闭环。 - 锁定首个岗位:生活顾问。 - 锁定首批场景:投诉处理、催费/停车费、报修跟进、突发求助。 - 每类至少 3 条场景,二期首批共 12 条。 - 每条场景必须有:人设、开场、成功条件、雷点/爽点、SOP 引用、Rubric。 - 明确试点指标:20 名员工、每人 10 次对练、完训率 80%、满意度 4/5。 验收: - `docs/BACKLOG.md` 和本计划无冲突。 - 内容负责人能提供或确认 12 条场景素材。 - 开发不再把“实时旁听、录像、知识图谱、原生 APP”拉进二期。 ### M1. 场景与 Rubric 地基(第 1-2 周) 目标:让“场景管理”和“评分标准版本”从代码 seed 变成可运营数据。 后端: - `backend/script/sql/aihr_practice_mysql8.sql`:补二期表或新增同目录二期 DDL。 - `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrPracticeDto.java`:补 scenario/rubric/assignment DTO。 - 新增 `AihrPracticeScenarioService` 或扩展 `AihrPracticeSeedService`:优先读表,失败回退 seed。 - `AihrPracticeController`:新增场景列表、详情、保存、启停、Rubric 查询接口。 - `scripts/reset-dev-db.sh`:导入新 DDL 和 12 条生活顾问 seed。 管理端: - `frontend/src/api/aihr/practice.ts`:补场景/Rubric API。 - `frontend/src/views/train/practice.vue`:先加轻量场景选择和 Rubric 预览,不做复杂 CRUD。 移动端: - `mobile/src/App.vue`:“开始训练”根据岗位/今日安排传 `scenarioId`,没有数据时回退当前 seed。 验收: - 管理端能选择不同生活顾问场景并开始对练。 - API 可返回场景绑定的 SOP、Rubric、persona。 - 模型失败或表为空时,原 MVP 对练仍可跑。 - 场景 CRUD 接口挂 `hr_operator` 角色权限(BACKLOG B1“出题”职责),普通员工端只读。 - 员工进入训练时能按登录身份取到岗位(`position`),场景列表按岗位过滤——这是 M4 派发与分发规则的身份前置。 ### M2. 训练前与训练中增强(第 3-4 周) 目标:把体验从“回合制答题”推进到“有准备、有情绪、有求助”的语音对手戏。 功能: - 训练前预习卡:从场景 SOP 生成“要点 / 红线 / 可说话术”。 - 每轮 emotion 由 LLM 输出并落入 turn/session,不再只用 seed 锚点。 - 求助按钮:训练中弹出该场景 SOP 提示,记录一次求助事件。 - 主动打断:COACH_CHECK 命中红线时中断本轮,提示纠正后重来。 - 方言/多语气:先支持 `voice_profile.speed/emotion/dialect`,不做语音克隆。 文件落点: - `AihrPracticeLlmService.java`:扩展 turn 输出 JSON,包含 `emotion/trustDelta/redFlag/coachHint`。 - `AihrPracticeSeedService.java`:seed fallback 也返回同样字段。 - `AihrSpeechDto.java` / `AihrSpeechService.java`:扩展 TTS voice 参数,保留旧字符串兼容。 - `frontend/src/views/train/practice.vue`:加预习卡、情绪条、求助按钮、红线提示。 - `mobile/src/App.vue`:复用训练前卡和求助逻辑,语音失败仍退文本。 验收: - 员工开始训练前能看到该场景预习卡。 - 至少 3 条场景能看到情绪随话术变化。 - 求助按钮命中 SOP 并显示引用。 - 红线话术触发纠偏,但不在训练中做逐句评分。 ### M3. 录音回放与复盘标注(第 5 周) 目标:训练完成后能复盘,但不做实时旁听。 功能: - 训练中员工音频和 TTS 音频按需存 MinIO,记录 `oss_id`。 - 主管复盘详情展示音频回放。 - finish 后对整场 dialogue 做一次性逐句标注,输出“问题句 / 推荐改写 / 命中或漏掉的 SOP 点”。 - 标杆对话先用导师改写生成“更优示例”,不等案例库自然积累。 文件落点: - `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java`:保存 session 时写 audio/annotation 信息。 - 新增 `AihrPracticeReviewService.java`:生成和查询逐句标注。 - `AihrMobileController.java`:复盘详情返回 audio 和 annotations。 - `mobile/src/App.vue`:主管复盘详情增加回放和逐句标注区。 验收: - 完成一场训练后,主管端能打开回放。 - 逐句标注只在 finish 后生成一次,刷新不重复算分。 - 没有录音权限时仍保存文本 transcript。 ### M4. 画像、校准与主管派发(第 6-7 周) 目标:把训练结果变成员工成长与主管管理动作。 功能: - 员工画像扩展为四项:训练时长、贡献度、测评分、AI 等级(BACKLOG B5;贡献度二期用人工计分入口记 `incentive_point`,不做自动案例沉淀)。 - 员工端画像以雷达图 + 趋势呈现单场四维分聚合(BRD 4.5 可视化口径,数据留跨期 `competency_assessment` 的入口)。 - 主管端预警:连续低分、超期未训、分数下滑。 - 批量训练任务派发:主管按岗位/短板派发专项。 - 定向再练(#13):低分维度自动生成 `source='retry'` 的待训任务,员工“今日安排”可见——错题本语义的最小实现。 - 人工评分校准:HR/主管可修正 AI 评分,形成校准集。 - 训练数据脱敏:入库前处理姓名、手机号、房号等明显 PII。 文件落点: - `AihrMobileSeedService.java`:扩展 `profile()` 聚合。 - `AihrMobileDto.java`:补画像、预警、派发 DTO。 - `AihrMobileController.java`:新增/扩展主管预警、派发接口。 - `frontend/src/views/train/practice.vue` 或新增管理端页:提供人工校准入口。 - `mobile/src/App.vue`:员工画像和主管待办展示新增字段。 验收: - 员工端能看到四项画像,不做同侪排名。 - 主管端能看到待处理预警并派发训练。 - 低分场景完成后,员工待训列表出现对应的再练任务。 - 人工修正评分后,保留原 AI 分和修正分。 - 入库文本中明显手机号/房号被脱敏。 ### M5. 试点收口(第 8 周) 目标:二期可进入 1-2 个住宅项目小范围试点。 验收清单: - 生活顾问 12 条场景可用。 - 员工从“今日安排”进入训练,完成后画像和主管端同步。 - 主管能复盘、听录音、看逐句标注、派发专项。 - AI 与人工评分分档一致率用不少于 20 条样本评估,目标 ≥70%。 - 住宅类 SOP 问答人工评审可用率目标 ≥80%。 - 语音单轮响应目标 ≤5 秒;超过时有文本降级。 - 试点数据可导出:训练次数、完训率、平均分、预警数、主管复盘率。 ## 5. 二期 API 建议 | 能力 | 接口 | |---|---| | 场景列表 | `GET /api/train/practice/scenarios?position=&scenarioType=` | | 场景详情 | `GET /api/train/practice/scenarios/{id}` | | 保存场景 | `POST /api/train/practice/scenarios` | | Rubric 版本 | `GET /api/train/practice/rubrics?scenarioId=` | | 训练预习卡 | `GET /api/train/practice/scenarios/{id}/prep-card` | | 逐句标注 | `POST /api/train/practice/sessions/{sessionId}/annotations` | | 评分校准 | `POST /api/train/practice/sessions/{sessionId}/calibration` | | 主管预警 | `GET /api/aihr/mobile/practice/alerts` | | 派发训练 | `POST /api/aihr/mobile/practice/assignments` | | 员工待训 | `GET /api/aihr/mobile/practice/assignments` | 这些接口都应保留 seed fallback 或空数据兜底,但真实验收必须以数据库链路为准。 ## 6. 内容准备清单 二期能不能推进,最大风险不是代码,是场景内容。每个场景至少准备: | 字段 | 示例 | |---|---| | 岗位 | 生活顾问 | | 场景类型 | 投诉 / 催费 / 报修 / 突发求助 | | 业主人设 | 年龄、身份、说话风格、情绪、偏见 | | 开场白 | “你们物业到底管不管楼上噪音?” | | 显性诉求 | 投诉噪音 | | 隐性诉求 | 想确认物业是否愿意持续跟进 | | 雷点 | 被敷衍、先讲规定、推给业主自己协调 | | 爽点 | 先共情、给首次反馈时间、明确责任人 | | SOP 引用 | 对应知识库片段 ID | | Rubric | 合规、沟通、情绪、营销四维权重 | | 标杆话术 | 1 条优秀版本、1 条反例 | ## 7. 决策待确认 | 决策 | 推荐口径 | |---|---| | 二期时长 | 8 周,每两周一个可验收增量 | | 首个岗位 | 生活顾问,四保一服后置 | | 录音合规 | 二期只录音不录像;进入训练前给明确提示 | | 方言/TTS | 先扩 `voice_profile`,不做克隆;供应商稳定后再评估克隆 | | AI 排序 | 分发引擎 v1 用规则表,不上 AI 排序 | | 排名 | 先做自我对比和主管预警,不做同侪排名 | | 场景管理权限 | 场景/Rubric CRUD 归 `hr_operator` 与管理员;主管只派发不编场景 | | G6 成本上限 | 试点期设 LLM/ASR/TTS 月度调用金额上限与告警阈值(具体数额由 HR 负责人与供应商账单确认);超限降级为文本对练 + 关闭逐句标注 | ## 8. 主要风险 | 风险 | 控制 | |---|---| | 内容不足 | M0 先锁 12 条生活顾问场景,内容没到位不进 M2 | | 移动端过大 | M1 同步拆 `mobile/src/App.vue` 的训练/画像/主管面板,不继续堆单文件 | | 成本失控 | 逐句标注只在 finish 后一次性做;总结卡/视频按需触发 | | 评分争议 | 原 AI 分和人工修正分并存;AI 分不挂绩效 | | 隐私问题 | 只做录音,不做录像;文本脱敏;音频存储权限明确 | | 范围膨胀 | 实时旁听、原生 APP、知识图谱、纯视觉检索全部不进二期主线 | ## 9. 交付物 | 类型 | 交付 | |---|---| | 产品 | 员工端训练前卡、语音对手戏、求助、回放、画像;主管端复盘、预警、派发 | | 后端 | 场景/Rubric/Assignment/Annotation/Calibration 数据与 API | | 管理端 | 场景选择/轻管理、Rubric 预览、评分校准 | | 内容 | 12 条生活顾问场景、SOP 引用、Rubric、标杆话术 | | 验收 | 20 条评分校准样本、试点数据导出、演示脚本更新 | ## 10. 第一批实施任务 ### Task 1: 二期 DDL 与 seed **Files** - Modify: `backend/script/sql/aihr_practice_mysql8.sql` - Modify: `scripts/reset-dev-db.sh` - Verify: `./scripts/dev.sh --reset` **Steps** - [ ] 增加 `aihr_practice_scenario`、`aihr_practice_rubric`、`aihr_practice_rubric_dimension`。 - [ ] 写入 12 条生活顾问场景 seed。 - [ ] reset 后确认场景表和 rubric 表有数据。 ### Task 2: 场景读取替换 seed **Files** - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrPracticeDto.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java` **Steps** - [ ] `start` 优先按 `scenarioId` 读数据库场景。 - [ ] 数据库无场景时回退现有 seed。 - [ ] `turn/finish` 保持当前契约不破坏前端。 ### Task 3: 训练前卡和求助 **Files** - Modify: `frontend/src/api/aihr/practice.ts` - Modify: `frontend/src/views/train/practice.vue` - Modify: `mobile/src/App.vue` - Reuse: `POST /api/knowledge/search` **Steps** - [ ] 开始训练前展示场景预习卡。 - [ ] 训练中加“求助”入口,用场景 category/SOP 引用查知识库。 - [ ] 求助失败显示明确错误,不兜假答案。 ### Task 4: 动态情绪和红线纠偏 **Files** - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeLlmService.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrPracticeDto.java` - Modify: `frontend/src/views/train/practice.vue` - Modify: `mobile/src/App.vue` **Steps** - [ ] LLM turn 输出增加 `emotion/trust/redFlag/coachHint`。 - [ ] 前端展示情绪条和红线纠偏。 - [ ] 解析失败时回退现有 coachHint,不阻断训练。 ### Task 5: 回放与逐句标注 **Files** - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSpeechService.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrMobileController.java` - Modify: `mobile/src/App.vue` **Steps** - [ ] 对练音频写 `sys_oss`/MinIO 并关联 session。 - [ ] 主管复盘详情显示音频回放。 - [ ] finish 后生成逐句标注,刷新不重复生成。 ### Task 6: 画像与主管派发 **Files** - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrMobileSeedService.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/vo/AihrMobileDto.java` - Modify: `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrMobileController.java` - Modify: `mobile/src/App.vue` **Steps** - [ ] 画像补训练时长、贡献度、测评分、AI 等级。 - [ ] 主管端补预警列表。 - [ ] 主管可派发专项训练,员工端今日安排可见。 ## 11. 二期完成定义 二期完成不是“所有缺口清零”,而是满足以下条件: - 生活顾问岗位训练从 seed 演示变成数据库驱动。 - 员工能完成“预习 → 语音/文本训练 → 求助 → 评分 → 复盘”的闭环。 - 主管能完成“看风险 → 听回放 → 看标注 → 派专项”的闭环。 - 画像能支撑“下一步练什么”的规则分发。 - 试点所需的合规、成本、人工校准底线已经留好。