feat(aihr): complete uni-app role workflows
This commit is contained in:
@@ -0,0 +1,231 @@
|
||||
# uni-app 用户侧前端重建计划
|
||||
|
||||
> 日期: 2026-07-08
|
||||
> 结论: 新建并行工程 `mobile-uni/`, 按真实页面栈重建用户侧。旧 `mobile/` 保留为当前演示版本, 不在原 4000 行单页上继续堆功能。
|
||||
|
||||
## 1. 重建判断
|
||||
|
||||
现有 H5 的主要问题不是单个按钮或样式,而是信息架构不成立: 三端、多个功能和临时面板被揉在一个 `App.vue` 里,靠锚点、状态开关和手写 history 模拟页面。它能撑住 MVP 演示,但不适合继续承载员工端 APP/H5/小程序。
|
||||
|
||||
本轮重建目标:
|
||||
|
||||
- 用 uni-app Vue3 先做 H5,后续保留 APP 和小程序转换空间。
|
||||
- 用户、主管、候选人按角色拆页面,不是同一长页面内切锚点。
|
||||
- API 优先接真实后端,不新增前端 mock 数据;后端已有 seed fallback 只作为服务端降级链保留。
|
||||
- 每个页面只解决一类任务,让用户得到明确反馈,减少心智负担。
|
||||
|
||||
## 2. 工程结构
|
||||
|
||||
并行目录:
|
||||
|
||||
```text
|
||||
mobile-uni/
|
||||
src/
|
||||
pages/
|
||||
auth/login/
|
||||
user/today/
|
||||
user/sop/
|
||||
user/practice/
|
||||
user/profile/
|
||||
supervisor/index/
|
||||
candidate/index/
|
||||
services/
|
||||
api.ts
|
||||
auth.ts
|
||||
home.ts
|
||||
knowledge.ts
|
||||
types/
|
||||
api.ts
|
||||
styles/
|
||||
base.css
|
||||
pages.json
|
||||
manifest.json
|
||||
```
|
||||
|
||||
关键约束:
|
||||
|
||||
- `App.vue` 只放应用级生命周期和全局样式,不承载业务页面。
|
||||
- 页面跳转使用 uni-app 页面栈和 tabBar,不手写锚点切换。
|
||||
- 认证令牌沿用当前 H5 的 `aihr_mobile_access_token` 和 `aihr_mobile_client_id`。
|
||||
- 开发代理沿用 `/dev-api -> http://127.0.0.1:8080`。
|
||||
|
||||
## 3. 三端页面计划
|
||||
|
||||
### 用户端
|
||||
|
||||
第一优先级。首页按“数字师傅”心智组织:
|
||||
|
||||
- `pages/user/today`: 今日安排、首要训练、待办、常用入口。
|
||||
- `pages/user/sop`: 问师傅/SOP 检索、答案卡、引用、打勾打叉、总结卡。
|
||||
- `pages/user/practice`: 场景练习、每日三题、训练前预习和 SOP 求助,已接 `/api/train/practice/start|turn|finish`。
|
||||
- `pages/user/profile`: 训练历史、能力画像、个人信息。
|
||||
|
||||
### 主管端
|
||||
|
||||
不做员工端同款 tab。主管目标是看人、复盘、派活:
|
||||
|
||||
- 团队概览: 完训率、低分项、预警。
|
||||
- 待复盘: 对练记录、逐句标注、标记已复盘。
|
||||
- 指派训练: 按岗位和短板派发专项。
|
||||
- 团队画像: 个人趋势和短板热力图。
|
||||
|
||||
### 候选人端
|
||||
|
||||
候选人是低频线性漏斗,不做复杂 tab:
|
||||
|
||||
- 面试任务。
|
||||
- 补充资料。
|
||||
- 岗前预习。
|
||||
- 进度通知。
|
||||
|
||||
## 4. 开发范围
|
||||
|
||||
第一批已从“用户侧最小集合”扩展到三端主链路闭环。当前已完成:
|
||||
|
||||
1. `mobile-uni/` 工程初始化,可 H5 构建。
|
||||
2. 手机号验证码登录,接真实 `/resource/sms/code` 和 `/auth/mobile/sms-login`。
|
||||
3. 员工今日页,接真实 `/api/aihr/mobile/home/user`。
|
||||
4. 问师傅页,接真实 `/api/knowledge/search`。
|
||||
5. 答案反馈,接真实 `/api/knowledge/answer-feedback`。
|
||||
6. 总结卡,接真实 `/api/knowledge/summary-card`。
|
||||
7. 员工对练、每日三题、个人画像和案例素材。
|
||||
8. 主管团队概览、复盘、派专项和员工回读。
|
||||
9. 候选人面试、资料上传、HR 审核状态回读和岗前预习。
|
||||
|
||||
仍不做:
|
||||
|
||||
- 不迁移管理端。
|
||||
- 不把旧 `mobile/src/App.vue` 直接拆搬到新工程。
|
||||
- 不新增前端 mock 数据掩盖后端接口问题。
|
||||
|
||||
## 5. 验收口径
|
||||
|
||||
第一批完成标准:
|
||||
|
||||
- `npm --prefix mobile-uni run build:h5` 通过。
|
||||
- 本地后端启动后,能用 dev 固定验证码登录。
|
||||
- 今日页能展示后端返回的用户首页数据;接口失败时明确报错,不白屏。
|
||||
- 问师傅页能检索正式资料,展示答案、要点、引用和 caution。
|
||||
- 打勾/打叉提交后页面锁定反馈状态,失败时保留原状态。
|
||||
- 总结卡显式点击才生成,失败可重试。
|
||||
|
||||
## 6. 当前进展
|
||||
|
||||
- 第一批用户侧主链路已落地到 `mobile-uni/`: 登录、今日页、问师傅、答案反馈、总结卡、对练页、个人页。
|
||||
- 本机开发入口已切到 portless: `https://wygj-mobile-uni.localhost/h5/`。
|
||||
- README 和本地运行手册已对齐新用户侧工程: `mobile-uni/` 作为当前施工/测试入口,旧 `mobile/` 仅保留为 MVP 演示兜底;线上 H5 发布命令改为同步 `mobile-uni/dist/build/h5/`。
|
||||
- 演示验收和 API 对接文档已切到 `mobile-uni` 路由;`scripts/demo-check.sh` 的移动端预检默认检查 `https://wygj-mobile-uni.localhost/h5/` 与新工程 marker,不再用旧 `mobile/src/App.vue` 证明当前用户侧。
|
||||
- 快速启动口径已补齐: `./scripts/dev.sh` 明确只启动后端、管理端和旧移动端兜底,当前用户侧由 `portless` 启动;脚本输出同步提示 `wygj-mobile-uni.localhost`。
|
||||
- 主管端已接入最小复盘闭环: 团队概览、待复盘列表、复盘详情、标记已复盘。
|
||||
- 候选人端已接入最小闭环: 候选首页、结构化面试、最近面试记录、补充资料列表、文件上传、审核状态展示。
|
||||
- 主管到员工的训练闭环已接入: 主管指派专项、员工今日任务、每日三题提交与反馈。
|
||||
- 三端登录返回已修正: 从主管/候选人/员工子页进入登录后返回原任务页,已有登录态进入登录页时自动回跳。
|
||||
- 登录页已补方法级重复请求保护: 发验证码和登录除按钮禁用外,函数入口也会挡住重复触发。
|
||||
- H5 默认入口已改为用户今日页: `/h5/#/` 直接进入今日,登录页只在认证动作需要时出现。
|
||||
- H5 旧入口已补兼容重定向: `/h5/user`、`/h5/candidate`、`/h5/supervisor` 及 employee/admin/user 子路径会跳到对应 uni hash 页面,避免旧验收链接都落到员工首页。
|
||||
- H5 案例素材旧入口已补兼容重定向: `/h5/user/cases` 会跳到 `/pages/user/cases/index`,避免新增案例页直链落回默认首页。
|
||||
- 未实现入口已接通建设中整页: 今日页未迁移入口不再只 toast,会进入明确反馈页。
|
||||
- 三端页头基础样式已修正: `page-title/page-subtitle` 统一块级显示,避免 uni `text` 默认内联导致标题和副标题粘连。
|
||||
- H5 导航标题已统一 custom: 不再同时显示 uni 原生导航标题和页面内页头,避免“主管/主管”“候选人/候选人”这类重复标题。
|
||||
- 主管团队画像已补最小版: 团队预警接入 `/api/aihr/mobile/practice/alerts`,低分预警可带入专项派发。
|
||||
- 候选人面试记录已按当前候选人隔离: 启动面试传当前手机号/候选人名,最近面试按 `candidateId` 查询,不再共用内置李娜记录。
|
||||
- 候选人端已补进度通知和岗前预习: 进度由面试记录与资料审核状态计算,岗前预习复用正式 `/api/knowledge/search`。
|
||||
- 候选人端已移除“填参考”开发辅助按钮: 正式候选人流程只允许提交本人真实回答,避免样例答案污染面试数据。
|
||||
- 候选人端顶部主任务卡已改为真实状态派生: 按面试记录和资料审核状态显示待面试/待补资料/审核中/已通过,不再固定显示首页 seed 的 `0/1`。
|
||||
- 候选人面试重启状态已收敛: 重新生成题目前清空旧题和旧会话,提交评分增加会话状态保护,避免启动失败后残留不可编辑旧题。
|
||||
- 员工端“我”页已接成长证据包: 复用 `/api/aihr/mobile/profile/promotion-evidence`,展示等级、测评分、训练分钟、贡献度和证据条目。
|
||||
- 员工端“我”页已展示成长路径: 复用 `/api/aihr/mobile/profile` 的 `growthPath`,展示初/中/高级进度与达成依据,不自动给晋升结论。
|
||||
- 主管端复盘已接人工贡献分: 复用 `ReviewAdviceRequest.incentivePoint`,由主管手填后进入员工成长证据包,不自动给晋升结论。
|
||||
- 主管端已补团队画像: 复用真实待复盘记录和训练指派数据聚合个人风险、待复盘、待训练和最近得分,可一键带入专项指派。
|
||||
- 主管端从团队画像派专项时已保留员工姓名和外部 ID: 指派记录不再把已选员工统一写成“手机用户xxxx”。
|
||||
- 主管端复盘已支持顺手派下一次训练: 复用 `ReviewAdviceRequest.nextScenarioId/nextReason`,标记已复盘时可同步生成专项训练。
|
||||
- 主管端团队预警的聚合动作已改为“去画像”: 预警本身不含员工标识,点击后滚动定位团队画像,具体派发仍从画像员工行进入,避免一键误派给默认手机号。
|
||||
- 主管端指派专项已收敛操作面板: 默认不再把主管本人手机号当指派对象,必须选择员工或手动输入;历史记录只展示最近专项,不混入每日三题流水。
|
||||
- 主管端团队画像待训练口径已收敛: 只统计主管指派专项,不再把员工每日三题误算进主管待训练。
|
||||
- 主管端概览低分口径已收敛: 顶部低分预警直接跟随后端 `low_score` 预警数量,不再用当前画像截断列表推导高风险人数。
|
||||
- 主管端复盘详情已补回放承载: 对话片段存在 `audioUrl` 时展示原生音频控件;当前本地样本无音频 URL,浏览器已验证详情/标注/派发区域无回归。
|
||||
- 主管端写操作已补方法级重复提交保护: 指派专项和标记复盘除按钮禁用外,方法入口也会挡住重复调用。
|
||||
- 员工端每日三题已修正参考答案泄露: 新任务只存题干,旧数据返回时清洗 `reason/feedback`,未完成题只提示“提交后显示反馈与参考答案”,完成后才单独展示参考答案。
|
||||
- 员工端每日三题排序已改为按题目生成顺序展示: 后端 assignments 查询对 `source=daily` 按 ID 升序返回,不再把第 3 题排在最前。
|
||||
- 员工端专项训练已补完成回写: 主管指派返回真实专项 ID,员工从专项入口完成对练后对应 `aihr_practice_assignment` 会置为已完成,不再长期卡在“待训练”。
|
||||
- 员工端成长证据贡献度已收紧: 无训练记录且无主管人工加分时贡献度为 0,不再给空用户默认 20 分。
|
||||
- 员工端训练前预习卡已接入: 新 uni-app 对练页复用 `/api/train/practice/scenarios/{id}/prep-card`,开始前展示要点、红线和可说话术。
|
||||
- 员工端训练前预习卡与页头已收敛展示: 隐藏内部 promptVersion,训练卡标题跟随当前专项场景,页头不再固定写“投诉接待”。
|
||||
- 员工端训练中已接 SOP 求助: 新 uni-app 对练页复用 `/api/knowledge/search`,展示正式检索答案和引用,失败明确报错不兜假答案。
|
||||
- 员工端对练建议已接调节按钮: 老师傅建议生成后可按“再严肃/再温柔/更细致/更专业”调用 `turn` 的 `regenerate/style`,只替换建议不重复计分。
|
||||
- 员工端训练中已展示情绪/信任/红线纠偏: 新 uni-app 对练页直接渲染 `turn` 返回的 `emotion/trust/redFlag`,让员工看到话术对业主状态的影响。
|
||||
- 员工端红线话术已改为同轮重说: `redFlag=true` 时不推进下一轮、不结束评分,提示员工按老师傅建议重说当前轮;纠正提交会替换本轮旧话术,与后端覆盖语义一致。
|
||||
- 员工练习页已收敛重复触发: 每日三题提交中会禁用其他提交按钮,对练非空闲状态会禁用专项开始,避免重复请求覆盖当前训练会话。
|
||||
- 员工端训练闭环已用真实浏览器跑通: 登录员工开始练习、提交回应、结束评分后写入训练记录,个人页成长摘要/证据包/最近练过同步更新;每日三题提交后原地显示得分、反馈和参考答案。
|
||||
- 员工练习页写操作已补方法级 guard: 开始练习、SOP求助、建议调节、提交回应和结束评分除按钮状态外,函数入口也会挡住重复触发。
|
||||
- 员工今日页“我的地图”已改为优先渲染 `/api/aihr/mobile/home/user` 返回的工具项;SOP复习入口会把复习标题带入问师傅页,不再因标题关键词不匹配落到建设中。
|
||||
- 员工今日页已移除前端硬编码工具 fallback: 工具地图只渲染后端返回项,接口无工具时显示空态,不再用“问/练/学/报”假数据兜底。
|
||||
- 员工今日页师傅气泡已移除固定姓名 fallback: 未登录显示“同事”,登录后按手机号尾号提示,不再把 seed 姓名暴露给真实用户。
|
||||
- 员工今日页“查看全部”和小贴士箭头已接通动作: 分别进入练习页和带问题进入问师傅,不再保留看起来可点但无反馈的入口。
|
||||
- 员工今日页未登录视图已收敛: 公开 home 的 `primary/review` 不再渲染成私人“今日安排”,改为登录提示;工具区未登录时显示为“常用入口”。
|
||||
- 员工今日页问答入口文案已收敛: 当前 uni-app 首页只负责进入问师傅页,主按钮改为“问老师傅”,不再用“长按说话”暗示已实现录音交互。
|
||||
- 员工今日页训练文案已收敛: 首页主任务从“3分钟语音练习”改为“3分钟情景练习”,不再承诺当前 uni-app 尚未提供的语音对练入口。
|
||||
- 问师傅页已补登录守卫: 未登录检索会保留当前问题并跳登录,不再直接暴露“认证失败”。
|
||||
- 移动端认证清理已收敛到共享 `clearAuth()`: 主动退出和 401/403 会同时清掉 token、clientId、手机号和登录回跳,避免旧手机号残留。
|
||||
- 员工“我”页已补过期登录态反馈: 401/403 清理后会同步刷新当前页面为“未登录/去登录”,不再继续显示旧手机号和退出按钮。
|
||||
- 员工“我”页未登录视图已收敛: 最近练过面板只在登录后展示,未登录不再出现“暂无训练记录”私人空态。
|
||||
- 主管端已补过期登录态反馈: 加载、指派、打开复盘和标记复盘遇到 401/403 后会收起团队面板并提示重新登录。
|
||||
- 主管端过期登录态已清理表单草稿: 指派对象、复盘建议、贡献分和复盘后专项随私有数据一起重置,避免换主管登录后残留上一轮操作。
|
||||
- 候选人端、案例素材页、问师傅页已同步过期登录态反馈: 资料/面试/预习/案例/检索接口 401/403 后清空私有数据并提示重新登录。
|
||||
- 移动端上传和 XHR 响应已复用共享认证错误处理: 候选人资料、案例音频和普通请求遇到非 JSON 的 401/403 也会同步清登录态,不再绕过过期处理。
|
||||
- 成功态草稿已收敛: 案例素材入库后清空已选音频,主管专项指派成功后清空指派对象和原因,避免用户误点重复提交。
|
||||
- 问师傅页已补未登录入口面板: 未登录或登录过期时直接显示“需要登录/去登录”,不再只留一条提示文案。
|
||||
- 问师傅页已收敛重复检索: 检索中快捷问题会禁用,`search()` 和总结卡生成都有 loading 守卫,避免并发请求互相覆盖结果。
|
||||
- 问师傅页待问问题已停止未登录自动跳转: 从首页带问题进入时先展示问师傅页和登录面板,用户点查询/去登录后再保留问题回登录,减少突然跳页。
|
||||
- 问师傅页待问问题登录返回已补自动续查: 未登录时不提前清掉暂存问题,登录成功回到问师傅后再清理并自动检索。
|
||||
- 员工练习页已补未登录和过期态反馈: 未登录不再显示“暂无今日任务”假空态,401/403 后清空当前对练状态并回登录。
|
||||
- 员工练习页过期登录态已清理训练草稿: 对话、草稿、SOP求助答案、情绪/信任/红线状态和专项选择会一起重置,避免旧训练上下文残留。
|
||||
- 候选人端未登录视图已收敛: 主任务卡改为登录提示,最近面试和补充资料私有空态只在登录后展示,不再把公开 home seed 当真实任务。
|
||||
- 主管端和候选人端未登录页头已隐藏无意义刷新按钮: 未登录只保留登录入口,避免点击后无业务反馈。
|
||||
- 候选人岗前预习文案已收敛: 未登录按钮显示“登录查看”,登录后显示“生成预习”,空态说明从正式知识库生成要点,不再用“加载”暗示不明确动作。
|
||||
- 主管端和候选人端页头已停止直接渲染公开 home 的 seed 问候语,避免固定演示姓名出现在真实用户入口。
|
||||
- 主管端真实复盘/指派数据已去掉公开 home 依赖: 页面不再因未使用的首页 seed 请求失败而阻断团队画像、待复盘和专项列表。
|
||||
- 员工端已接案例素材页: `案例学习/提交素材` 入口进入 `/pages/user/cases/index`,复用 `/api/knowledge/case/upload|organize|curate|records` 完成语音转写、结构化整理、入库和最近案例展示。
|
||||
- 案例素材页已用真实接口和浏览器回读跑通: 临时语音经 ASR 返回 `real-asr`,整理返回 `real-llm`,入库后案例页“最近案例”显示已入库记录。
|
||||
- 案例素材页未登录刷新已改为跳登录: 最近案例不再出现点击无反馈的刷新按钮,空态提示登录后查看。
|
||||
- 案例素材页已补方法级重复触发保护: 处理流程中不能替换音频,最近案例加载中不会重复刷新。
|
||||
- 案例入库提示已从“预渲染样片”改为真实案例库口径,避免员工端继续暴露旧演示文案。
|
||||
- 员工训练/画像/证据包已移除前端 `mobile-user` 兜底身份: 个人数据必须来自登录手机号,缺登录信息时明确提示登录,不再读写共享假身份。
|
||||
- 候选人端认证边界已收紧: APP 候选人资料、面试启动和面试记录以后端登录手机号为准,前端 `candidateId/candidateName` 只作非 APP 场景兼容参数;HR 资料审核接口保留管理端角色口径。
|
||||
- 候选人资料上传-审核-回读闭环已用真实 multipart 走通: APP 候选人上传后写 `sys_oss/aihr_candidate_material`,管理端 HR 审核通过后,候选人端资料列表回读为 `已通过`;本地 dev 验证记录保留用于回归追踪。
|
||||
- 候选人资料进度已改为按最新资料行判定: 重新上传并通过后,历史驳回记录不再覆盖当前“资料已通过/等待通知”状态。
|
||||
- 候选人端已移除前端 `mobile-candidate` 兜底身份: 缺登录手机号时明确提示登录,不再读写共享候选人身份。
|
||||
- 移动端登录态判断已收紧为 token/clientId/手机号三者齐全: 旧缓存缺手机号时不再显示已登录,避免训练、画像和候选人资料读到空身份。
|
||||
- 候选人端写操作已补方法级重复触发保护: 资料上传、岗前预习检索和面试提交除按钮禁用外,函数入口也会挡住重复调用。
|
||||
- 候选人端主任务动作已按进度分流: 待补资料/资料驳回时主按钮走上传资料,不再把“重新提交资料”误导到重新面试。
|
||||
- 候选人端未登录主动作已改为可点击跳登录: 开始面试、岗前预习、上传资料不再因 disabled 造成无反馈。
|
||||
- 候选人端主链路已从 home seed 解耦: 公开首页接口异常时仍展示面试主动作,登录后的面试记录和资料列表继续走真实接口加载,不把非关键 home 错误暴露给用户。
|
||||
- 候选人端审核中主动作已收敛: 资料待审核/已通过时主按钮只刷新进度,不再提示“重新面试”造成阶段误导;待补资料/资料驳回仍走上传。
|
||||
- 主管端派专项已补场景自动匹配: 从团队画像选择员工时按投诉/报修/噪音/电梯/催缴等关键词选对应专项,不再把非催费低分默认派成催费沟通。
|
||||
- 主管端最近专项回读已修正: 后端专项列表改为非 daily 优先,避免每日三题占满前 10 条导致手工指派成功后页面仍显示 0 条。
|
||||
- 主管端团队画像派专项已用真实浏览器跑通: 从画像低分员工预填对象和场景后提交,最近专项立即回读新指派记录;低分预警“去画像”锚点已落到团队画像面板。
|
||||
- 候选人端页头称呼已收敛: 已登录副标题改为手机号尾号,不再和页面标题拼出“候选人候选人0001”。
|
||||
- 候选人端未登录主任务卡已收起: 未登录只保留登录面板,不再同时出现两处“去登录”入口。
|
||||
- 主管端低分预警已落到可操作对象: 待复盘列表优先返回低分记录,团队概览用全量预警数展示,避免“有低分预警但画像看不到低分员工”。
|
||||
- 主管端关键动作已补可见落点: 团队画像“派专项”会带到已预填的指派面板,待复盘记录会带到复盘详情;复盘后同时派专项时成功提示明确为“已复盘并派专项”。
|
||||
- 员工今日页未登录状态已停止加载公开 home: 未登录只显示登录提示和问师傅入口,不再渲染公开工具地图或空工具区。
|
||||
- 员工练习页未登录状态已收起训练卡: 未登录只保留登录提示,不再展示“今日小训/开始练习”业务卡。
|
||||
- 案例素材页未登录状态已收起最近案例面板: 未登录只保留登录提示,不再重复显示“登录查看”按钮和私人案例空态。
|
||||
- 问师傅页登出态已清理上次答案: `onShow` 发现未登录会清空答案、总结卡和反馈锁定态,避免已登录检索结果残留在未登录页面。
|
||||
- 问师傅页引用依据已兼容真实后端字段: `/api/knowledge/search` 返回的 `snippets.title/text` 会在服务层归一为 `docTitle/content`,移动端不再显示空白引用;长 ASR/文档片段只展示摘要,避免视频转写铺满页面。
|
||||
- 问师傅总结卡已补全展示字段: 页面现在渲染 `objections` 的“异议回应”,不再丢掉模型返回的常见异议和回应话术;真实浏览器已验证“业主投诉噪音怎么安抚”总结卡可见异议区。
|
||||
- 候选人端面试提交已收紧为全部题目必答: 真实浏览器验证只填 1/3 题时提示“请填写全部 3 题回答”,不生成评分记录。
|
||||
- 候选人端面试主链路已用真实 API 跑通: dev 手机号登录后 `/api/recruit/interview/start` 返回 `source=real-llm` 题目,3 题答完后 `/finish` 生成评分,`/records` 可回读最新面试记录。
|
||||
- 候选人端资料上传链路已用真实 multipart 跑通: dev 手机号登录后上传资料写入 `sys_oss/aihr_candidate_material`,候选人资料列表立即回读同一记录,状态为 `待审核`。
|
||||
- 候选人资料 HR 审核/候选人回读已用真实 API 复跑: 管理端 token 调 `/api/aihr/hr/candidate/materials/{id}/review` 审核通过后,候选人重新登录调用 `/api/aihr/mobile/candidate/materials` 回读到 `已通过`。
|
||||
- 员工端练习结束评分已补边界: 未提交回应前不能结束评分,红线纠偏时需先重说;真实浏览器验证提交一轮后可结束评分并写入主管待复盘。
|
||||
- 员工端每日三题提交/回读已用真实 API 跑通: 新手机号首次加载生成 3 条 daily 任务,提交一题后状态变 `已完成`,回读到用户答案、反馈和参考答案;未提交前参考答案为空。
|
||||
- 主管复盘-派专项-员工回读闭环已用真实 API 跑通: 员工完成一场对练生成 `待复盘`,主管读取复盘详情可见对话和标注,标记已复盘并带 `nextScenarioId` 后该记录不再出现在待复盘列表,员工专项列表立即回读复盘后手工专项。
|
||||
- PC 成长激励和组织权限页已收口真实数据边界: 派专项必须输入真实员工手机号或 extPartyId,不再写入 `mobile-user`;无项目范围接口时只显示空态,不再展示假项目样例。
|
||||
|
||||
## 7. 风险
|
||||
|
||||
- uni-app npm tag 不是普通语义化版本,依赖必须固定同一 `vue3` release train。
|
||||
- H5 路由和将来小程序路径不完全一致,页面命名要早期克制。
|
||||
- 旧 H5 在 Alpha 前仍承担演示兜底,新工程未完成替换前不能下线旧入口。
|
||||
- 如果后端某些接口仍要求管理端 token,需要后端补移动端认证口径,不能在新前端绕过认证。
|
||||
@@ -0,0 +1,72 @@
|
||||
# 发布会演示候选题单
|
||||
|
||||
> 生成时间:2026-07-08
|
||||
> 来源口径:基于已入库正式资料生成,不使用本地 smoke 题作为验收依据。
|
||||
> 状态说明:本文件是开发方候选题单,最终题单需业务方确认后锁定。
|
||||
|
||||
## 生成依据
|
||||
|
||||
- 正式资料目录:`/Users/yuanjiantsui/workspace/项目-物业AI/补充资料`
|
||||
- 已入库知识库:`aihr_knowledge_attach` 共 106 个附件,`aihr_knowledge_fragment` 共 450 个片段。
|
||||
- 当前向量状态:450/450 片段已使用 `BAAI/bge-m3` 向量化,Qdrant 维度匹配。
|
||||
- 已处理视频:`生活顾问的一天.mp4` 已转写并可检索。
|
||||
- 暂不作为主依据:其余 27 个 MP4 仍为 `pending-transcribe`,转写前不纳入现场演示题主池。
|
||||
- 复跑命令:`node scripts/verify-demo-questions.mjs --prefix=Q`;业务测试扩展题可用 `--prefix=E` 验证。
|
||||
|
||||
## 现场实操优先题
|
||||
|
||||
以下 12 题适合发布会现场“问”模块演示,已于本地接口验证 12/12 可检索、可生成直给答案。
|
||||
|
||||
| 编号 | 场景 | 候选问题 | 主要来源 | 验证状态 |
|
||||
|---|---|---|---|---|
|
||||
| Q01 | 生活顾问一天 | 生活顾问的一天有哪些关键动作,早晚分别要做什么? | `生活顾问的一天.mp4`、`陈明- 银城物业新员工培训25.2.pptx` | 已验证 |
|
||||
| Q02 | 投诉接待 | 接到业主投诉保洁不满意,生活顾问第一步应该怎么处理? | `生活顾问的一天.mp4`、`投诉处理 SOP v1.0` | 已验证 |
|
||||
| Q03 | 漏水拒缴 | 业主家楼上漏水还想拒交物业费,生活顾问应该怎么答? | `楼上漏水,能拒缴物业费吗?.pptx` | 已验证 |
|
||||
| Q04 | 楼道堆物 | 楼道堆物影响通行和消防,生活顾问应该怎么处理并留痕? | `楼道杂物添“堵”,物业公司公告后清理被起诉.pptx`、`放在楼道里的东西丢了,找物业赔偿,法院支持吗?.pptx` | 已验证 |
|
||||
| Q05 | 违规装修 | 发现业主违规装修,生活顾问怎么劝阻、上报和闭环? | `客户违规装修.pptx` | 已验证 |
|
||||
| Q06 | 电梯舆情 | 电梯维保问题在业主群引发舆论,生活顾问应该先做什么? | `电梯维保引发业主群舆论.pptx` | 已验证 |
|
||||
| Q07 | 地面摔伤 | 地砖或路面破损导致业主摔伤,生活顾问现场处理步骤是什么? | `小区红线内骑车摔倒.pptx`、`物业未及时扫雪导致业主摔伤.pptx` | 已验证 |
|
||||
| Q08 | 消防通道 | 消防通道被车辆或杂物占用,生活顾问应该怎么处理? | `消防通道堵塞.pptx`、`楼道杂物添“堵”,物业公司公告后清理被起诉.pptx` | 已验证 |
|
||||
| Q09 | 报修跟进 | 业主报修后反复催问进度,生活顾问应该怎么跟进? | `报修跟进 SOP v1.0`、`客户违规装修.pptx` | 已验证 |
|
||||
| Q10 | 催缴沟通 | 催缴物业费时业主情绪抵触,生活顾问应该怎么开场沟通? | `催缴沟通 SOP v1.0`、`楼上漏水,能拒缴物业费吗?.pptx` | 已验证 |
|
||||
| Q11 | 群内曝光 | 业主在微信群曝光他人不当行为,生活顾问应该如何引导? | `微信群内曝光业主不当行为.pptx` | 已验证 |
|
||||
| Q12 | 高空坠物 | 高空抛物或外立面部件坠落砸车,生活顾问要做哪些动作? | `高空抛坠物损害责任纠纷.pptx` | 已验证 |
|
||||
|
||||
## 业务测试扩展题
|
||||
|
||||
以下题目适合 07-10 到 07-12 业务方实测使用。建议业务方选出高频真实问题后,再进入正式演示锁题。
|
||||
|
||||
| 编号 | 场景 | 候选问题 | 主要来源 | 建议用途 |
|
||||
|---|---|---|---|---|
|
||||
| E01 | 公共收益 | 小区公共收益能不能直接用于公共设施维修,生活顾问怎么解释? | `小区内公共收益使用.pptx` | 问答准确性 |
|
||||
| E02 | 收费调整 | 物业公司能否自行调整物业收费标准,业主质疑时怎么答? | `物业公司未经法定程序随意调整物业收费标准.pptx` | 问答准确性 |
|
||||
| E03 | 停水群诉 | 停水造成业主群诉时,生活顾问先做哪些动作? | `停水造成业主群诉.pptx` | 投诉场景 |
|
||||
| E04 | 返水财损 | 管道堵塞或厨房污水返流造成室内财产损失,生活顾问怎么处理? | `管道堵塞造成室内返水.pptx`、`一楼厨房污水返流财产受损事件.pptx` | 投诉场景 |
|
||||
| E05 | 车库财损 | 车库被淹或风管脱落砸坏车辆,生活顾问如何响应和留痕? | `车库被淹车辆受损.pptx`、`车库风管脱落砸坏车辆.pptx` | 风险处置 |
|
||||
| E06 | 道闸事故 | 道闸损坏造成伤人伤车,现场应该如何处理? | `道闸损坏伤人伤车.pptx` | 风险处置 |
|
||||
| E07 | 楼道灯损坏 | 楼道灯损坏导致业主摔伤,项目应承担什么处置动作? | `楼道灯损坏导致他人摔伤.pptx` | 风险处置 |
|
||||
| E08 | 雪天摔伤 | 雪天小区内业主摔倒骨折,生活顾问怎么处理? | `雪天小区内业主摔倒骨折要求物业赔偿.pptx` | 风险处置 |
|
||||
| E09 | 流浪动物 | 流浪猫狗伤人或投喂引发纠纷,生活顾问怎么处理? | `流浪猫狗出没伤人.pptx`、`流浪猫伤人,投喂者是否承担责任.pptx` | 风险处置 |
|
||||
| E10 | 电动车火灾 | 电动车引发火灾导致他人财产损失,生活顾问怎么应对? | `电动车引发火灾导致他人财产损失.pptx` | 消防风险 |
|
||||
| E11 | 烟花火灾 | 燃放烟花爆竹引发火灾,物业现场要做什么? | `燃放烟花爆竹引发火灾.pptx` | 消防风险 |
|
||||
| E12 | 充电桩纠纷 | 业主申请安装充电桩产生纠纷,生活顾问怎么解释和引导? | `充电桩安装的纠纷.pptx` | 客户沟通 |
|
||||
| E13 | 加装电梯 | 加装电梯受到相邻楼栋反对,生活顾问怎么说明边界? | `依法加装电梯的业主有权请求相邻楼栋业主停止妨害加装电梯的行为.pptx` | 客户沟通 |
|
||||
| E14 | 采购比价 | 一万元以内采购是否需要三方比价,定标表怎么用? | `中层级采购培训-25.6.pptx`、`附件一:三方比价定标表.docx` | 内控测试 |
|
||||
| E15 | 供应商推荐 | 新增供应商推荐需要填写哪些信息,谁来审批? | `附件二:供应商推荐表.xlsx`、`采供内容补充.pptx` | 内控测试 |
|
||||
| E16 | 服务采购 | 保洁、安保、绿化、特种设备服务合同履约中,项目要盯哪些验收点? | `日常保洁服务合同-202309版.docx`、`日常安保服务合同-202309版.docx`、`园林绿化养护合同-202309版.docx`、`特种设备养护合同-202309版.docx` | 内控测试 |
|
||||
| E17 | 印章管理 | 社区活动要盖章,生活顾问或项目应该怎么申请和留痕? | `南京银城物业服务有限公司印章管理办法.pdf` | 行政制度 |
|
||||
| E18 | 公车管理 | 项目借用公车或发生车辆事故,需要注意哪些审批和登记? | `南京银城物业服务有限公司公车管理制度.pdf` | 行政制度 |
|
||||
| E19 | 档案管理 | 项目档案归档、借阅、移交时有哪些要求? | `南京银城物业服务有限公司档案管理制度.pdf` | 行政制度 |
|
||||
| E20 | 信息安全 | 业主电话、客户资料能不能随便发到微信群,生活顾问应注意什么? | `信息安全管理培训.pptx` | 红线测试 |
|
||||
| E21 | 员工自助 | 员工自助系统里常见人事、考勤事项应该怎么操作? | `员工自助操作手册2025_10.pdf` | 员工支持 |
|
||||
| E22 | 职业安全 | 一线员工在现场作业中有哪些职业安全要求? | `员工职业安全(潘晓丽)25.3.13.pptx` | 员工支持 |
|
||||
| E23 | 租售业务 | 生活顾问遇到业主咨询租售业务时,如何记录和跟进? | `租售业务培训(住宅)250305(1).pptx` | 非物业务 |
|
||||
| E24 | 传统非物 | 社区发展中心传统非物业务有哪些,生活顾问怎么引导业主? | `社区发展中心传统非物业务知识2025.2.26.pptx` | 非物业务 |
|
||||
|
||||
## 锁题建议
|
||||
|
||||
1. 现场演示先从 Q01-Q12 中选 5 到 8 题,不要现场随机问未验证题。
|
||||
2. Q01、Q02、Q05、Q10 适合串成“生活顾问的一天”主线。
|
||||
3. Q03、Q04、Q06、Q08 适合展示直给式 SOP 问答能力。
|
||||
4. E14-E20 适合业务方测试内控制度和红线问题,不建议全部放进发布会现场演示。
|
||||
5. 待 27 个视频完成转写后,再补一版“视频微课专项题单”。
|
||||
+14
-12
@@ -12,11 +12,11 @@
|
||||
| 案例沉淀 `/knowledge/cases` | `POST /api/knowledge/case/upload`、`/organize`、`/curate` | `/upload` 改为 multipart 真实语音上传并走 ASR;`/organize` 用真实转写调 chat 模型整理案例,未配置模型时按真实 transcript 本地结构化;不再用固定样例转写冒充成功 |
|
||||
| SOP知识库 `/knowledge/sop` | `POST /api/knowledge/search`、`POST /api/knowledge/doc/upload` | 已接入 MySQL Fulltext + Qdrant 混合召回、OSS-first 文档上传、txt/md/PDF/Word/Excel/PPT 解析和 embedding 写入,失败回退 seed |
|
||||
| 资料处理 `/knowledge/processing` | `GET /api/knowledge/processing/overview`、`POST /api/knowledge/doc/upload-async`、`GET /api/knowledge/doc/upload-items`、`POST /api/knowledge/doc/upload-items/{id}/retry`、`POST /api/knowledge/doc/import-local-task`、`GET /api/knowledge/doc/import-tasks`、`POST /api/knowledge/doc/import-tasks/{id}/cancel` | 已接入解析任务状态聚合;**批量上传走异步队列**:接口只暂存+入队即秒回,后台 worker(并发 2)逐条解析/归类/向量化,页面按批次轮询进度、失败可单文件重试;服务端目录导入、进度轮询和任务取消保留,失败回退 seed |
|
||||
| 组织人员同步 | `POST /api/aihr/org/sync` | 从开放组织同步系统的 `/open/v1/sync/snapshot` 拉取 `company/department/employee` 快照,映射并刷新 `aihr_org_snapshot`;默认 `replaceExisting=true` 覆盖本租户快照,先用 `{"dryRun":true}` 预检;外部接口未配置时保留 SQL seed |
|
||||
| 组织人员同步 | `POST /api/aihr/org/sync` | 从开放组织同步系统的 `/api/open/v1/sync/snapshot` 拉取 `company/department/employee` 快照,分页大小参数按线上接口使用 `limit`,映射并刷新 `aihr_org_snapshot`;默认 `replaceExisting=true` 覆盖本租户快照,先用 `{"dryRun":true}` 预检;外部接口未配置时保留 SQL seed |
|
||||
| 移动端手机号登录 | `GET /resource/sms/code`、`POST /auth/mobile/sms-login` | 已复用 sms4j 阿里云配置 `config1` 和 RuoYi `sms` 授权策略;短信发送成功后才写 Redis 验证码;手机号不存在时自动注册 `app_user`;`aihr.sms.dev-fixed-code` 非空时不真发短信、验证码固定(dev 默认 `123456`,prod profile 代码级强制失效) |
|
||||
| 移动端三端首页 `/h5/user`、`/h5/candidate`、`/h5/supervisor` | `GET /api/aihr/mobile/home/{role}` | 已接入员工、候选人、主管首页公开只读 API;移动端本地 fallback 保演示 |
|
||||
| 用户侧三端首页 `mobile-uni` hash 路由;旧 `/h5/user`、`/h5/candidate`、`/h5/supervisor` 兼容重定向 | `GET /api/aihr/mobile/home/{role}` | 已接入员工、候选人、主管首页公开只读 API;移动端本地 fallback 保演示 |
|
||||
| 移动端员工训练闭环 | 复用 `POST /api/train/practice/start`、`/turn`、`/finish`;查询 `GET /api/aihr/mobile/practice/history`、`/practice/reviews`、`/practice/reviews/{id}`、`/profile`;标记 `POST /api/aihr/mobile/practice/reviews/{id}/reviewed` | 员工端登录后带 `Authorization` 与 `clientid` 调用;`mode=mobile` 完成后写入 `aihr_practice_session`,主管端首页完训率、待复盘列表、复盘详情、员工训练历史和能力画像同步变化;复盘标记可带 `incentivePoint` 写入 `incentive_point`,用于贡献度和试点 CSV |
|
||||
| 移动端候选人闭环 | 面试复用 `POST /api/recruit/interview/start`、`/answer`、`/finish`;资料 `POST /api/aihr/mobile/candidate/materials`、`GET /api/aihr/mobile/candidate/materials`;HR 审核 `GET /api/aihr/hr/candidate/materials`、`POST /api/aihr/hr/candidate/materials/{id}/review` | 候选人端登录后带 `Authorization` 与 `clientid` 调用;面试拉题/评分走真实模型优先;资料上传写 `sys_oss`/MinIO 和 `aihr_candidate_material`,HR 在 AI 面试页标记 `已通过/已驳回`,候选人端列表同步状态 |
|
||||
| 移动端候选人闭环 | 面试复用 `POST /api/recruit/interview/start`、`/answer`、`/finish`;资料 `POST /api/aihr/mobile/candidate/materials`、`GET /api/aihr/mobile/candidate/materials`;HR 审核 `GET /api/aihr/hr/candidate/materials`、`POST /api/aihr/hr/candidate/materials/{id}/review` | 候选人端登录后带 `Authorization` 与 `clientid` 调用;APP 候选人资料、面试启动和面试记录以后端登录手机号为准,前端 `candidateId/candidateName` 只作非 APP 场景兼容参数;面试拉题/评分走真实模型优先;资料上传写 `sys_oss`/MinIO 和 `aihr_candidate_material`,HR 在 AI 面试页标记 `已通过/已驳回`,候选人端列表同步状态 |
|
||||
|
||||
## 后端落点
|
||||
|
||||
@@ -43,9 +43,9 @@ ALIYUN_SMS_SIGN_NAME=物业AI助手
|
||||
|
||||
| 能力 | 后端接口 | 处理 |
|
||||
|---|---|---|
|
||||
| 候选资料上传 | `POST /api/aihr/mobile/candidate/materials` | `multipart/form-data` 字段 `file`,参数 `candidateId/candidateName/materialType`;需移动端登录返回的 `Authorization` 与 `clientid`;文件用 `ISysOssService` 写 `sys_oss`/MinIO,关系写 `aihr_candidate_material`,状态默认 `待审核`,单文件 20MB |
|
||||
| 候选资料列表 | `GET /api/aihr/mobile/candidate/materials?candidateId=` | 返回前 20 条 `{id, ossId, fileName, materialType, fileSize, status, time}`,供 `/h5/candidate` 的“已提交资料”展示 |
|
||||
| HR 资料审核 | `GET /api/aihr/hr/candidate/materials?status=`、`POST /api/aihr/hr/candidate/materials/{id}/review` | 管理端 `/recruit/interview` 展示前 50 条,可按状态筛选;审核请求体 `{status}`,只接受 `待审核/已通过/已驳回` |
|
||||
| 候选资料上传 | `POST /api/aihr/mobile/candidate/materials` | `multipart/form-data` 字段 `file`,参数 `candidateId/candidateName/materialType`;需移动端登录返回的 `Authorization` 与 `clientid`;APP 用户场景后端强制使用登录手机号和派生候选人名,不信任前端传入身份;文件用 `ISysOssService` 写 `sys_oss`/MinIO,关系写 `aihr_candidate_material`,状态默认 `待审核`,单文件 20MB |
|
||||
| 候选资料列表 | `GET /api/aihr/mobile/candidate/materials?candidateId=` | 返回前 20 条 `{id, ossId, fileName, materialType, fileSize, status, time}`,供 `/h5/candidate` 的“已提交资料”展示;APP 用户场景忽略传入 `candidateId`,只返回登录手机号对应资料 |
|
||||
| HR 资料审核 | `GET /api/aihr/hr/candidate/materials?status=`、`POST /api/aihr/hr/candidate/materials/{id}/review` | 管理端 `/recruit/interview` 展示前 50 条,可按状态筛选;审核请求体 `{status}`,只接受 `待审核/已通过/已驳回`;接口只允许管理端超级管理员或 `hr_operator` 角色访问 |
|
||||
|
||||
SOP 文档上传第三片已经落最小后端边界:
|
||||
|
||||
@@ -92,11 +92,13 @@ Qdrant 本地默认值可不配;需要覆盖时用 JVM property 或环境变
|
||||
|
||||
| 配置 | 默认值 | 用途 |
|
||||
|---|---|---|
|
||||
| `AIHR_ORG_SYNC_BASE_URL` / `-Daihr.org-sync.base-url` | 空 | 外部开放平台 `/open/v1` 前缀,例如 `https://hr.example.com/open/v1` |
|
||||
| `AIHR_ORG_SYNC_BASE_URL` / `-Daihr.org-sync.base-url` | 空 | 外部开放平台 `/api/open/v1` 前缀,例如 `https://wuye.meihe.cc/api/open/v1` |
|
||||
| `AIHR_ORG_SYNC_ACCESS_TOKEN` / `-Daihr.org-sync.access-token` | 空 | 已有 Bearer token;为空时尝试用 client credentials 换 token |
|
||||
| `AIHR_ORG_SYNC_CLIENT_ID` / `-Daihr.org-sync.client-id` | 空 | 开放平台应用 `client_id`,也用于签名头 `X-Client-Id` |
|
||||
| `AIHR_ORG_SYNC_CLIENT_SECRET` / `-Daihr.org-sync.client-secret` | 空 | `POST /auth/token` 换取访问令牌 |
|
||||
| `AIHR_ORG_SYNC_SIGNING_SECRET` / `-Daihr.org-sync.signing-secret` | 空 | 可选 HMAC-SHA256 签名密钥;配置后请求带 `X-Timestamp/X-Nonce/X-Signature` |
|
||||
| `AIHR_ORG_SYNC_SIGNING_SECRET` / `-Daihr.org-sync.signing-secret` | 空 | 可选 HMAC-SHA256 签名密钥;为空时使用 `AIHR_ORG_SYNC_CLIENT_SECRET`,业务请求带 `X-Client-Secret/X-Timestamp/X-Nonce/X-Signature`,签名 path 必须包含 `/api/open/v1` |
|
||||
|
||||
本地启动脚本会先加载根目录 `.env.local`,再加载 `backend/.env`。如果 `backend/.env` 沿用开放平台字段名 `client_id` / `client_secret`,脚本会映射为 `AIHR_ORG_SYNC_CLIENT_ID` / `AIHR_ORG_SYNC_CLIENT_SECRET`。
|
||||
|
||||
```bash
|
||||
TOKEN=<登录后 access_token>
|
||||
@@ -126,16 +128,16 @@ curl -fsS http://127.0.0.1:8080/api/aihr/org/sync \
|
||||
- 资料处理页面:`frontend/src/views/knowledge/processing.vue`
|
||||
- 模型配置 API 文件:`frontend/src/api/aihr/model.ts`
|
||||
- 模型配置页面:`frontend/src/views/system/model/index.vue`
|
||||
- 移动端独立工程:`mobile/src/App.vue`,路由 `/h5/user`、`/h5/candidate`、`/h5/supervisor`;员工端子路由为 `/h5/user/training`(训练列表)和 `/h5/user/practice`(对练页)。当前三端首页已按高保真原型实现,未登录先走手机号短信登录,登录后 API 优先请求 `/api/aihr/mobile/home/{role}`,不复用后台页面路由。语音输入不要新增移动端专用接口,浏览器录音和文件选择兜底都复用 `/api/ai/asr`。
|
||||
- 员工端训练:底部“练”进入 `/h5/user/training`,首屏展示场景模拟、开始练习和最近练过,每日三题后置;点“开始练习”切换到 `/h5/user/practice`,复用管理端三角色对练 API,完成两轮后展示评分和导师改写;记录写入 `aihr_practice_session`,员工端展示训练历史和能力画像,主管端展示待复盘列表,点进单条可看评分、话术、导师改写,并可标记“已复盘”。
|
||||
- 候选人端:`/h5/candidate` 的“开始面试/面试练习”复用 AI 面试 API;“补充资料”走候选资料上传接口,成功后展示 OSS ID、资料类型和审核状态。管理端 `/recruit/interview` 底部展示“候选资料审核”,支持通过/驳回。
|
||||
- 用户侧工程:`mobile-uni/`,路由为 `/h5/#/pages/user/today/index`、`/h5/#/pages/user/practice/index`、`/h5/#/pages/user/sop/index`、`/h5/#/pages/user/profile/index`、`/h5/#/pages/candidate/index/index`、`/h5/#/pages/supervisor/index/index`。未登录先走手机号短信登录,登录后 API 优先请求真实业务接口,不复用后台页面路由。语音输入不要新增移动端专用接口,浏览器录音和文件选择兜底都复用 `/api/ai/asr`。
|
||||
- 员工端训练:底部“练”进入 `/h5/#/pages/user/practice/index`,展示今日任务、每日三题、专项训练、训练前预习卡和训练对话;完成后记录写入 `aihr_practice_session`,员工端展示训练历史和能力画像,主管端展示待复盘列表,点进单条可看评分、话术、导师改写,并可标记“已复盘”。
|
||||
- 候选人端:`/h5/#/pages/candidate/index/index` 的“开始面试/面试练习”复用 AI 面试 API;“补充资料”走候选资料上传接口,成功后展示资料类型和审核状态。管理端 `/recruit/interview` 底部展示“候选资料审核”,支持通过/驳回。
|
||||
- 演示 fallback 只作为未配置模型或外部接口异常时的降级,不作为真实测试通过证据。
|
||||
|
||||
## 验收
|
||||
|
||||
```bash
|
||||
./scripts/demo-check.sh
|
||||
npm --prefix mobile run build
|
||||
npm --prefix mobile-uni run build:h5
|
||||
curl -fsS http://127.0.0.1:8080/api/aihr/mobile/home/user
|
||||
npm --prefix frontend run lint:eslint -- src/api/aihr/interview.ts src/views/recruit/interview.vue src/api/aihr/practice.ts src/views/train/practice.vue src/api/aihr/case.ts src/views/knowledge/cases.vue src/api/aihr/sop.ts src/views/knowledge/sop.vue
|
||||
mvn -f backend/pom.xml -pl ruoyi-admin -am -DskipTests package
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 一期 MVP 演示与验收清单
|
||||
|
||||
本文件是 MVP 现场演示入口:先跑预检,再按演示流逐条点击。当前证明一期 MVP 路径可讲、可点、可截图;移动端员工端、候选人端、主管端首页已拆到独立 `mobile/` 工程并按高保真原型实现,已接手机号短信登录,数据 API 优先请求 `GET /api/aihr/mobile/home/{role}` 并保留本地 fallback;员工端训练完成后写入 `aihr_practice_session`,用于训练历史、主管待复盘列表和能力画像;候选人端面试复用 AI 面试 API,补充资料上传写 `sys_oss` 和 `aihr_candidate_material`,HR 可在管理端审核通过/驳回;SOP 检索已可查本地 MySQL seed 片段,并支持 txt/md/PDF/Word/Excel/PPT 上传解析为本地 fragment,配置 vector 模型后会写入 embedding 并尽力同步 Qdrant,管理端 AI 面试和案例沉淀按真实模型/ASR 优先验收。
|
||||
本文件是 MVP 现场演示入口:先跑预检,再按演示流逐条点击。当前证明一期 MVP 路径可讲、可点、可截图;用户侧三端已在 `mobile-uni/` 按真实页面栈重建,portless 入口为 `https://wygj-mobile-uni.localhost/h5/`,已接手机号登录、问师傅、员工训练、案例素材、候选人面试/资料和主管复盘/派专项;员工端训练完成后写入 `aihr_practice_session`,用于训练历史、主管待复盘列表和能力画像;候选人端面试复用 AI 面试 API,补充资料上传写 `sys_oss` 和 `aihr_candidate_material`,HR 可在管理端审核通过/驳回;SOP 检索已可查本地 MySQL seed 片段,并支持 txt/md/PDF/Word/Excel/PPT 上传解析为本地 fragment,配置 vector 模型后会写入 embedding 并尽力同步 Qdrant,管理端 AI 面试和案例沉淀按真实模型/ASR 优先验收。
|
||||
|
||||
## 演示前预检
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
| 顺序 | 页面 | 点击路径 | 必须看到 |
|
||||
|---|---|---|---|
|
||||
| 1 | 首页 `/index` | 打开首页 | 只展示“首页 / AI面试 / 三角色对练 / 案例沉淀 / SOP知识库 / 资料处理 / 系统设置-模型配置” |
|
||||
| 2 | 移动端三端 `http://127.0.0.1:5174/h5/user`、`/h5/candidate`、`/h5/supervisor` | 打开后先手机号登录;已配置 `AIHR_SMS_LOGIN_TEMPLATE_ID` 时可真实收短信,新手机号会自动注册;员工端首页为「师傅区(头像+气泡+按住说话/打字问+快捷chips)→今日安排→我的地图(问/练/学/报四色块)→我的成长摘要」;点底部“练”进入 `/h5/user/training`,首屏必须先看到场景模拟、开始练习和最近练过,每日三题在下方;点“开始练习”必须切到 `/h5/user/practice` 对练页,完成两轮提交,再打开主管端;点快捷 chip 或「问」可文本/语音查 SOP,结果页点「生成总结卡·约10秒」弹出信息图卡(四步法/异议应对/开口话术/关键提醒+听一遍/开始跟读);候选人端点“开始面试/面试练习”和“补充资料”;管理端 `/recruit/interview` 审核候选资料 | 员工端显示评分、“训练完成,主管端待复盘已更新”、训练历史和能力画像;底部 tab 整页切换(员工端为 今日/练/问/我,切换回顶),滚动后师傅头像收缩为右下悬浮球;未实现入口进「建设中」整页(返回首页按钮),无死按钮;主管端完训人数、“待复盘对练”计数和待复盘列表增加;训练页语音输入在浏览器录音失败时应切到“选择语音”而不是死按钮;点进待复盘记录可看评分、话术、导师改写,并可标记已复盘;候选人端可拉题/答题/评分,资料上传后显示“已提交资料”、`OSS ...`、`待审核`;HR 审核后候选人端显示 `已通过/已驳回`;接口不可用时走本地 fallback |
|
||||
| 2 | uni-app 三端 `https://wygj-mobile-uni.localhost/h5/#/pages/user/today/index`、`/pages/candidate/index/index`、`/pages/supervisor/index/index` | 打开后先手机号登录;已配置 `AIHR_SMS_LOGIN_TEMPLATE_ID` 时可真实收短信,新手机号会自动注册;员工端今日页进入问师傅、练习、案例素材和个人页;练习页完成开始练习、提交回应、结束评分、每日三题提交;问师傅页可检索、反馈、生成总结卡;案例素材页可上传语音并回读入库记录;候选人端点“开始面试/面试练习”和“补充资料”;主管端查看团队画像、待复盘、标记已复盘并从画像派专项 | 员工端显示评分、“训练完成,主管端待复盘已更新”、训练历史和能力画像;底部 tab 整页切换(员工端为 今日/练/问/我);未实现入口进「建设中」整页(返回按钮),无死按钮;主管端待复盘列表增加,复盘详情可看评分、话术、导师改写,并可标记已复盘;从团队画像派专项后最近专项立即回读;候选人端可拉题/答题/评分,资料上传后显示审核状态;HR 审核后候选人端显示 `已通过/已驳回` |
|
||||
| 3 | AI面试 `/recruit/interview` | 生成题目 → 填满参考回答或输入真实回答 → 完成评分 | 配置 chat 模型时真实生成题目和评分;未配置时用本地 Rubric 估分,不返回固定候选人分数;应看到新增面试记录 |
|
||||
| 4 | 三角色对练 `/train/practice` | 开始对练 → 填入参考回复或输入真实回复 → 继续一轮 → 结束并评分 | 已完成闭环、导师改写、新增对练记录;数据库已启用 chat 模型时,客户回复与评分为真实 LLM 生成(回复不再是固定台词,分数随话术变化),未配置时使用本地剧本兜底 |
|
||||
| 5 | 案例沉淀 `/knowledge/cases` | 上传真实语音 → ASR 转写 → AI 整理 → 送审 → 入库 → 查看样片 | 已完成闭环,案例列表新增真实转写生成的记录;视频仍用样片兜底 |
|
||||
@@ -27,8 +27,8 @@
|
||||
| 顺序 | 页面 | 点击路径 | 必须看到 |
|
||||
|---|---|---|---|
|
||||
| 1 | 管理端 `/train/practice` | 切换生活顾问场景 → 查看 Rubric/预习卡 → 开始对练 | 场景来自数据库 12 条 seed;Rubric、SOP 引用、预习卡可见;模型不可用时仍回退内置剧本 |
|
||||
| 2 | 员工端 `/h5/user` | 今日安排 → 每日三题作答 → 开始训练 → 训练中点“求助” → 完成评分 | 每日三题即时反馈;求助命中 SOP 或明确报错;完成后画像、历史和主管端待复盘同步 |
|
||||
| 3 | 主管端 `/h5/supervisor` | 预警/待复盘 → 进入复盘详情 → 听回放/看逐句标注 → 写复盘建议 → 派发再练 | 能看到评分、音频、逐句标注、主管建议;员工端今日安排出现专项/再练任务 |
|
||||
| 2 | 员工端 `/h5/#/pages/user/practice/index` | 今日任务 → 每日三题作答 → 开始训练 → 训练中点“求助” → 完成评分 | 每日三题即时反馈;求助命中 SOP 或明确报错;完成后画像、历史和主管端待复盘同步 |
|
||||
| 3 | 主管端 `/h5/#/pages/supervisor/index/index` | 团队画像/待复盘 → 进入复盘详情 → 看逐句标注 → 写复盘建议 → 派发再练 | 能看到评分、音频、逐句标注、主管建议;从团队画像派专项后员工端出现专项/再练任务 |
|
||||
| 4 | 管理端 `/train/practice` | 选择训练记录 → 人工校准评分 → 导出试点 CSV | 导出包含训练次数、完训率、平均分、预警数、主管复盘率、AI/人工分档一致率、SOP 可用率 |
|
||||
| 5 | 模型成本闸门 | 设置 `AIHR_AI_RUNTIME_ENABLED=false` 后重启后端 → 调 `/api/aihr/model/chat` | 返回 `cost-guard-fallback`,chat/asr/tts 走现有文本兜底,不影响训练闭环 |
|
||||
|
||||
|
||||
+39
-10
@@ -4,12 +4,13 @@
|
||||
|
||||
- 后端:`backend`,来自 `dromara/RuoYi-Vue-Plus` 的 `5.X` 分支
|
||||
- 管理端前端:`frontend`,来自 `CrazyLionCat/plus-ui` 的 `5.X` 分支
|
||||
- 移动端前端:`mobile`,独立 Vue/Vite 工程
|
||||
- 用户侧前端:`mobile-uni`,uni-app Vue3 H5 工程;旧 `mobile` 仅保留为 MVP 演示兜底
|
||||
|
||||
## 本地端口
|
||||
|
||||
- 管理端前端:`http://127.0.0.1:5173/`
|
||||
- 移动端前端:`http://127.0.0.1:5174/h5/user`
|
||||
- 旧移动端前端:`http://127.0.0.1:5174/h5/user`
|
||||
- uni-app 用户侧:`https://wygj-mobile-uni.localhost/h5/`
|
||||
- 后端:`http://127.0.0.1:8080/`
|
||||
- MySQL:`127.0.0.1:13306`,数据库 `ry-vue`,账号 `root/root`
|
||||
- Redis:`127.0.0.1:16379`,密码 `ruoyi123`
|
||||
@@ -17,7 +18,28 @@
|
||||
- Qdrant REST:`http://127.0.0.1:6333`,默认 collection `aihr_knowledge`
|
||||
- 服务端资料导入根目录:`./.data/import`
|
||||
|
||||
Qdrant 默认本地无需配置;远端或自定义 collection 可用 `AIHR_QDRANT_URL`、`AIHR_QDRANT_COLLECTION`、`AIHR_QDRANT_API_KEY` 覆盖。服务端资料导入根目录可用 `AIHR_IMPORT_ROOT` 或 `-Daihr.import.root` 覆盖。组织人员同步可用 `AIHR_ORG_SYNC_BASE_URL` 指向外部开放平台 `/open/v1` 前缀,并配置 `AIHR_ORG_SYNC_ACCESS_TOKEN` 或 `AIHR_ORG_SYNC_CLIENT_ID`/`AIHR_ORG_SYNC_CLIENT_SECRET`;如外部要求 HMAC 签名,再配置 `AIHR_ORG_SYNC_SIGNING_SECRET`。移动端手机号登录的短信模板 ID、阿里云 AccessKey、Secret 和短信签名都通过环境变量注入;本地放根目录 `.env.local`,`scripts/dev-backend.sh` 会自动加载。
|
||||
## portless 本地入口
|
||||
|
||||
本机开发测试优先用 portless 访问稳定域名,避免继续记固定端口:
|
||||
|
||||
- uni-app 用户侧:`https://wygj-mobile-uni.localhost/h5/`
|
||||
- 后端 API:`https://wygj-api.localhost`
|
||||
|
||||
启动 uni-app 用户侧:
|
||||
|
||||
```bash
|
||||
portless
|
||||
```
|
||||
|
||||
portless 会按根目录 `portless.json` 执行 `mobile-uni` 的 `npm run dev`。旧 `./scripts/dev.sh` 仍会拉起 `mobile/` 作为演示兜底;新用户侧开发测试优先看 `wygj-mobile-uni.localhost`。
|
||||
|
||||
若后端已经由 `./scripts/dev-backend.sh` 启动在 `8080`,注册一次静态别名:
|
||||
|
||||
```bash
|
||||
portless alias wygj-api 8080
|
||||
```
|
||||
|
||||
Qdrant 默认本地无需配置;远端或自定义 collection 可用 `AIHR_QDRANT_URL`、`AIHR_QDRANT_COLLECTION`、`AIHR_QDRANT_API_KEY` 覆盖。服务端资料导入根目录可用 `AIHR_IMPORT_ROOT` 或 `-Daihr.import.root` 覆盖。组织人员同步可用 `AIHR_ORG_SYNC_BASE_URL` 指向外部开放平台 `/api/open/v1` 前缀,并配置 `AIHR_ORG_SYNC_ACCESS_TOKEN` 或 `AIHR_ORG_SYNC_CLIENT_ID`/`AIHR_ORG_SYNC_CLIENT_SECRET`;业务请求会用 client secret 生成 HMAC-SHA256 hex 签名。移动端手机号登录的短信模板 ID、阿里云 AccessKey、Secret 和短信签名都通过环境变量注入;本地放根目录 `.env.local`,`scripts/dev-backend.sh` 会自动加载。若开放平台凭证放在 `backend/.env`,启动脚本也会加载该文件,并把 `client_id`/`client_secret` 映射为组织同步实际读取的 `AIHR_ORG_SYNC_CLIENT_ID`/`AIHR_ORG_SYNC_CLIENT_SECRET`。
|
||||
|
||||
本地 `.env.local` 示例:
|
||||
|
||||
@@ -28,11 +50,14 @@ ALIYUN_SMS_ACCESS_KEY_SECRET=xxx
|
||||
ALIYUN_SMS_SIGN_NAME=物业AI助手
|
||||
# 演示兜底:非空则不真发短信,验证码固定为该值;dev 默认 123456,prod profile 代码级强制失效
|
||||
AIHR_SMS_DEV_FIXED_CODE=123456
|
||||
AIHR_ORG_SYNC_BASE_URL=https://hr.example.com/open/v1
|
||||
AIHR_ORG_SYNC_BASE_URL=https://wuye.meihe.cc/api/open/v1
|
||||
AIHR_ORG_SYNC_ACCESS_TOKEN=
|
||||
AIHR_ORG_SYNC_CLIENT_ID=
|
||||
AIHR_ORG_SYNC_CLIENT_SECRET=
|
||||
AIHR_ORG_SYNC_SIGNING_SECRET=
|
||||
# 若放在 backend/.env,也可沿用开放平台字段名:
|
||||
# client_id=dn_xxxxxx
|
||||
# client_secret=dns_xxxxxx
|
||||
# 试点成本闸门:超预算时改 false,chat/asr/tts 会走现有文本兜底
|
||||
AIHR_AI_RUNTIME_ENABLED=true
|
||||
AIHR_AI_CHAT_ENABLED=true
|
||||
@@ -47,8 +72,11 @@ AIHR_AI_SPEECH_ENABLED=true
|
||||
|
||||
```bash
|
||||
./scripts/dev.sh
|
||||
portless
|
||||
```
|
||||
|
||||
`./scripts/dev.sh` 启动后端、管理端和旧移动端兜底;`portless` 启动当前 `mobile-uni` 用户侧。
|
||||
|
||||
首次启动或需要重建本地 `ry-vue` MVP 数据库时执行:
|
||||
|
||||
```bash
|
||||
@@ -84,7 +112,7 @@ AIHR_AI_SPEECH_ENABLED=true
|
||||
- 启用 `aihr_model_config.category='vector'` 的模型配置后,上传会同步写入片段 embedding,并尽力 upsert 到 Qdrant;模型配置页可查看 Qdrant 维度、点数和片段向量数,并在维度不一致时重建索引;未配置或 Qdrant 不可用时只走 MySQL Fulltext/seed fallback,不影响检索。
|
||||
- 后端 `ruoyi-admin` 已完成 Maven 打包并启动在 `8080`
|
||||
- 前端依赖已安装,Vite 已启动在 `5173`
|
||||
- 移动端依赖已安装,Vite 已启动在 `5174`
|
||||
- 旧移动端兜底依赖已安装,Vite 可启动在 `5174`;当前用户侧由 portless 启动 `mobile-uni`,入口 `https://wygj-mobile-uni.localhost/h5/`
|
||||
- 移动端手机号登录页已接 `/resource/sms/code` 与 `/auth/mobile/sms-login`;未配置真实 `ALIYUN_SMS_ACCESS_KEY_ID`、`ALIYUN_SMS_ACCESS_KEY_SECRET`、`ALIYUN_SMS_SIGN_NAME`、`AIHR_SMS_LOGIN_TEMPLATE_ID` 时不会发送阿里云短信;手机号不存在时会自动注册为 `app_user`
|
||||
- 移动端员工端“开始训练”已复用 `/api/train/practice/start`、`/turn`、`/finish`;移动端请求需带登录返回的 `Authorization` 与 `clientid`;完成后主管端完训人数、“待复盘对练”计数、复盘列表、复盘详情、员工训练历史和能力画像会变化
|
||||
- 移动端候选人端“开始面试/面试练习”已复用 `/api/recruit/interview/start`、`/answer`、`/finish`;“补充资料”需带移动端 `Authorization` 与 `clientid`,上传后写 `sys_oss` 和 `aihr_candidate_material`,管理端 `/recruit/interview` 可审核为 `已通过/已驳回`
|
||||
@@ -109,10 +137,10 @@ curl -fsS http://127.0.0.1:8080/api/knowledge/doc/vector-index-status -H "Author
|
||||
线上 `peilian.njzhmj.top` 由 Caddy 服务,`/h5*` 映射到服务器 `/opt/wygj/www/h5`,并 fallback 到 `/h5/index.html`。只改移动端静态资源时无需重启后端。
|
||||
|
||||
```bash
|
||||
VITE_BASE=/h5/ npm --prefix mobile run build
|
||||
npm --prefix mobile-uni run build:h5
|
||||
ssh YCWY 'ts=$(date +%Y%m%d%H%M%S); mkdir -p /opt/wygj/backups; cp -a /opt/wygj/www/h5 /opt/wygj/backups/h5-$ts; echo /opt/wygj/backups/h5-$ts'
|
||||
rsync -az --delete mobile/dist/ YCWY:/opt/wygj/www/h5/
|
||||
curl -k -s https://peilian.njzhmj.top/h5/supervisor | sed -n '1,20p'
|
||||
rsync -az --delete mobile-uni/dist/build/h5/ YCWY:/opt/wygj/www/h5/
|
||||
curl -k -s https://peilian.njzhmj.top/h5/ | sed -n '1,20p'
|
||||
```
|
||||
|
||||
## MVP 页面验证
|
||||
@@ -138,8 +166,9 @@ curl -k -s https://peilian.njzhmj.top/h5/supervisor | sed -n '1,20p'
|
||||
- 案例沉淀:进入 `/knowledge/cases`,上传真实语音 → “AI 整理” → “送审” → “入库”,应看到“已完成闭环”和新增案例记录;上传必须先完成 ASR 转写。
|
||||
- SOP知识库:进入 `/knowledge/sop`,可上传 txt/md/PDF/Word/Excel/PPT 文档入库;点击“检索” → “生成训练题”,应看到“已完成闭环”、命中数据库 SOP 原文片段和训练题;数据库不可用时页面回退 seed。
|
||||
- 资料处理:进入 `/knowledge/processing`,应看到资料总量、解析任务表、处理链路、规则与风险;可用少量文件验证“批量导入/选择目录/服务端导入”。**批量导入走异步队列**:提交即返回,页面出现“本次批量上传”进度面板(排队/加工中/完成/失败 + 单条重试),后台 worker 并发 2 逐条解析入库;暂存目录默认 `./.data/staging`(`aihr.upload.staging` 覆盖)。服务端导入读取 `./.data/import` 下的相对目录,启动后台任务并在页面显示进度,运行中任务可点“取消”;目录导入的重试粒度是同目录重新导入,批量上传的重试粒度是单文件。
|
||||
- 移动端员工训练:进入 `http://127.0.0.1:5174/h5/user`,手机号登录(dev 验证码固定 `123456`)。员工端首页为「师傅区(mentor.png 头像+气泡+按住说话/打字问+快捷chips)→今日安排→我的地图四色块→我的成长摘要」(视觉基准 `feedback/2026070423/design/`),底部 tab(今日/练/问/我)整页切换,滚动后师傅头像收缩为右下悬浮球;未实现入口进「建设中」整页。点底部“练”进入 `http://127.0.0.1:5174/h5/user/training`,首屏应先看到场景模拟、开始练习和最近练过,每日三题在下方;点“开始练习”进入 `http://127.0.0.1:5174/h5/user/practice`,两次“填入建议回复 / 提交本轮”后应看到评分、导师改写、训练历史和能力画像;切到主管端后完训人数与“待复盘对练”计数增加,并展示待复盘列表;点进单条可看评分、话术、导师改写,并可标记已复盘。训练页有“语音输入”和“播报”按钮,需启用 asr/tts 模型后生效;iOS/WebView 若无法直接访问麦克风,会切到“选择语音”并用系统录音/音频文件继续走 ASR,否则降级文本。快捷 chip 或「问」打开查 SOP 面板:文本/语音提问 → 轻概要(回答+要点+注意)+依据折叠;点「生成总结卡·约10秒」弹出信息图卡(四步法/异议/话术/提醒+听一遍/开始跟读),需 chat 模型;语音需 asr 模型。
|
||||
- 移动端候选人:进入 `http://127.0.0.1:5174/h5/candidate`,手机号登录(dev 验证码固定 `123456`)→ “开始面试/面试练习”完成答题评分;“补充资料”选择 PDF/Word/图片后上传,应看到“已提交资料”、`OSS ...`、`待审核`。再进入管理端 `/recruit/interview` 底部“候选资料审核”点“通过/驳回”,候选人端刷新后应显示新状态。Codex 内置浏览器不支持本地文件选择时,用真实 HTTP multipart smoke 代替浏览器文件选择。
|
||||
- uni-app 员工端:进入 `https://wygj-mobile-uni.localhost/h5/#/pages/user/today/index`,手机号登录(dev 验证码固定 `123456`)。今日页进入问师傅、练习、案例素材和个人页;练习页应能完成开始练习、提交回应、结束评分、每日三题提交,个人页同步训练历史和成长证据包。
|
||||
- uni-app 主管端:进入 `https://wygj-mobile-uni.localhost/h5/#/pages/supervisor/index/index`,应看到团队概览、团队画像、团队预警、指派专项、待复盘和复盘详情;从团队画像派专项后,最近专项应立即回读新记录。
|
||||
- uni-app 候选人端:进入 `https://wygj-mobile-uni.localhost/h5/#/pages/candidate/index/index`,手机号登录(dev 验证码固定 `123456`)→ “开始面试/面试练习”完成答题评分;“补充资料”选择 PDF/Word/图片后上传,应看到资料状态。Codex 内置浏览器不支持本地文件选择时,用真实 HTTP multipart smoke 代替浏览器文件选择。
|
||||
- 真 LLM 激活:在 `/system/model` 给供应商填 api_host/api_key 并启用 `category=chat` 模型后,三角色对练的客户回复与评分即为真实 LLM 生成;再启用 `category=asr/tts`(如硅基流动 SenseVoice/CosyVoice2)语音路径生效。未配置时全链路自动回退 seed。
|
||||
|
||||
演示前可先跑最小预检:
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# PC 管理端功能差异 TODO
|
||||
|
||||
> 依据:2026-07-09 浏览器实测管理端页面 + `docs/物业AI人力资源系统业务需求文档BRD.md` + `docs/银城员工端APP分阶段实施总纲.md` + `docs/AI陪练二期开发推进计划.md`。
|
||||
> 口径:先支撑阶段一“陪练试点可用”,阶段二/三需求只登记,不抢跑。
|
||||
|
||||
| 优先级 | 差异项 | 当前状态 | 本次实现 | 验收口径 |
|
||||
|---|---|---|---|---|
|
||||
| P0 | 组织人员 / 岗位 / 项目权限运营页 | 组织同步 API 存在,侧栏未暴露运营视图 | 新增 `组织与权限` 页面,呈现组织人员快照、岗位映射、项目数据范围和同步预检入口 | PC 可查询人员快照,看到身份三轴、权限映射、同步结果边界 |
|
||||
| P0 | 主管复盘 + 人工校准 + 派发训练闭环 | 后端已有复盘、评分校准、派发接口;PC 只有散落入口 | 新增 `复盘校准` 页面,集中待复盘列表、详情、复盘建议、学分、下次训练派发 | 主管能从一页完成“看记录 -> 写建议 -> 派训练” |
|
||||
| P0 | 能力画像 / 等级证据包 / 激励规则 | 后端已有画像和证据包接口;PC 无独立页 | 新增 `成长激励` 页面,展示画像、等级路径、证据包、预警、任务与最小规则表 | HR 能看到初/中/高级证据和学分规则口径 |
|
||||
| P1 | 学模块课程 / 考试后台 | 文档要求阶段二建设;当前无页面 | 暂不实现,保留 TODO | 阶段二专项设计后再建课程、课件、考试、成绩表 |
|
||||
| P1 | 大喇叭文件分发 | 总纲阶段二;当前无页面 | 暂不实现,保留 TODO | 半年会后按身份三轴做摘要、已读未读、补推 |
|
||||
| P1 | 开放问题榜 | 阶段一只埋 `knowledge_gap`;当前无 UI | 暂不实现,保留 TODO | 阶段二消费 gap 池、上榜、最佳答案、沉淀入库 |
|
||||
| P1 | 品检翻转 | 阶段二;当前无页面 | 暂不实现,保留 TODO | 依赖图片分析模板和业务巡检流程 |
|
||||
| P2 | 北森 SSO / 考勤入口 | 阶段三;接口未知 | 暂不实现,保留 TODO | 阶段三拿到北森接口文档后做跳转/同步 |
|
||||
|
||||
## 本次交付边界
|
||||
|
||||
- 不新建数据库表。
|
||||
- 不改登录、密钥、模型配置、支付、部署脚本。
|
||||
- 优先复用已有 `/api/aihr/mobile/practice/*` 与 `/api/train/practice/*` 接口。
|
||||
- 规则配置中心先做运营口径展示;需要真实持久化时再补 `incentive_rule` 等表。
|
||||
@@ -13,6 +13,7 @@
|
||||
| [AI人力资源系统项目规划方案与AI接口说明.md](AI人力资源系统项目规划方案与AI接口说明.md) | 对外会议版口径、数字师傅定位、AI 接口和供应商规划 |
|
||||
| [银城员工端APP分阶段实施总纲.md](银城员工端APP分阶段实施总纲.md) | 2026-07-07 立项会后的三阶段总纲:陪练 → 大喇叭+知识学习平台(含学模块、开放问题榜) → 北森对接;身份三轴模型与防遗漏分发策略 |
|
||||
| [AI陪练二期开发推进计划.md](AI陪练二期开发推进计划.md) | 总纲阶段一执行文档:AI 陪练从 MVP 演示闭环推进到管家(生活顾问)岗位试点可用 |
|
||||
| [20260708/uni-app用户侧前端重建计划.md](20260708/uni-app用户侧前端重建计划.md) | 当前用户侧 `mobile-uni/` 重建计划、三端页面拆分、portless 入口、真实浏览器验证和验收进展 |
|
||||
| [20260708/数字师傅学练问报整合方案.md](20260708/数字师傅学练问报整合方案.md) | 2026-07-08 产品讨论定案:产品定义(学练问报+问题榜+学分晋升)与半年会发布会方案分层;客户"第三版"逐项处置对照 |
|
||||
| [基于AI的银城员工端APP项目立项与开发规划会议-2026年07月07日-来自【Get 笔记】.md](基于AI的银城员工端APP项目立项与开发规划会议-2026年07月07日-来自【Get%20笔记】.md) | 2026-07-07 立项会纪要原文(总纲的输入源,只作留档) |
|
||||
| [20260708/企业内部AI培训学习APP产品需求与发布会内容讨论(纪要)](20260708/) | 2026-07-08 产品讨论纪要原文及客户"第三版"docx(整合方案的输入源,只作留档) |
|
||||
|
||||
@@ -43,7 +43,7 @@ mobile/
|
||||
```
|
||||
|
||||
- 复用若依 `ruoyi-system` 的用户/角色/菜单/数据权限;自有后端 API 集中在 `ruoyi-aihr`,不要塞回上游 `ruoyi-demo`。
|
||||
- 管理端 `frontend/` 不承载 `/h5/*`;移动端通过 `5174` 独立启动,路由为 `/h5/user`、`/h5/candidate`、`/h5/supervisor`。
|
||||
- 管理端 `frontend/` 不承载 `/h5/*`;当前用户侧通过 `mobile-uni/` + portless 启动,入口 `https://wygj-mobile-uni.localhost/h5/`,三端路由为 `/h5/#/pages/user/today/index`、`/h5/#/pages/candidate/index/index`、`/h5/#/pages/supervisor/index/index`;旧 `/h5/user`、`/h5/candidate`、`/h5/supervisor` 仅做兼容重定向。
|
||||
- AI 能力先在 `ruoyi-aihr` 内提供统一接口(对话/评分/转写/生成),便于切换厂商与兜底;后续可按模块拆分。
|
||||
- 可借助已有的 "codex 若依组件生成 skill" 批量生成 CRUD 骨架。
|
||||
|
||||
@@ -173,9 +173,9 @@ mobile/
|
||||
| `/recruit/interview` | **AI 面试(英雄路径A:出题→作答→打分)** | P0跑通 |
|
||||
| `/recruit/candidates` | 候选人列表 | P1 |
|
||||
| `/train/practice` | **三角色对练(英雄路径核心)** | P0跑通 |
|
||||
| `/h5/user` | 员工端首页,手机号登录后可“开始训练”并同步主管待复盘计数 | P0跑通 |
|
||||
| `/h5/candidate` | 候选人端首页,手机号登录后可面试练习、查岗位 SOP/案例、上传补充资料 | P0跑通 |
|
||||
| `/h5/supervisor` | 主管端首页,查看团队、待复盘、案例/SOP 工具 | P0跑通 |
|
||||
| `/h5/#/pages/user/today/index` | 员工端首页,手机号登录后可“开始训练”并同步主管待复盘计数;旧 `/h5/user` 兼容重定向 | P0跑通 |
|
||||
| `/h5/#/pages/candidate/index/index` | 候选人端首页,手机号登录后可面试练习、查岗位 SOP/案例、上传补充资料;旧 `/h5/candidate` 兼容重定向 | P0跑通 |
|
||||
| `/h5/#/pages/supervisor/index/index` | 主管端首页,查看团队、待复盘、案例/SOP 工具;旧 `/h5/supervisor` 兼容重定向 | P0跑通 |
|
||||
| `/train/daily` | 每日一练 | P1 |
|
||||
| `/train/camp` | 专项训练营 | P1 |
|
||||
| `/train/mistakes` | 错题本 | P1 |
|
||||
|
||||
Reference in New Issue
Block a user