diff --git a/docs/README.md b/docs/README.md index d21d678e..31ed3019 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,6 +25,7 @@ | [个人AI助理阶段二开发推进计划.md](个人AI助理阶段二开发推进计划.md) | 个人 AI 助理阶段二按 P0/P1 拆分的逐任务实施、测试、提交和试点闸门 | | [prototypes/personal-assistant-work-helper-voice-first-v2.png](prototypes/personal-assistant-work-helper-voice-first-v2.png) | 个人助理并入「问 · 数字师傅」后的语音优先会话、自动内部路由与确认记忆卡实现基准 | | [prototypes/work-report-voice-conversation-v1.png](prototypes/work-report-voice-conversation-v1.png) | 工作上报从传统表单升级为微信式语音/照片/视频采集、AI 整理追问和确认审核的高保真实现基准 | +| [WORK_REPORT_IMPLEMENTATION_AGENT_PROMPT.md](WORK_REPORT_IMPLEMENTATION_AGENT_PROMPT.md) | 可直接交给独立开发 Agent 的工作上报实现 Prompt,包含文件边界、API、交互修订、测试和视觉验收口径 | | [AI陪练二期开发推进计划.md](AI陪练二期开发推进计划.md) | 总纲阶段一执行文档:AI 陪练从 MVP 演示闭环推进到管家(生活顾问)岗位试点可用;区分工程就绪与正式业务试点证据 | | [员工端版本功能对比与功能对齐清单-20260717.md](员工端版本功能对比与功能对齐清单-20260717.md) | 旧版/历史需求/当前实现/生产验收的版本对比,以及 2026-07-17 客户反馈逐项处理结果 | | [BRD_IMPLEMENTATION_AUDIT.md](BRD_IMPLEMENTATION_AUDIT.md) | 当前生产基线、三端输入/BRD 匹配、客户反馈完成分层和正式试点剩余硬门槛;旧发布流水从当前真相源移除 | diff --git a/docs/WORK_REPORT_IMPLEMENTATION_AGENT_PROMPT.md b/docs/WORK_REPORT_IMPLEMENTATION_AGENT_PROMPT.md new file mode 100644 index 00000000..bd4fd28c --- /dev/null +++ b/docs/WORK_REPORT_IMPLEMENTATION_AGENT_PROMPT.md @@ -0,0 +1,130 @@ +# 工作上报语音会话化开发 Agent Prompt + +将下面整段 Prompt 交给负责“工作上报”的开发 Agent。该任务与个人助理开发并行时,工作上报 Agent 只负责本文列出的文件,不修改 `mobile-uni/src/pages/user/sop/index.vue` 或个人助理后端包。 + +--- + +你正在 `/Users/yuanjiantsui/dev/11-project/wygj` 开发银城员工端 APP 的“工作上报”。请直接完成实现、测试和视觉验证,不要只输出方案。 + +## 必读事实源 + +1. `AGENTS.md` +2. `docs/20260708/数字师傅学练问报整合方案.md` §1.3.4 +3. `docs/物业AI人力资源系统业务需求文档BRD.md` §4.6 +4. `docs/物业AI人力资源系统开发规格TechSpec.md` §5.3.1–5.3.2 +5. 高保真基准:`docs/prototypes/work-report-voice-conversation-v1.png` + +设计图只约束结构和视觉方向。若图中存在“文字已经显示但仍写转文字”“承诺自动隐藏房号”“类型看似已审核”“继续补充入口重复”等问题,以 TechSpec §5.3.2 为准。 + +## 目标 + +把当前 `mobile-uni/src/pages/user/report/index.vue` 的传统表单主路径改成适合物业一线员工的微信式会话: + +`语音/文字/照片/视频 → AI 整理 → 必要时追问 → 可编辑确认卡 → 用户确认上报 → 原审核链 → 会话内状态` + +保留现有 `aihr_work_report`、附件上传、我的上报和主管审核,不创建第二套正式记录或草稿表。 + +## 文件所有权 + +主要允许修改: + +- `mobile-uni/src/pages/user/report/index.vue` +- `mobile-uni/src/services/work-report.ts` +- `mobile-uni/tests/work-report.test.mjs`(新建或扩展现有契约测试) +- `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/report/*` +- 对应的 `backend/ruoyi-modules/ruoyi-aihr/src/test/**/report/*` + +优先直接复用,不要复制或重写: + +- `mobile-uni/src/components/chat/ChatComposer.vue` +- `mobile-uni/src/services/speech.ts` +- 现有 OSS、登录态、模型配置和 JSON 结构化输出能力 + +不要修改: + +- `mobile-uni/src/pages/user/sop/index.vue` +- `org.dromara.aihr.personal` 或个人助理相关 SQL/文档 +- 企业知识检索与短会话实现 + +多人共享工作区,不要回滚或覆盖其他 Agent 的改动。 + +## 后端要求 + +1. 保留现有接口: + - `POST /api/aihr/work-report/attachment` + - `POST /api/aihr/work-report/reports` + - `GET /api/aihr/work-report/reports/mine` + - `GET /api/aihr/work-report/reports` + - `POST /api/aihr/work-report/reports/{id}/review` +2. 新增登录态无状态整理接口: + +```text +POST /api/aihr/work-report/organize +req: { transcript, currentDraft?, attachmentOssId?, attachmentName? } +resp: { suggestedType, title, content, missingQuestions[], privacyWarnings[], confidence } +``` + +3. `organize` 只返回草稿,绝不能写 `aihr_work_report`、创建审核记录或自动入知识库。 +4. 复用现有 chat 模型运行时,要求结构化 JSON;模型未配置、超时或 JSON 解析失败时,不编造事实,返回基于原始转写的可编辑草稿和明确降级提示。 +5. `suggestedType` 只能是 `CASE / VIDEO / SOP / KNOWLEDGE`。正式提交继续由现有 `create` 做白名单、标题/正文长度和 `VIDEO` 附件校验。 +6. `privacyWarnings` 只提示检测到的姓名、手机号、房号等风险,不得宣称已经脱敏。没有真实服务端脱敏就不要返回“提交后会自动隐藏”。 +7. 所有接口继续从登录态解析租户、用户和权限,不接受客户端提交人身份;附件不返回公开 OSS URL。 +8. 审核通过仍只更新 `APPROVED`,不自动写案例库/知识库、不自动计分。 + +## 移动端要求 + +1. 页面标题“工作上报”,右上角“我的上报”。首屏不出现四类选择网格、标题输入框或大段说明表单。 +2. 复用 `ChatComposer`,默认“按住说话”,键盘为次级切换,支持图片/视频/音频附件。 +3. 用户语音经 ASR 后显示“语音转文字”气泡;整理接口根据当前草稿和补充内容生成下一版草稿。 +4. `missingQuestions` 非空时只展示最必要的 1–2 个追问,不生成可提交状态。 +5. 短追问直接显示文字并提供播放按钮;长回答才使用“语音条 + 转文字/收起文字”。文字已经可见时不得继续显示“转文字”。 +6. 确认卡展示:建议类型、标题、场景/经过、处理、结果、附件、隐私提示。建议类型必须可修改,正式提交使用员工最后确认值。 +7. 卡片只保留“修改 / 确认上报”。继续补充统一使用底部语音/文字输入,可显示弱提示“还可以继续说话补充”。 +8. 隐私提示必须真实:未实现服务端脱敏时写“检测到具体房号,请修改后再提交”,确认卡展示的就是即将提交的最终文本。 +9. 点击“确认上报”后才调用 `POST /reports`;成功在会话中显示 `PENDING / 待审核` 状态卡,并能从“我的上报”读取同一记录。 +10. 模型失败、ASR 失败、上传失败、重复点击和未登录都要有明确可恢复状态,不使用假数据。 + +## 最小测试 + +后端至少覆盖: + +- 整理接口不写数据库。 +- 非法类型被拒绝或归一化为允许值。 +- 模型失败不编造内容。 +- 未登录 401、跨租户不可见、普通员工不能审核。 +- 正式提交幂等防重复点击(若现有接口尚无幂等,增加最小请求幂等键并测试)。 + +移动端至少覆盖: + +- 页面默认语音模式且不再呈现传统表单主路径。 +- 文字追问可见时不存在“转文字”按钮。 +- “建议类型”可修改,提交使用修改后的类型。 +- 未实现脱敏时不存在“提交后自动隐藏”承诺。 +- 只有一个继续补充入口,确认前不调用正式提交接口。 + +运行: + +```bash +npm --prefix mobile-uni run test:unit +npm --prefix mobile-uni run typecheck +npm --prefix mobile-uni run build:h5 +mvn -f backend/pom.xml -pl ruoyi-modules/ruoyi-aihr -am test +``` + +## 视觉与交互验证 + +启动真实 H5,在 390×844 视口完成并截图: + +1. 初始语音输入。 +2. 带照片/视频的用户消息。 +3. AI 追问。 +4. 完整确认卡。 +5. 修改建议类型。 +6. 确认后待审核状态。 +7. “我的上报”可见同一记录。 + +检查固定输入栏不遮挡确认按钮,无横向滚动、文字截断、重复入口和虚假脱敏文案。截图不是功能验证的替代,必须实际点击受影响交互。 + +## 完成口径 + +分别报告:implemented、locally verified、visually verified、deployed、production-verified。没有真实生产账号、真实附件和线上审核链验证时,不得写 production-verified。提交时只暂存你负责的文件,使用 Conventional Commit,并给出提交哈希、测试结果、截图路径和未完成项。