From cd31bbd0f7d0bef1f1f601fd5981e5e55f66fca7 Mon Sep 17 00:00:00 2001 From: let5sne Date: Wed, 5 Aug 2026 00:57:19 +0800 Subject: [PATCH] docs: add requirement checklists and research notes --- AI物业陪练系统功能需求清单_无来源依据版.md | 164 ++++++++++++++ docs/下一步计划-跟进意见对齐-20260727.md | 200 ++++++++++++++++++ ...业培训与陪练平台功能需求复核清单_v2.0.docx | Bin 0 -> 25580 bytes 生活顾问调研-1.md | 52 +++++ 4 files changed, 416 insertions(+) create mode 100644 AI物业陪练系统功能需求清单_无来源依据版.md create mode 100644 docs/下一步计划-跟进意见对齐-20260727.md create mode 100644 帮道_AI物业培训与陪练平台功能需求复核清单_v2.0.docx create mode 100644 生活顾问调研-1.md diff --git a/AI物业陪练系统功能需求清单_无来源依据版.md b/AI物业陪练系统功能需求清单_无来源依据版.md new file mode 100644 index 00000000..03d02e2c --- /dev/null +++ b/AI物业陪练系统功能需求清单_无来源依据版.md @@ -0,0 +1,164 @@ +# AI物业陪练系统功能需求清单 + +(会议纪要落地版 · 无来源依据列) + +| | | +|:------------:|------------------------| +| **文档名称** | AI陪练系统功能需求清单 | +| **编制依据** | 内部项目会议纪要 | +| **文档类型** | 需求规格说明书 | + +## 一、查:精准知识检索机制 + +### 1.1 内部知识库查询 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **CK-001** | 全文段落级检索 | 支持用户从公司内部知识库中检索内容,检索结果可精确到具体文件的某一段落,而非仅返回整篇文章 | **P0** | +| **CK-002** | 原文跳转定位 | 用户点击检索结果后,可直接跳转至原文对应的段落位置,确保信息准确性 | **P0** | +| **CK-003** | 原文高亮标注 | 在原文页面中,以高亮方式标注出检索命中的答案出处,类似腾讯文档的在线标注效果 | **P0** | +| **CK-004** | 视频内容精准定位 | 支持视频类培训材料的检索,检索结果可精确到"从第多少秒开始观看" | **P0** | +| **CK-005** | 文件完整性保障 | 查询结果直接展示原始文件段落,不经过AI抽离或改写,避免内容失真或误改 | **P0** | +| **CK-006** | 多格式文件索引 | 知识库支持对文档、视频等多种格式文件的索引与检索 | **P1** | + +### 1.2 外部公网查询 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **CK-007** | 基础公网搜索 | 支持基础性的公网信息搜索功能,满足一般性查询需求 | **P1** | +| **CK-008** | 公网搜索深度优化 | 待核心功能稳定后,对公网搜索进行深度加工优化(后续迭代) | **P2** | + +## 二、练:双向模拟训练体系 + +### 2.1 反向链——模拟客户(AI模拟业主) + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **LN-001** | AI模拟业主角色 | 由AI模拟业主行为,帮助新员工感受真实客户反应,用于训练生活管家应对各类客户场景 | **P0** | +| **LN-002** | 客户身份画像配置 | 系统支持为模拟客户配置详细的背景身份字段,字段数量不少于十几至二十个结构化字段 | **P0** | +| **LN-003** | 居住区域字段 | 客户身份画像中需包含居住区域信息(如南京某别墅区) | **P0** | +| **LN-004** | 家庭人口字段 | 客户身份画像中需包含家庭人口结构信息 | **P0** | +| **LN-005** | 身体状况字段 | 客户身份画像中需包含身体状况信息(如脚部不适、近期生病等) | **P0** | +| **LN-006** | 情绪状态字段 | 客户身份画像中需包含情绪状态信息 | **P0** | +| **LN-007** | 缴费意愿字段 | 客户身份画像中需包含缴费意愿倾向 | **P0** | +| **LN-008** | 投诉倾向字段 | 客户身份画像中需包含投诉倾向等心理特征 | **P0** | +| **LN-009** | 场景文字描述 | 除结构化字段外,支持以文字描述形成完整的身份画像 | **P0** | +| **LN-010** | 典型冲突场景训练 | 系统支持配置典型冲突场景(如拒缴物业费、邻里纠纷等),用于训练员工应对能力 | **P0** | +| **LN-011** | 场景复杂度配置 | 场景设定越细致越好,系统应支持高度细化的场景参数配置 | **P0** | + +### 2.2 正向链——数字师傅(优秀经验引导) + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **LN-012** | 正向训练库建设 | 建立"正向训练库",采集被表扬的生活顾问的优秀实践经验,作为AI引导模板 | **P0** | +| **LN-013** | 优秀案例入库 | 将优质案例纳入正向训练库,作为AI引导模板 | **P0** | +| **LN-014** | 应对步骤建议 | 数字师傅模型能针对不同情况提供应对步骤建议 | **P0** | +| **LN-015** | 话术策略指导 | 数字师傅模型能提供与特定类型客户沟通的话术策略 | **P0** | +| **LN-016** | 时间节奏把控指导 | 数字师傅模型能提供处理敏感事务(如费用催收、赔偿协商)的时间节奏把控建议 | **P0** | +| **LN-017** | 复杂矛盾协调指导 | 数字师傅模型能提供协调复杂矛盾(如邻居长期对立)的具体方法 | **P0** | +| **LN-018** | 经验资产沉淀 | 系统支持将优秀经验沉淀为公司独特优势,区别于通用搜索引擎结果 | **P0** | + +### 2.3 训练场景管理(后台) + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **LN-019** | 精细化场景配置后台 | 后台支持对训练场景进行精细化配置管理 | **P0** | +| **LN-020** | AI批量生成训练场景 | 未来可通过AI批量生成训练场景,提升训练覆盖率(后续迭代) | **P2** | + +## 三、问:智能问答与人工协同 + +### 3.1 智能问答 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **QA-001** | 实操问题提问 | 作为独立模块,允许新顾问提问各类实操问题 | **P0** | +| **QA-002** | 标准方案检索 | 问答系统从整理好的标准文字方案中检索答案 | **P0** | +| **QA-003** | 历史经验检索 | 问答系统从历史活动处理经验中检索答案 | **P0** | +| **QA-004** | 优质训练记录复用 | 问答系统从"练"环节中评分较高的训练记录(如80分以上)中检索答案 | **P0** | +| **QA-005** | 经验片段返回 | 系统检索后返回整理好的经验片段,而非完整文档 | **P0** | +| **QA-006** | 知识库自动沉淀 | 优质对练成果可自动沉淀入资料库,供后续问答调用 | **P0** | + +### 3.2 人工协同 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **QA-007** | 求助人工触发 | 若系统回答不满意,用户可触发"求助人工"机制 | **P0** | +| **QA-008** | 求助论坛推送 | 求助请求自动推送至"求助论坛"类平台,由真人介入解答 | **P0** | + +## 四、大学堂:计划性培训安排 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **DX-001** | 大学堂功能保留 | 保留"大学堂"概念,作为有组织的学习载体 | **P0** | +| **DX-002** | 周期性学习任务分配 | 支持按天/周/月分配必学内容(如视频、文档) | **P0** | +| **DX-003** | 学习完成考试 | 学习完成后需参加考试,验证学习效果 | **P0** | +| **DX-004** | 随机出题防作弊 | 考试题目随机生成,防止作弊 | **P0** | +| **DX-005** | 培训内容推送 | 系统按计划强制推送学习任务 | **P0** | + +### 4.1 暂缓功能 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **DX-006** | 每日三练 | 每天推送三个训练场景供练习——当前暂缓上线 | **P3(暂缓)** | +| **DX-007** | 训练强度动态调整 | 后续可根据使用情况评估上线时机,动态调整训练强度 | **P2** | + +## 五、视频与图片生成 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **MG-001** | 外部工具生成内容 | 平台允许员工使用任意外部工具(如剪映、豆包会员)生成视频和图片 | **P0** | +| **MG-002** | 内容上传入库 | 制作完成后,员工可将视频/图片上传至系统,作为培训材料入库 | **P0** | +| **MG-003** | 培训材料应用 | 上传的培训材料可用于大学堂课程,供其他员工定期学习观看 | **P0** | +| **MG-004** | 平台不介入制作 | 平台只接收最终成果,不介入视频/图片的制作过程 | **P0** | + +## 六、大喇叭:定向信息发布 + +### 6.1 定向发布与权限控制 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **HB-001** | 定向可见发布 | 支持向指定人员或特定群体发送文件,且仅该指定人员/群体可见 | **P0** | +| **HB-002** | 文件水印保护 | 所有通过大喇叭发布的文件均需自动添加水印 | **P0** | +| **HB-003** | 下载权限分离 | 支持设置下载权限:部分文件仅限在线浏览,禁止下载 | **P0** | + +### 6.2 智能辅助阅读 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **HB-004** | 自动标签提取 | 文件打开后,系统自动提取关键方向标签(如"保洁"、"安保"、"收费"等) | **P0(已完成)** | +| **HB-005** | 语音问答检索 | 用户可通过语音提问(如"告诉我跟保洁相关的内容"),系统据此提取并呈现相关内容段落 | **P0(已完成)** | +| **HB-006** | 标签识别功能已上线 | 文本识别与标签提取功能已开发完成并发布 | **P0(已完成)** | + +## 七、系统通用需求 + +| | | | | +|:--:|:--:|:--:|:--:| +| **需求编号** | **功能名称** | **需求描述** | **优先级** | +| **SYS-001** | 知识闭环流动 | 系统支持"清洗数据→沉淀数据→查询数据"的闭环流动机制 | **P0** | +| **SYS-002** | 实践-沉淀-传播循环 | 问答与练的结果形成联动,高分训练记录反哺知识库 | **P0** | +| **SYS-003** | 角色权限管理 | 系统需支持不同角色(管理员、培训师、学员等)的权限管理 | **P1** | +| **SYS-004** | 系统可扩展性 | 系统需支持灵活扩展,满足未来功能演进需求 | **P1** | + +## 八、优先级与状态说明 + +### 8.1 优先级定义 + +| | | | +|:----------:|:------------:|:--------------------------:| +| **优先级** | **含义** | **落地规划** | +| **P0** | 核心功能 | 必须首期完整开发上线 | +| **P1** | 重要功能 | 二期统一落地实现 | +| **P2** | 优化增强功能 | 后续迭代版本按需开发 | +| **P3** | 暂缓功能 | 暂时不上线,长期评估后再定 | diff --git a/docs/下一步计划-跟进意见对齐-20260727.md b/docs/下一步计划-跟进意见对齐-20260727.md new file mode 100644 index 00000000..12b3ffac --- /dev/null +++ b/docs/下一步计划-跟进意见对齐-20260727.md @@ -0,0 +1,200 @@ +# 下一步计划(「帮道-跟进的意见」对齐版) + +> 版本:v1.0 +> 日期:2026-07-27 +> 需求输入:《帮道- 跟进的意见.txt》(会议纪要,微信文件) +> 现状基准:生产只读实测(2026-07-27)+ [BRD 功能审查](BRD_IMPLEMENTATION_AUDIT.md) + [Changelog](../CHANGELOG.md) +> 死线:**2026-08-01 测试版上线**(会议明确「倒排」「边跑边调」) +> 上位文档:[分阶段实施总纲](银城员工端APP分阶段实施总纲.md) > [BRD](物业AI人力资源系统业务需求文档BRD.md) > [TechSpec](物业AI人力资源系统开发规格TechSpec.md) + +--- + +## 0. 结论先说 + +会议提的九项要求里,**七项功能代码已经存在**,真实缺口不在开发,而在三处: + +1. **未发布**:main 领先生产发布基线 `230dfb4d` **25 个提交**,其中「Agent 追问不再误答成澄清」(`7b014765`)必须发 JAR 才在生产生效。这是 8/1 死线的头号风险,也是最便宜的一次性收益。 +2. **内容与运营空转**:`aihr_knowledge_category` 生产 **0 行**,分类分级打标签能力表建好了但完全没用;向量覆盖率只有 **44%**,制度库更低到 **23%**。会议抱怨的「回答冗长、矛盾、来源不清」根因在这里,不在检索算法。 +3. **两项真净新增**:AI 每日问题简报、AI 短视频。其余都是补齐或运营。 + +必须先纠正会议里的三个技术前提,否则会按错误方向投入: + +| 会议表述 | 生产实际 | 影响 | +|---|---|---| +| 「通过向量数据库(RAG)技术提升检索精准度」 | 向量检索**已在线**:Qdrant 3638 点、`BAAI/bge-m3` 1024 维已启用,与 SQL LIKE、MySQL 全文检索三路 RRF 融合后再 rerank | 不是新建设,是**补覆盖率**。按「上 RAG」立项会重复建设 | +| 「探索向量数据库 RAG 的 17 种搭建方式」 | 当前架构已定且在跑;换方案的收益远低于把 4714 个未向量化片段补齐 | 建议改为「补覆盖 + 调参(分块/阈值/rerank)」,不做架构选型 | +| 「AI 机器人即时响应『我已收到,将跟进处理』」 | 直通车**无任何自动回复**;`status` 建为 `SUBMITTED`,`reply_content` 至人工回复前为 NULL | 是真缺口,但要先定边界:自动回复不得让员工误认为已处理 | + +另有一处产品定位冲突需要拍板,见 §4。 + +--- + +## 1. 会议九项要求 × 当前事实 + +| # | 会议要求 | 当前事实(含证据位置) | 缺口性质 | +|---|---|---|---| +| 1 | 聚焦「学」「问」,删除冗余功能、隐藏入口 | 员工端 45 页、tabBar 四项 = 今日/练/问/我。**「学」不是 tab**,在 `pages/user/learning/index.vue`(1545 行)二级页 | 信息架构调整 | +| 2 | 优先落地虚拟练习 + 政策制度问答 | 虚拟练习已上线(100 场景/86 启用/44 会话);政策问答**无独立入口**,与 SOP 混在同一「问师傅」Agent | 补入口 + 内容 | +| 3 | 暂不做拍照生成工单,只给「如何写工单」指引 | 已符合。全仓 `工单` 仅 `services/auth.ts` 一处,外部投递未接,写 `COMPANY/PENDING` | **已达成**,勿动 | +| 4 | 空间划分(全员/业务/人资),上传可多选可见空间 | 多选可见空间**已实现**(`uploadDoc(file, List spaceCodes)`,每个目标空间校验 MANAGE);但生产授权只有 ROLE 四值(employee/supervisor/hr_operator/superadmin),**无全员/业务/人资划分** | 配置 + 少量后台 | +| 5 | 课程资料归集、分类分级打标签 | 13 个空间 / 8352 片段已入库,但 `aihr_knowledge_category` = **0 行**;最大空间名为「其他(行政管理制度)」648 文档 4260 片段,完全未分类 | **纯运营,最大阻塞** | +| 6 | 高价值内容转 AI 短视频 | 全仓无短视频内容类型。视频仅两种形态:附件扩展名启发式判定的 `VIDEO` 检索意图、员工上传的现场视频证据 | **真净新增** | +| 7 | 政策制度独立封装、独立查询入口 | 无独立端点/空间/表。`制度` 只是 Agent 路由关键词(与 `sop`/`流程`/`规定` 并列) | 补入口 | +| 8 | 员工直通 CEO/财务/运营/人力 | **已上线并生产验证**:五通道(总裁/财务/人力/审计/运营)、业务匿名、一次正式回复、管理端 `/content/direct` 页 | **已达成** | +| 9 | AI 即时响应 + AI 每日问题简报匿名汇总管理层 | 自动回复无;每日简报无(后端 9 个 `@Scheduled` 均与直通车无关)。生产直通车仅 2 条数据 | **真净新增** | + +会议要求的「访谈 24 位优秀生活顾问」属业务侧动作,不占开发资源,但产出物(标准动作指南、标准应答话术)是 §2 内容工作的输入,故列入 §5 外部输入催办。 + +--- + +## 2. 真实阻塞:内容与覆盖率 + +这是全部计划里唯一会决定 8/1 测试版口碑的部分。开发量小,运营量大。 + +### 2.1 向量覆盖率缺口(生产实测 2026-07-27) + +| 空间 | 名称 | 片段 | 已向量化 | 覆盖率 | +|---|---|---:|---:|---:| +| 1008 | 其他(行政管理制度) | 4260 | 990 | **23%** | +| 1009 | 培训视频 | 2571 | 1286 | 50% | +| 1010 | 图片素材 | 153 | **0** | 0% | +| 1201 | 增值服务需求识别 SOP | 3 | **0** | 0% | +| 1202 | 日常服务回访 SOP | 3 | **0** | 0% | +| 1001–1007、1203 | 其余 | — | 全覆盖 | 100% | +| **合计** | | **8352** | **3638** | **44%** | + +未向量化的 4714 个片段只能靠 SQL LIKE 和 MySQL 全文检索命中。中文全文检索对制度类长文本的召回质量明显弱于向量,这直接解释会议反馈的「来源不清、答非所问」。 + +**另需注意**:`vectorHits` 是 catch-all 静默降级(`AihrSopSeedService.java:2874-2877`,注释 "vector recall is additive"),embedding 端点或 Qdrant 配错只会退化成关键词检索,不报错。回答质量下降先查这里,不要先怀疑 Prompt。 + +### 2.2 分类分级为零 + +`aihr_knowledge_category` 表结构就绪(`tenant_id, knowledge_id, code` 唯一约束)但生产 0 行。会议要求的「课程分类分级、打标签、识别高价值内容」目前完全没有落点。 + +同时 `searchAuthorized` 把 `category` 硬编码为 `""`(`AihrSopSeedService.java:210`),所以**即使填了分类,授权检索路径也用不到**——要让分类真正影响检索,需要一处后端改动。 + +--- + +## 3. 分批计划 + +### R1:原子发布(8/1 死线前必须完成,最高优先级) + +不含任何新功能,纯粹把已完成的 25 个提交送上生产。 + +| # | 任务 | 完成定义 | +|---|---|---| +| R1-1 | 隔离 worktree 收拢 main 至 release commit,跑 `release-preflight.sh`(拒脏工作区) | release commit 落字;当前 3 个脏文件(`mobile-uni/package.json`/`package-lock.json`/`manifest.json`)先提交或收拢 | +| R1-2 | 备份后端 JAR + H5 + DB,原子切换,重启 `wygj-aihr.service` | 备份目录落字;服务 `active`;错误级日志为 0 | +| R1-3 | 生产复核 schema、静态资源哈希、AIHR 模块与本地构建一致 | 远端预检通过;`7b014765` 追问修复以认证态验证生效 | + +**风险**:这 25 个提交含 App-Plus 实时对练、编译链升级、ASR 切换等较大改动,且部分「已本地验证、未真机验收」。建议 R1 只发**后端 JAR + H5**,App 云打包另走一批,避免把未验收的原生包混入死线发布。 + +### R2:内容与检索质量(8/1 测试版的实际口碑来源) + +| # | 任务 | 归属 | 完成定义 | +|---|---|---|---| +| R2-1 | **补齐向量覆盖**:对 1008/1009/1010/1201/1202 重跑 embedding 入库 | 技术 | Qdrant 点数与 `aihr_knowledge_fragment` 一致(8352);抽样 20 条制度类问题命中率留证 | +| R2-2 | **制度库分类分级**:把 1008 的 648 个文档按业务口径归类,写入 `aihr_knowledge_category`,空间改名(去掉「其他」) | 人力牵头 + 业务 | `aihr_knowledge_category` 非空;每个分类有负责人 | +| R2-3 | 让分类进入检索:解开 `searchAuthorized` 的 `category=""` 硬编码,支持按分类收窄 | 技术 | 定向测试;不改变既有无分类调用的行为 | +| R2-4 | 检索调参:分块大小、`similarity_threshold`、rerank 生效性验证;固定 ≥20 条真实问题回归集 | 技术 | 调参前后同一回归集对比留证,不靠主观感受判定 | +| R2-5 | 政策制度独立入口:新建政策空间 code + 授权 + 「问」页独立入口,答案强制带来源 | 技术 | 未命中不编造(复用既有 `unsupported_claims` 硬约束);答案必显来源文档名 | + +R2-1 是纯技术动作,当天可完成;**R2-2 是整个计划的关键路径**,无业务侧归类就无法验收「回答精准」。 + +### R3:信息架构收敛(会议第 1 项) + +| # | 任务 | 完成定义 | +|---|---|---| +| R3-1 | 确认「学」「问」为主场景后的 tabBar 方案(见 §4 待拍板) | 方案定稿 | +| R3-2 | 按决议隐藏非核心入口(**只隐藏入口,不删代码、不删表**) | 隐藏项可一键恢复;无死链;已发布能力不回退 | +| R3-3 | 「如何写工单」指引内容进知识库(会议第 3 项) | 员工问「工单怎么写」能得到带来源的答案 | + +**边界**:会议说「删除冗余功能」,工程上执行为**隐藏入口**。已生产验证的能力(大喇叭、直通车、问题榜、工作成果)删代码等于毁掉已验收资产,且与总纲阶段二冲突。 + +### R4:直通车闭环补齐(会议第 9 项) + +| # | 任务 | 完成定义 | +|---|---|---| +| R4-1 | 提交后自动回执 | 文案不得暗示已处理;员工端状态仍显「待处理」,与人工「正式回复」视觉可区分 | +| R4-2 | 简报聚合查询接口(当前 `adminFeedback` 只返回分页列表 + total,无未回复时长/分通道计数) | 新增聚合端点 + 定向测试 | +| R4-3 | AI 每日问题简报,匿名汇总 | 匿名口径复用既有实现(处理端只见「匿名员工」,内部保留审计);简报**不得**泄漏 `sender_name` | +| R4-4 | 简报投递到管理层群组 | **依赖外部输入**:群组、时间、渠道、重试规则未确认前不实施(同智能日报既有口径) | + +R4-3 需注意:现有产品边界是「一条反馈仅一次正式回复,不做多轮/工单/SLA」(`AGENTS.md:56`)。简报是聚合视图,不要顺势做成工单系统。 + +### R5:AI 短视频(会议第 6 项,建议不进 8/1) + +会议要求「学习 AI 视频制作技术,小丽牵头与张立团队协作,不依赖外部供应商」。这是从零起步的能力建设,与 8/1 死线不兼容。 + +建议:8/1 前只交付 **1 条示范视频**(人工+AI 辅助均可),作为方向验证;系统化的视频内容类型、播放进度、转码等留待方向确认后立项。这与既有半年会「1 条示范视频」止损口径一致。 + +--- + +## 4. 需要拍板的三个决策 + +### D-A:「学」是否升为 tabBar 一级入口 + +会议说聚焦「学」「问」两大主场景,但当前「学」是二级页,tabBar 是今日/练/问/我。两者矛盾。 + +- 选项 1:「学」替换「练」进 tab —— 与「优先落地虚拟练习」冲突 +- 选项 2:tab 扩到五项 —— 违背「简化」 +- 选项 3:「今日」页承载学习入口,「学」仍为二级 —— 改动最小,但没体现「聚焦」 + +倾向选项 3 + 把「今日」的学习入口做显著提升,理由是虚拟练习是会议明确的 P0,不应让位。**需产品拍板。** + +### D-B:空间划分口径 + +会议要「全员/业务/人资」,当前是 employee/supervisor/hr_operator/superadmin 四个 ROLE。这两套是不同维度(内容归属 vs 人员角色),不能直接映射。需业务确认: + +- 「业务空间」指哪些部门可见?与现有 `supervisor` 是什么关系? +- 大库 1006(验收测试)、1203(sop)当前仅管理端可见,1004–1010 已对 employee 放开——**这与既有「大库待业务签字再放开」的记录不一致,实际已放开**,需业务补签认或收回。 + +### D-C:自动回执文案 + +「我已收到,将跟进处理」由 AI 发出,但系统内该反馈仍是 `SUBMITTED`。若文案让员工以为已在处理,实际无人跟进,会比不回复更伤信任。建议文案明确区分「已收到」与「已处理」,并保留人工正式回复为唯一结论。**需产品拍板文案。** + +--- + +## 5. 外部输入催办(沿用既有 B 系列编号) + +| # | 需要的输入 | 提供方 | 阻塞 | +|---|---|---|---| +| B12 | **制度库分类分级口径**:1008 的 648 个文档按什么维度分类分级、谁是各类负责人 | 人力 + 业务 | R2-2,进而阻塞「回答精准」验收 | +| B13 | 空间划分口径(D-B) | 业务 + 人力 | R2-5、R3 | +| B14 | 24 位优秀生活顾问访谈产出:标准动作指南 + 标准应答话术(含「业主拒说楼栋号」类情绪化回应模板) | HRBP | 内容质量,非阻塞发布 | +| B15 | 每日简报投递对象、时间、渠道、重试规则 | 管理层 + 人力 | R4-4 | +| B3 | **仍未闭合**:正式试点范围圈定(1–2 个住宅项目、≥20 名员工、≥1 名主管、窗口起止) | HR | 一切正式验收指标的分母 | + +B3 自 2026-07-16 挂起至今未闭合,是既有计划里的最大阻塞,8/1 测试版若仍无试点范围,「快速验证效果」就没有度量对象。 + +--- + +## 6. 明确不做 + +- 不换 RAG 架构、不做「17 种搭建方式」选型对比。 +- 不删已生产验证功能的代码或表,只隐藏入口。 +- 不做自动化工单投递(会议明确暂缓,当前实现已符合)。 +- 不把直通车简报扩成工单/多轮/SLA 系统。 +- 不因短视频方向引入新的转码、播放进度或媒体数据模型,直到方向确认。 +- 不把「已部署」写成「正式试点通过」——沿用既有四级口径(已实现/已部署/生产验证/规划中)。 + +--- + +## 7. 建议执行顺序 + +``` +今天 → R1 原子发布(含 7b014765 追问修复) + ∥ R2-1 补向量覆盖(纯技术,当天可完) + ∥ 发出 B12/B13 催办(B12 是关键路径,越早越好) + ↓ +7/28-29 → R2-3 分类进检索 + R2-4 调参回归集 + ∥ R2-2 业务归类进行中(依赖 B12) + ↓ +7/30-31 → R2-5 政策独立入口 + R3 信息架构收敛 + ∥ R4-1 自动回执(依赖 D-C) + ↓ +8/1 → 测试版上线;R4-2/R4-3 简报按 B15 回复情况顺延 + R5 短视频只交 1 条示范 +``` + +R1 与 R2-1 无相互依赖,可并行。整个计划的关键路径是 **B12 → R2-2 → 回答质量验收**,不是任何一项开发任务。 diff --git a/帮道_AI物业培训与陪练平台功能需求复核清单_v2.0.docx b/帮道_AI物业培训与陪练平台功能需求复核清单_v2.0.docx new file mode 100644 index 0000000000000000000000000000000000000000..819be7e136868ae66d32143ef97524412efa9b60 GIT binary patch literal 25580 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