diff --git a/docs/20260708/数字师傅学练问报整合方案.md b/docs/20260708/数字师傅学练问报整合方案.md index 5463df72..c873cdb2 100644 --- a/docs/20260708/数字师傅学练问报整合方案.md +++ b/docs/20260708/数字师傅学练问报整合方案.md @@ -1,10 +1,11 @@ # 银城数字师傅产品方案(整合修订) -> 版本:v1.2 | 日期:2026-07-08 -> 输入源:①客户方《物业数字师傅系统三期建设方案》(2026-07-08 早,下称"第三版")②《企业内部AI培训学习APP产品需求与发布会内容讨论》会议纪要(2026-07-08)③客户方会后微信补充(学模块课程化+考试;巡检点位转入职学习任务)。 +> 版本:v1.3 | 日期:2026-07-11 +> 输入源:①客户方《物业数字师傅系统三期建设方案》(2026-07-08 早,下称"第三版")②《企业内部AI培训学习APP产品需求与发布会内容讨论》会议纪要(2026-07-08)③客户方会后微信补充(学模块课程化+考试;巡检点位转入职学习任务)④2026-07-11 客户微信语音补充(员工个人 AI 助理/个人知识空间)。 > v1.1 重构:按"产品是什么 → 发布会做什么 → 决策记录 → 执行"四部分分层,产品定义与发布会演示不再混写。 > v1.2 更新(2026-07-08,客户回复三项待确认):①多端跳转议题**暂缓**,现阶段只保证能打开小程序页面;②工作积分排行榜**保留功能、可选择不用**(开关配置);③员工评价管理团队**按组织架构与权限控制**,需有权限才能评价。详见 §3.3。 -> 与《银城员工端APP分阶段实施总纲》《AI陪练二期开发推进计划》的关系:本方案是增量修订,不推翻既有阶段划分;§4.2 回写清单已于 2026-07-08 执行——总纲升 v0.3、二期计划升 v0.8(BRD 4.4 修订仍待落 v1.2)。 +> v1.3 更新(2026-07-11):阶段二新增员工个人 AI 助理,首批做个人资料/链接收藏、时间检索、带引用问答和工作整理;PPT 生成后置为 P1;北森等外部个人数据归阶段三。 +> 与《银城员工端APP分阶段实施总纲》《AI陪练二期开发推进计划》的关系:本方案是增量修订,不推翻既有阶段划分;§4.2 回写清单已于 2026-07-08 执行——总纲升 v0.3、二期计划升 v0.8。BRD v1.2 已于 2026-07-11 增补个人 AI 助理,BRD 4.4 师徒演练等旧口径仍待后续版本继续修订。 --- @@ -128,6 +129,28 @@ - 对 D6 的影响:2026-07-08 客户回复**多端跳转议题暂缓**——现阶段只保证能打开某个小程序的页面(最小跳转能力),不做统一入口工程;D6 维持 H5 套壳表述,统一入口待后续再议(3.3); - 电子名片:独立产品,不进本方案范围。 +### 1.3.9 个人 AI 助理——从“问公司知识”扩展到“管理我的资料”(2026-07-11 新增) + +**用户原始诉求:**员工除了使用公司通用资料,还会遇到个人认为有用的表格、PPT、文章、网页链接、工作灵感和临时冲突;希望随手发给个人助理保存,之后可按日期/主题追问、汇总分析并整理为文字或 PPT。 + +产品归属:整体进入总纲阶段二“知识学习平台”,作为「问」的个人知识增强层;不回塞阶段一 AI 陪练。首批先解决“收得进、找得到、答有据”,再做复杂内容生成。 + +| 优先级 | 能力 | 验收口径 | +|---|---|---| +| P0 | 个人文字、文件、图片、网页链接收藏 | 显示标题、来源、收藏时间、解析状态;失败可重试 | +| P0 | 个人资料问答与总结 | 可选择个人资料/企业知识范围;答案展示引用来源,权限不足或无结果时明确提示 | +| P0 | 时间与主题检索 | 支持“从哪天到哪天”“哪些资料与保洁管理相关”等查询 | +| P0 | 工作问题与灵感整理 | 将零散输入整理为结论、行动项、待确认事项,不替员工自动对外发送 | +| P1 | 多资料对比、周报/月报、汇报提纲 | 输出可编辑结构,保留每个结论的资料来源 | +| P1 | PPT 生成与导出 | 先确认大纲和模板再生成;不作为阶段二首批上线阻塞项 | + +数据与权限原则: + +- 个人资料默认私有,分享给团队或沉淀企业知识库需员工明确操作并进入审核链。 +- 企业密级权限继续生效;个人助理不得因“个人收藏”绕过账号等级 × 知识密级控制。 +- 网页内容保存原链接、抓取时间与正文快照;外链抓取需增加安全、版权和内容失效检查。 +- 阶段三接入北森后,才允许在授权范围内分析考勤、请假、任职等 HR 数据;阶段二不复制或模拟这些外部数据。 + --- # 第二部分 发布会:半年会演示方案 diff --git a/docs/AI陪练二期开发推进计划.md b/docs/AI陪练二期开发推进计划.md index 79351e6a..be9a7d65 100644 --- a/docs/AI陪练二期开发推进计划.md +++ b/docs/AI陪练二期开发推进计划.md @@ -1,7 +1,7 @@ # AI 陪练二期开发推进计划 -> 版本:v0.8 | 日期:2026-07-08 -> 输入源:《AI陪练功能优化与缺口分析(修订版 · 2026-07-06)》+《物业行业 AI 人力资源系统 · BRD v1.1》。 +> 版本:v0.10 | 日期:2026-07-11 +> 输入源:《AI陪练功能优化与缺口分析(修订版 · 2026-07-06)》+《物业行业 AI 人力资源系统 · BRD v1.2》。 > v0.2 修订:与两份输入源逐项复核后补齐 6 处缺漏——#6/#9/#16/师徒演练的明确处置(§2)、#13 定向再练的里程碑落点(M4)、画像雷达图与 BRD L1「留」段验收承载(M4)、TechSpec P1 表映射与岗位身份前置(M1)、场景管理权限口径(M1/§7)、G6 成本上限量化(§7)。 > v0.3 修订:补齐管理者“传帮带”角色和初/中/高级生活顾问成长路径;训练数据只作晋升评级证据包,不让 AI 自动决定晋升。 > v0.4 修订:补后台提示词模板管理和生成文体绑定,减少总结卡、导师改写、逐句标注等输出的自由发挥。 @@ -10,6 +10,7 @@ > v0.7 确认:客户方确认"管家"="生活顾问"(同一岗位,术语统一为"管家(生活顾问)",`position` 标签不迁移);APP 形态定为 H5 套壳(维持 D6)。M0 两项待确认项关闭。 > v0.8 修订:并入 2026-07-08 产品讨论结论(见《数字师傅学练问报整合方案 v1.1》,docs/20260708/)——①M1 新增 `sop_answer` 直给格式模板(结论先行 + 一二三四五编号步骤 + 引用后置),随 2026-07-10 测试版上线;②M2 新增对练回复调节按钮(turn 支持 style 重生成)与问答答案打勾/打叉反馈;③师徒演练暂缓升级为**定向师带徒不做**,由阶段二开放问题榜承载(主管传帮带工作台不受影响);④M4 成长路径补学分/统考资格口径。 > v0.9 同步:正式试点导出和严格门禁已完成工程收口。两者均强制批次起止日、唯一在职组织身份和每人至少 10 次完训;校准/SOP 门禁以原始计数判定,不以四舍五入后的比率反推。当前仍等待上游提供至少 20 名可登录正式试点人员及业务评审,不将工程就绪写成业务验收通过。 +> v0.10 边界同步:2026-07-11 客户新增员工个人 AI 助理/个人知识空间需求,统一归入总纲阶段二;本计划只登记范围边界,不新增个人资料、网页采集和 PPT 任务。 > 结论:二期不做“24 个缺口全量铺开”,先把 AI 陪练从 MVP 演示闭环推进到**生活顾问岗位试点可用**。 ## 1. 二期目标 @@ -52,7 +53,7 @@ | 自动案例沉淀(#16) | 挂 BRD 4.6/4.7 共创与 review_task 审核链;二期只保证"贡献度"有人工计分入口(见 M4),自动沉淀待案例量起来再评估 | | 师徒演练(BRD 4.4) | **升级为不做(2026-07-08 会议否决)**:定向师带徒不实现——80% 以上项目生活顾问为初级、无带徒岗位设置、无额外报酬,强推造成误解;`mentor_assignment` P1 表与师父角色运营取消。帮带语义由两处承载:①M4 主管传帮带工作台(看回放→写复盘建议→派下次训练)不受影响,继续做;②员工间帮带由阶段二**开放问题榜**承载(全员可答、最佳答案置顶、有奖,见总纲 §4.4)。BRD 4.4 待同步修订 | | 动态难度调级(#1 后半 / BRD 4.5) | 场景表保留 difficulty 字段即可;自动升降级依赖画像数据稳定,分发规则 v1 不做 | -| 大喇叭信息平台、知识学习平台(学模块课程/考试与分身份文件摘要)、品检翻转、开放问题榜 UI、北森对接 | 立项会及 2026-07-08 产品讨论新增需求,归属总纲**阶段二/三**(见《银城员工端APP分阶段实施总纲》§4.4/§4.5);本阶段只埋 `knowledge_gap` 钩子 | +| 大喇叭信息平台、知识学习平台(学模块课程/考试与分身份文件摘要)、员工个人 AI 助理(个人资料/链接收藏、时间检索、总结分析、PPT)、品检翻转、开放问题榜 UI、北森对接 | 立项会及 2026-07-08/11 产品讨论新增需求,归属总纲**阶段二/三**(见《银城员工端APP分阶段实施总纲》§4.4/§4.5/§4.6);本阶段只埋 `knowledge_gap` 钩子,不新增个人知识空间 | ## 3. 技术路线 diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index d349e2ab..fb71c2c2 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -95,6 +95,20 @@ 配套知识模型扩容:知识类型维度(SOP=标准 / 案例=参照 / 话术=直接能说 / 经验策略=火候),检索按类型分层供给;案例沉淀链路是隐性知识的采集入口,战略地位上调。 +### B9. 员工个人 AI 助理 + 个人知识空间(阶段二,2026-07-11) + +来源:客户微信语音转写。员工希望把个人认为有用的表格、PPT、文章、网页链接、工作灵感和日常问题发给个人助理保存,之后按日期/主题追问、汇总分析并整理成文字或 PPT。 + +推荐拆分: + +1. **P0 个人收藏**:文字、多格式文件、图片、网页链接;保存来源、收藏时间、主题、解析状态和原附件。 +2. **P0 个人检索**:按时间范围/主题/来源查询,支持个人资料与有权限企业知识的混合检索,答案引用可追溯。 +3. **P0 工作整理**:把冲突、灵感、零散材料整理为结论、行动项和待确认项;不自动对外发送。 +4. **P1 内容再加工**:多资料对比、周报/月报、汇报提纲、PPT 生成;PPT 先确认大纲与模板。 +5. **阶段三扩展**:北森、考勤、请假、组织任职等外部个人数据授权接入后,再提供跨系统分析。 + +前置闸门:个人空间与企业知识分域;默认仅本人可见;分享/企业入库需审核与脱敏;网页抓取需防 SSRF、尊重版权与访问权限;需提供删除、导出和数据保留策略。阶段二开工前另出专项 TechSpec,不直接复用公共知识库表造成权限串域。 + ### 零散待办 - **总结卡「保存图片」按钮**(设计基准 summary-modal 图内有):需 html2canvas 类依赖做 DOM 转图,2026-07-05 P0-2 实现时按"不加依赖"红线砍掉;引依赖或后端出图方案定型后补。 diff --git a/docs/README.md b/docs/README.md index c801a2f5..750065d6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,10 +11,11 @@ | [API_INTEGRATION.md](API_INTEGRATION.md) | 后端 API 对接顺序、正式试点 CSV、移动端训练记录/复盘详情、候选资料上传/审核、SOP 上传解析接口 | | [RUOYI_AI_INCREMENTAL_MIGRATION.md](RUOYI_AI_INCREMENTAL_MIGRATION.md) | 从 `ageerle/ruoyi-ai` 分片迁移知识库、模型能力、文档解析、Qdrant/RAG 和 chat 的执行边界 | | [AI人力资源系统项目规划方案与AI接口说明.md](AI人力资源系统项目规划方案与AI接口说明.md) | 对外会议版口径、数字师傅定位、AI 接口和供应商规划 | -| [银城员工端APP分阶段实施总纲.md](银城员工端APP分阶段实施总纲.md) | 2026-07-07 立项会后的三阶段总纲:陪练 → 大喇叭+知识学习平台(含学模块、开放问题榜) → 北森对接;身份三轴模型与防遗漏分发策略 | +| [银城员工端APP分阶段实施总纲.md](银城员工端APP分阶段实施总纲.md) | 三阶段总纲:陪练 → 大喇叭+知识学习平台(含学模块、开放问题榜、员工个人 AI 助理) → 北森对接;身份三轴模型与防遗漏分发策略 | +| [个人AI助理阶段二专项TechSpec.md](个人AI助理阶段二专项TechSpec.md) | 员工个人知识空间的物理分域、数据模型、API、检索融合、权限、安全、删除和测试规格 | | [AI陪练二期开发推进计划.md](AI陪练二期开发推进计划.md) | 总纲阶段一执行文档:AI 陪练从 MVP 演示闭环推进到管家(生活顾问)岗位试点可用;区分工程就绪与正式业务试点证据 | | [20260708/uni-app用户侧前端重建计划.md](20260708/uni-app用户侧前端重建计划.md) | 当前用户侧 `mobile-uni/` 重建计划、三端页面拆分、portless 入口、真实浏览器验证和验收进展 | -| [20260708/数字师傅学练问报整合方案.md](20260708/数字师傅学练问报整合方案.md) | 2026-07-08 产品讨论定案:产品定义(学练问报+问题榜+学分晋升)与半年会发布会方案分层;客户"第三版"逐项处置对照 | +| [20260708/数字师傅学练问报整合方案.md](20260708/数字师傅学练问报整合方案.md) | 产品定义(学练问报+问题榜+学分晋升+个人 AI 助理)、半年会发布会方案分层及客户需求逐项处置对照 | | [基于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(整合方案的输入源,只作留档) | | [open-org-sync-api-design-v1.md](open-org-sync-api-design-v1.md) | 开放组织同步系统 `/open/v1` 接口设计,`POST /api/aihr/org/sync` 的外部契约 | diff --git a/docs/个人AI助理阶段二专项TechSpec.md b/docs/个人AI助理阶段二专项TechSpec.md new file mode 100644 index 00000000..0be58abd --- /dev/null +++ b/docs/个人AI助理阶段二专项TechSpec.md @@ -0,0 +1,551 @@ +# 员工个人 AI 助理 / 个人知识空间专项 TechSpec + +> 版本:v1.0 | 日期:2026-07-11 +> +> 归属:《银城员工端 APP 分阶段实施总纲》阶段二 +> +> 需求基线:《物业 AI 人力资源系统业务需求文档 BRD》4.8 +> +> 实施边界:首批交付个人资料收藏、检索、带引用问答和工作整理;PPT 生成为 P1;北森、考勤等外部数据归阶段三。 + +## 1. 目标与非目标 + +### 1.1 目标 + +为每名已登录员工提供与企业知识库隔离的个人知识空间,支持: + +1. 收藏个人文字、文件、图片和网页链接。 +2. 自动解析正文、生成摘要与主题标签。 +3. 按日期、主题、来源和关键词检索个人资料。 +4. 在授权范围内选择“个人资料 / 企业知识 / 混合”进行问答。 +5. 输出结论、行动项和待确认事项,并逐条展示引用来源。 +6. 删除个人资料时同步清理关系库、对象存储和向量索引。 + +### 1.2 非目标 + +- 阶段二首批不生成 PPT 文件,只生成可编辑汇报提纲。 +- 不读取北森、考勤、请假、任职等阶段三外部数据。 +- 不做通用网盘、多人协作文档、在线 Office 编辑和自动对外发送。 +- 不允许个人资料自动进入企业知识库。 +- 不通过“收藏网页”绕过登录、付费墙、企业内网或版权限制。 +- 不复用企业知识表增加 `scope_type` 来承载个人数据。 + +## 2. 核心架构决策 + +### 2.1 处理能力复用,数据物理分域 + +| 能力 | 复用方式 | 隔离要求 | +|---|---|---| +| 文件上传与 OSS | 复用 `ISysOssService` | 使用私有前缀 `personal/{tenantId}/{userId}/{itemId}/` | +| 文档解析 | 从 `AihrSopSeedService` 抽取无状态解析组件 | 解析结果只能写个人表 | +| Embedding / Rerank / LLM | 复用现有模型配置与成本闸门 | 调用前按个人资料规则脱敏,不写企业片段表 | +| 全文检索 | 使用个人片段表 MySQL Fulltext | 查询必须包含 `tenant_id + owner_user_id` | +| 向量检索 | 新建 `aihr_personal_knowledge` collection | Qdrant filter 必须包含 `tenant_id + owner_user_id` | +| 企业知识检索 | 调用现有企业 RAG 服务 | 继续执行企业知识密级、项目和角色权限 | + +禁止将个人资料写入: + +- `aihr_knowledge_info` +- `aihr_knowledge_attach` +- `aihr_knowledge_fragment` +- 企业 Qdrant collection `aihr_knowledge` + +### 2.2 检索流程 + +```text +用户问题 + scope(personal / enterprise / mixed) + → 从移动端 token 取得 tenantId、userId、extPartyId + → 校验日期、itemIds、知识范围和配额 + → personal: 个人 Fulltext + 个人 Qdrant(强制 owner filter) + → enterprise: 企业 Fulltext + 企业 Qdrant(强制企业权限) + → mixed: 两域分别检索并授权后融合,不做跨域原始结果直连 + → Rerank + → LLM 生成答案 + → 返回 citations,每条标记 PERSONAL / ENTERPRISE / WEB + → 保存会话、答案、引用和 prompt/model 版本 +``` + +### 2.3 模块边界 + +后端新增独立包,避免继续扩大 `AihrSopSeedService`: + +```text +org.dromara.aihr.personal +├── controller/PersonalAssistantController.java +├── domain/PersonalAssistantDto.java +├── service/PersonalSpaceService.java +├── service/PersonalIngestionService.java +├── service/PersonalRetrievalService.java +├── service/PersonalAnswerService.java +├── service/PersonalCleanupService.java +├── service/PersonalUrlFetchService.java +└── support/PersonalKnowledgeProperties.java +``` + +解析器抽为共享、无状态能力: + +```text +org.dromara.aihr.knowledge.parse +├── KnowledgeDocumentParser.java +├── ParsedDocument.java +└── KnowledgeChunker.java +``` + +共享解析器只接受文件/字节和解析参数,只返回内存对象,不知道企业表、个人表或 Qdrant collection。 + +## 3. 身份、权限与数据隔离 + +### 3.1 所有者身份 + +- `owner_user_id`:本地 `sys_user.user_id`,作为阶段二强制所有权键。 +- `owner_ext_party_id`:可空,保存组织快照外部主体 ID,供阶段三身份迁移使用。 +- `tenant_id`:沿用 RuoYi 多租户上下文。 +- Controller 不接受客户端提供的 `ownerUserId`、`tenantId`。 +- Service 每次查询都从当前登录态取得 `tenant_id + user_id`,不得只按主键查询。 + +### 3.2 访问矩阵 + +| 操作 | 本人 | 普通主管 | HR/运营 | 系统管理员 | +|---|---:|---:|---:|---:| +| 查看个人资料正文 | ✅ | ❌ | ❌ | ❌(默认) | +| 查看个人资料数量/处理状态 | ✅ | ❌ | 聚合且脱敏 | 聚合且脱敏 | +| 删除本人资料 | ✅ | ❌ | ❌ | ❌(默认) | +| 申请分享/企业入库 | ✅ | ❌ | 审核申请 | 审核申请 | +| 紧急审计查看 | ❌ | ❌ | 需 `aihr:personal:audit`、工单号和原因 | 同左 | + +紧急审计必须记录审计人、目标用户、itemId、原因、工单号、时间和结果;正文不写入审计日志。 + +### 3.3 防越权规则 + +1. 所有 `/api/aihr/personal-assistant/**` 接口必须登录,不使用 `@SaIgnore`。 +2. 单项读取、删除、重试必须使用 `WHERE id=? AND tenant_id=? AND owner_user_id=?`。 +3. Qdrant 查询必须同时过滤 `tenant_id` 和 `owner_user_id`。 +4. 企业知识结果进入融合前必须经过企业权限过滤;客户端传来的 fragmentId 不能直接作为引用。 +5. 个人资料转企业知识必须复制经审核后的脱敏版本,不能把个人 item 直接改成企业 scope。 +6. 自动化测试必须使用两个用户交叉访问,验证列表、详情、检索、向量和删除均返回不可见。 + +## 4. 数据模型 + +初始化 SQL:`backend/script/sql/aihr_personal_knowledge_mysql8.sql`。 + +### 4.1 `aihr_personal_space` + +每个租户内每名员工一条。 + +| 字段 | 类型 | 说明 | +|---|---|---| +| id | bigint PK | 主键 | +| tenant_id | varchar(20) | 租户 | +| owner_user_id | bigint | 本地用户 ID | +| owner_ext_party_id | varchar(100) null | 外部主体 ID | +| status | varchar(20) | ACTIVE / FROZEN / DELETING | +| quota_bytes | bigint | 默认 524288000(500MB) | +| used_bytes | bigint | 已用空间,事务内维护 | +| item_count | int | 未删除资料数 | +| create_time/update_time | datetime | 审计时间 | + +约束:`UNIQUE(tenant_id, owner_user_id)`。 + +### 4.2 `aihr_personal_item` + +| 字段 | 类型 | 说明 | +|---|---|---| +| id | bigint PK | 资料 ID | +| tenant_id/space_id/owner_user_id | bigint/varchar | 冗余所有权键,便于强制过滤 | +| source_type | varchar(20) | TEXT / FILE / IMAGE / URL | +| title | varchar(500) | 标题 | +| original_url | varchar(2000) null | 原网页地址 | +| oss_id | bigint null | 原文件或网页快照 OSS ID | +| mime_type | varchar(100) | MIME | +| size_bytes | bigint | 原始大小 | +| content_hash | varchar(64) | SHA-256 去重 | +| status | varchar(20) | QUEUED / PARSING / READY / FAILED / DELETING / DELETED | +| error_code/error_message | varchar | 可公开的失败信息,不存堆栈 | +| attempt_count | int | 解析尝试次数,默认 0,每次执行前加 1 | +| summary | text | 自动摘要 | +| tags_json | json | 主题标签数组 | +| captured_at | datetime | 内容产生/网页抓取时间 | +| parsed_at | datetime null | 解析完成时间 | +| deleted_at | datetime null | 逻辑删除时间 | +| create_time/update_time | datetime | 审计时间 | + +索引: + +- `(tenant_id, owner_user_id, status, create_time)` +- `(tenant_id, owner_user_id, captured_at)` +- `(space_id, content_hash)` + +### 4.3 `aihr_personal_fragment` + +| 字段 | 类型 | 说明 | +|---|---|---| +| id | bigint PK | 片段 ID | +| tenant_id/space_id/owner_user_id/item_id | bigint/varchar | 所有权与父项 | +| idx | int | 片段序号 | +| content | text | 正文片段 | +| token_count | int | token 数 | +| embedding_json | longtext null | Qdrant 不可用时的本地兜底 | +| embedding_model | varchar(100) null | 模型 | +| embedding_time | datetime null | 向量时间 | +| create_time | datetime | 创建时间 | + +约束:`UNIQUE(item_id, idx)`;Fulltext 索引仅覆盖个人表。 + +### 4.4 `aihr_personal_chat_session` 与 `aihr_personal_chat_message` + +Session 保存 `id/tenant_id/owner_user_id/title/default_scope/create_time/update_time`。 + +Message 保存: + +- `session_id/owner_user_id/role` +- `content` +- `scope_json` +- `citations_json` +- `model_name/prompt_version` +- `input_tokens/output_tokens/latency_ms` +- `create_time` + +个人消息只允许本人读取和删除;运营报表仅统计数量、token 和延迟,不读取 content。 + +### 4.5 `aihr_personal_publish_request`(P1) + +个人资料申请进入团队或企业知识库的审核记录:`item_id/applicant_user_id/target_scope/reason/status/reviewer_user_id/review_comment/review_time/published_knowledge_id`。 + +状态固定为 `PENDING / APPROVED / REJECTED / CANCELLED`。批准后生成新的企业知识附件和片段,保留来源链,不改变个人 item 所有权。 + +## 5. Qdrant 与 OSS 设计 + +### 5.1 Qdrant + +- collection:`aihr_personal_knowledge` +- 向量维度:跟随当前启用的 vector 模型;模型或维度变化使用独立重建任务。 +- payload:`tenant_id`、`owner_user_id`、`space_id`、`item_id`、`fragment_id`、`source_type`、`captured_at`。 +- 必建 payload index:`tenant_id`、`owner_user_id`、`item_id`。 +- 查询无 owner filter 时,`PersonalRetrievalService` 直接拒绝执行并记录安全日志。 + +### 5.2 OSS + +- 路径:`personal/{tenantId}/{userId}/{itemId}/{safeFileName}`。 +- bucket 保持私有;下载只能通过鉴权接口返回短时签名 URL。 +- 原文件、网页正文快照和生成导出文件使用不同子目录。 +- 文件名、Content-Type 和 multipart header 继续执行 CRLF 清洗。 +- `sys_oss.ext1` 只保存解析状态和 personal itemId,不保存个人正文或手机号。 + +## 6. API 契约 + +统一前缀:`/api/aihr/personal-assistant`。响应沿用 `R`。 + +### 6.1 空间与资料 + +| 方法 | 路径 | 请求/说明 | +|---|---|---| +| GET | `/space` | 当前用户空间、配额、已用量、资料数 | +| GET | `/items` | `pageNum/pageSize/status/sourceType/dateFrom/dateTo/keyword` | +| POST | `/items/text` | `{title, content, capturedAt?, tags?}` | +| POST | `/items/file` | multipart `file`, `title?`, `capturedAt?` | +| POST | `/items/url` | `{url, title?, capturedAt?}`,异步抓取 | +| GET | `/items/{id}` | 详情、解析状态、摘要、标签;所有权校验 | +| POST | `/items/{id}/retry` | 仅 FAILED 可重试 | +| DELETE | `/items/{id}` | 返回 cleanupJobId,进入 DELETING | +| GET | `/items/{id}/download-url` | 返回 5 分钟私有签名 URL | + +创建响应: + +```json +{ + "itemId": 1201, + "status": "QUEUED", + "duplicateOf": null +} +``` + +### 6.2 搜索与问答 + +`POST /search` + +```json +{ + "queryText": "7月1日至7月10日我收藏了哪些保洁管理资料", + "scope": ["PERSONAL"], + "dateFrom": "2026-07-01", + "dateTo": "2026-07-10", + "itemIds": [], + "limit": 10 +} +``` + +`POST /ask` + +```json +{ + "sessionId": null, + "queryText": "结合我的资料和企业制度,整理本周保洁管理改进建议", + "scope": ["PERSONAL", "ENTERPRISE"], + "dateFrom": "2026-07-01", + "dateTo": "2026-07-10", + "itemIds": [], + "outputFormat": "ACTION_PLAN" +} +``` + +响应: + +```json +{ + "sessionId": 301, + "answer": "结论……\n行动项……\n待确认事项……", + "citations": [ + { + "domain": "PERSONAL", + "sourceId": "item:1201:fragment:3", + "title": "保洁班组周记录.xlsx", + "excerpt": "……", + "capturedAt": "2026-07-08T09:30:00" + }, + { + "domain": "ENTERPRISE", + "sourceId": "knowledge:1:fragment:88", + "title": "住宅保洁作业标准", + "excerpt": "……", + "capturedAt": null + } + ], + "model": "configured-chat-model", + "promptVersion": "personal_assistant_v1" +} +``` + +若无可用引用,返回明确的“当前资料中没有足够依据”,不得生成无引用的业务结论。 + +### 6.3 会话 + +| 方法 | 路径 | 说明 | +|---|---|---| +| GET | `/sessions` | 当前用户会话列表 | +| GET | `/sessions/{id}` | 消息与引用 | +| DELETE | `/sessions/{id}` | 删除本人会话与消息 | + +### 6.4 分享与导出(P1) + +| 方法 | 路径 | 说明 | +|---|---|---| +| POST | `/items/{id}/publish-requests` | 申请进入团队/企业知识库 | +| GET | `/publish-requests` | 本人申请进度 | +| POST | `/exports/outline` | 生成可编辑汇报大纲 | +| POST | `/exports/pptx` | 根据已确认大纲和模板异步生成 PPTX | +| GET | `/exports/{id}` | 生成状态与下载地址 | + +## 7. 网页采集安全 + +`PersonalUrlFetchService` 必须执行: + +1. 仅允许 `http/https`,拒绝用户名密码 URL、`file:`、`ftp:`、`data:`。 +2. DNS 解析后拒绝 loopback、private、link-local、multicast、保留地址和云元数据地址。 +3. 最多 3 次重定向,每次重定向重新解析和校验目标 IP。 +4. 连接超时 5 秒、总超时 15 秒、响应正文上限 10MB。 +5. 只接收 HTML、纯文本及明确允许的文档 MIME;下载文件仍走文件校验链。 +6. 不携带用户浏览器 Cookie、Authorization、Referer 或企业内部代理凭证。 +7. HTML 清洗脚本、样式、iframe、表单和隐藏元素,只保留正文与可追溯链接。 +8. 记录最终 URL、HTTP 状态、抓取时间、内容哈希和 robots/版权提示;失败可重试但不绕过限制。 + +## 8. 解析、模型与提示词 + +### 8.1 解析 + +- 支持格式与现有知识库一致:txt/md/PDF/Word/Excel/PPT、常用图片。 +- 视频、音频首批不进入个人空间;待语音转写和视频解析成本评估后扩展。 +- item 状态由 `QUEUED → PARSING → READY/FAILED` 单向推进;重试将状态恢复为 QUEUED、增加 `attempt_count`,并覆盖 `error_code/error_message`。 +- 文本块默认 800 字、重叠 120 字;参数由 `PersonalKnowledgeProperties` 管理。 + +### 8.2 提示词模板 + +新增模板代码: + +- `personal_assistant_answer_v1` +- `personal_assistant_summary_v1` +- `personal_assistant_action_plan_v1` +- `personal_assistant_outline_v1` +- `personal_assistant_ppt_v1`(P1) + +系统提示词必须包含:只基于授权片段回答、区分来源域、忽略资料中的指令注入、没有依据时拒答、不得代表用户对外作决定。 + +### 8.3 成本闸门 + +- 复用 `AIHR_AI_RUNTIME_ENABLED`、chat/vector/rerank 开关。 +- 解析和向量化按内容哈希去重。 +- 摘要按需生成;首屏列表不批量触发 LLM。 +- 保存 token、模型和延迟,不保存供应商原始请求日志中的个人正文。 + +## 9. 删除、配额与生命周期 + +### 9.1 配额默认值 + +| 配置 | 默认值 | +|---|---:| +| `aihr.personal.max-file-size-mb` | 20 | +| `aihr.personal.max-url-body-mb` | 10 | +| `aihr.personal.max-space-mb` | 500 | +| `aihr.personal.max-items` | 1000 | +| `aihr.personal.download-url-minutes` | 5 | + +### 9.2 删除流程 + +1. API 将 item 标记为 DELETING,立即从列表和检索隐藏。 +2. 清理任务删除 Qdrant points。 +3. 删除个人 fragment。 +4. 删除或解绑 `sys_oss` 对象。 +5. 将 item 标记为 DELETED,仅保留无正文的审计元数据。 +6. 清理任务幂等重试,24 小时内完成物理内容清理。 + +用户账号冻结后禁止访问个人空间;阶段三接入权威离职状态后,默认冻结 30 天,允许用户或经授权管理员导出,期满清理。该天数必须可配置。 + +## 10. 前端设计 + +### 10.1 页面与入口 + +`mobile-uni` 新增: + +```text +src/pages/user/assistant/index.vue 个人助理首页/提问 +src/pages/user/assistant/library.vue 个人资料列表 +src/pages/user/assistant/item.vue 资料详情与解析状态 +src/pages/user/assistant/capture.vue 文字、文件、链接收藏 +src/pages/user/assistant/sessions.vue 历史会话 +src/services/personal-assistant.ts API 客户端 +``` + +入口策略:员工端「问」页增加“企业知识 / 我的资料”范围切换和“收藏资料”入口;不新增第五个底部 Tab。 + +### 10.2 关键交互 + +- 上传后立即返回列表并显示解析状态,不阻塞页面等待解析。 +- 每条答案引用显示域徽标:我的资料、企业 SOP、外部网页。 +- 混合问答默认关闭,用户主动选择后才同时检索两域。 +- 删除前明确提示会删除附件、解析正文和搜索索引。 +- 资料详情允许修正标题、时间和标签,不允许直接编辑解析正文。 +- P1 PPT 生成必须先展示可编辑大纲和模板选择,再提交异步任务。 + +## 11. 错误码与降级 + +| 业务码 | 含义 | 前端动作 | +|---|---|---| +| `PERSONAL_SPACE_QUOTA_EXCEEDED` | 空间或条目配额超限 | 显示用量并引导删除 | +| `PERSONAL_ITEM_NOT_FOUND` | 不存在或无权访问 | 统一显示不存在,不泄露归属 | +| `PERSONAL_ITEM_NOT_READY` | 仍在解析 | 展示状态并允许刷新 | +| `PERSONAL_PARSE_FAILED` | 解析失败 | 展示可公开原因和重试 | +| `PERSONAL_URL_BLOCKED` | URL 被安全策略拦截 | 明确不能访问该地址 | +| `PERSONAL_NO_CITATION` | 无足够资料支撑 | 不生成业务结论 | +| `ENTERPRISE_SCOPE_FORBIDDEN` | 无企业知识范围权限 | 保留个人结果,提示企业范围不可用 | +| `PERSONAL_AI_DISABLED` | AI 成本闸门关闭 | 仍允许收藏和关键词检索,暂停摘要/问答 | + +企业检索失败时,mixed 查询可只返回个人结果并标记降级;个人权限校验失败时不得降级为企业或公开检索。 + +## 12. 测试策略 + +### 12.1 单元测试 + +- owner/tenant 条件生成与空 owner 拒绝。 +- URL IP 分类、重定向二次校验、正文上限。 +- 文件哈希去重与配额计算。 +- 引用域序列化和无引用拒答。 +- 删除任务幂等性。 +- prompt injection 文本不得改变系统指令。 + +### 12.2 集成测试 + +- MySQL:两个用户创建、列表、详情、搜索、删除互不可见。 +- Qdrant:未带 owner filter 的调用被拒绝;用户 A 不返回用户 B point。 +- OSS:签名 URL 只能由本人生成;删除后对象不可访问。 +- mixed:个人和企业结果分别授权、融合、引用域正确。 +- 成本闸门关闭:收藏与关键词检索可用,LLM 能力明确降级。 + +### 12.3 浏览器 E2E + +1. 手机号登录并确认岗位。 +2. 收藏一段文字、一个 PDF 和一个公开网页。 +3. 查看 QUEUED/PARSING/READY 状态变化。 +4. 按日期查询资料。 +5. 分别执行个人、企业、混合问答。 +6. 检查引用徽标和原始来源。 +7. 删除资料并确认列表、问答和下载均不可再访问。 +8. 切换另一手机号,确认看不到前一用户的资料、标题和会话。 + +## 13. 非功能指标 + +| 指标 | 验收线 | +|---|---| +| 跨用户数据泄漏 | 0;自动越权矩阵 100% 通过 | +| 支持样本解析成功率 | ≥95%(排除加密/损坏文件) | +| 关键词/向量检索 P95 | ≤2.5 秒 | +| AI 回答 P95 | ≤8 秒;超时明确提示可重试 | +| 引用可访问率 | 100%,且当前用户有权访问 | +| 删除可见性 | API 成功后立即隐藏 | +| 物理内容清理 | 24 小时内完成 | +| URL 私网/元数据地址拦截 | 100% | + +## 14. 里程碑与发布闸门 + +### M0:安全与数据地基 + +- 独立表、独立 Qdrant collection、私有 OSS 前缀。 +- 两用户越权测试、URL SSRF 测试、删除测试先行。 + +### M1:资料收藏与解析 + +- 文字、文件、图片、网页链接收藏。 +- 异步解析状态、失败重试、配额和列表。 + +### M2:个人检索与问答 + +- 日期/主题/来源检索。 +- 个人问答、引用、会话和成本统计。 + +### M3:企业知识授权融合 + +- 企业知识权限过滤。 +- 个人/企业/mixed 三范围切换和引用域标记。 + +### M4:移动端闭环与试点 + +- 员工端页面、真实浏览器 E2E、20 名试点员工。 +- 试点期间不开放分享/企业入库和 PPT 文件生成。 + +### M5:P1 增强 + +- 分享/企业入库审核。 +- 周报月报、汇报提纲、PPTX 异步生成。 + +发布硬闸门:跨用户越权测试、SSRF 测试、删除链路、引用权限和真实浏览器闭环任一未通过,不得进入试点。 + +## 15. 实施文件清单 + +预计新增: + +- `backend/script/sql/aihr_personal_knowledge_mysql8.sql` +- `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/personal/**` +- `backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/personal/**` +- `mobile-uni/src/pages/user/assistant/*.vue` +- `mobile-uni/src/services/personal-assistant.ts` +- `mobile-uni/tests/personal-assistant.test.mjs` + +预计修改: + +- `backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java`(仅抽取解析能力,不加入个人业务) +- `backend/script/sql/aihr_knowledge_mysql8.sql`(仅共享解析迁移兼容时调整) +- `mobile-uni/src/pages.json` +- `mobile-uni/src/pages/user/sop/index.vue` +- `mobile-uni/src/types/api.ts` +- `scripts/reset-dev-db.sh` +- `docs/API_INTEGRATION.md` +- `docs/DEV_SETUP.md` +- `docs/DEMO_ACCEPTANCE.md` + +## 16. 决策摘要 + +1. 个人知识和企业知识物理分域,不采用共享表 `scope_type`。 +2. 文件解析、模型和成本闸门复用,存储和检索索引不复用。 +3. 本地 `user_id` 是阶段二所有权键,`ext_party_id` 只作阶段三迁移锚点。 +4. Mixed 检索先分域授权,再融合结果。 +5. 个人资料默认私有,分享和企业入库走 P1 审核链。 +6. PPT 是 P1,不阻塞阶段二首批。 +7. 北森、考勤等外部个人数据属于阶段三。 diff --git a/docs/物业AI人力资源系统业务需求文档BRD.md b/docs/物业AI人力资源系统业务需求文档BRD.md index 4e18c007..d524b723 100644 --- a/docs/物业AI人力资源系统业务需求文档BRD.md +++ b/docs/物业AI人力资源系统业务需求文档BRD.md @@ -1,8 +1,9 @@ # 物业行业 AI 人力资源系统 · 业务需求文档(BRD) -> 版本:v1.1(统一版)| 日期:2026-07-02 +> 版本:v1.2(统一版)| 日期:2026-07-11 > 定位:本文是本项目的**唯一事实源(Single Source of Truth)**,收敛此前所有讨论与文档,取代分散的局部材料作为业务需求基准。 > v1.1 变更:第 5 章数据模型方向补充"HR 主干已对齐《手册》卷1 第9章"结论(见 5.2)。 +> v1.2 变更:新增阶段二“员工个人 AI 助理 / 个人知识空间”需求(见 4.8),明确个人资料、网页链接、时间检索、来源引用、PPT 增强项和阶段三外部 HR 数据边界。 > > **收敛来源**: > - 《物业管家与生活顾问 AI 陪练系统建设方案》(原始业务方案,陪练视角) @@ -144,6 +145,17 @@ - **更新机制**:工单/会议记录自动回流(AI 听记转写提炼)、人工审核与共创(一线提交话术、专家终审、**署名入库**)、版本与质量管理(变更留痕、可回溯、防知识腐烂)。 - **提示词模板管理**:后台按业务场景和生成文体维护提示词框架,例如“总结卡”“导师改写”“逐句标注”“督导图片分析-设施设备”;模板固定输出结构(三段式/卡片字段/JSON schema),减少 AI 自由发挥。 +### 4.8 员工个人 AI 助理 / 个人知识空间(阶段二) + +- **个人资料收藏**:员工可保存个人工作文字、PDF/Word/Excel/PPT、图片和网页链接;系统记录来源、收藏时间、主题、解析状态和原始附件,支持删除与导出。 +- **个人检索与问答**:支持按日期范围、主题和来源查询个人内容,例如“上周收藏了哪些保洁管理资料”;基于选定资料总结、分析和提炼行动建议,回答必须展示引用来源。 +- **混合知识范围**:员工可选择仅查个人资料、仅查企业知识或在权限范围内混合查询;个人资料与企业知识分域存储,不得因个人收藏绕过企业知识密级。 +- **工作思路整理**:对日常冲突、工作灵感和零散想法生成结论、行动项、待确认事项;AI 仅辅助整理,不自动代替员工对外发布或作出管理决策。 +- **内容生成**:阶段二首批提供摘要、提纲和可编辑文字;多资料对比、周报/月报和 PPT 生成作为阶段二增强项,PPT 先确认大纲与模板再生成。 +- **分享与入库**:个人资料默认本人可见;分享给团队或沉淀为企业知识时必须由本人明确发起,经过权限校验、脱敏、审核和版本治理。 +- **网页安全与版权**:保留原 URL、抓取时间和正文快照;禁止访问内网地址或绕过登录/付费权限,需处理内容失效、版权与恶意页面风险。 +- **阶段三边界**:北森、考勤、请假、组织任职等外部个人数据只在阶段三完成授权对接后使用,阶段二不得以手工复制数据伪造跨系统个人助理。 + --- ## 5. 数据模型方向 diff --git a/docs/银城员工端APP分阶段实施总纲.md b/docs/银城员工端APP分阶段实施总纲.md index 353fa9e5..000914e9 100644 --- a/docs/银城员工端APP分阶段实施总纲.md +++ b/docs/银城员工端APP分阶段实施总纲.md @@ -6,6 +6,7 @@ > 分阶段口径(已定):**第一步陪练相关全部工作 → 第二步银城大喇叭 + 知识学习平台 → 第三步北森人事考勤对接**。 > v0.2 确认(2026-07-07,客户方):①"管家"与场景库"生活顾问"为**同一岗位**,术语统一为"管家(生活顾问)",`position` 标签沿用现有值不迁移;②APP 形态定为 **H5 套壳 APP**(WebView 包装可安装),原生重写不做,D6 决策维持。 > v0.3 修订(2026-07-08,客户产品讨论):①阶段二"知识学习平台"扩充**学模块**——标准学习计划/课程/防快进视频/最短阅读时长/不定期考试,见 §4.5;②"新问题挂榜共创"产品形态定案为**开放问题榜**,定向师带徒经会议否决不做,见 §4.4;③新增知识分级访问权限工程需求;④三项待确认已获客户回复(2026-07-08):多端跳转暂缓(只保证能打开小程序页面,D6 不动)、排行榜保留为可选开关、员工评管理层按组织架构权限控制,见 §8 与《数字师傅学练问报整合方案 v1.2》§3.3。 +> v0.4 修订(2026-07-11,客户微信补充):阶段二新增**员工个人 AI 助理 / 个人知识空间**——员工收藏个人文件、表格、PPT、文字和网页链接,按时间/主题检索并生成带来源的总结与分析;PPT 生成为增强项;北森、考勤等外部个人数据仍归阶段三。 ## 1. 立项会带来的定位变化 @@ -25,7 +26,7 @@ | 阶段 | 内容 | 时间锚点 | 承载文档 | |---|---|---|---| | **一、陪练** | 陪练相关全部工作:场景库、语音对手戏、复盘、画像、派发、新员工每日三题、传帮带 | 2026-07-10 Alpha → 2026-07-13 当周 Beta → 半年会发布 → 9 月收费季前试点可用 | 《AI陪练二期开发推进计划》v0.8 | -| **二、大喇叭 + 知识学习平台** | 下行:公司信息直达推送(不过滤);每份文件 AI 总结 + 分身份"跟我相关"提取(见 §4 身份模型);**学模块:标准学习计划 + 知识课程 + 不定期考试(见 §4.5)**;上行:品检翻转(员工拍照上报+AI分析+积分)、开放问题榜(见 §4.4) | 半年会后启动,与阶段一试点并行推进;**学模块岗前课程最小版视资源提前到阶段一试点后** | 本总纲 §4/§5 +《数字师傅学练问报整合方案》(后续出专项计划) | +| **二、大喇叭 + 知识学习平台** | 下行:公司信息直达推送(不过滤);每份文件 AI 总结 + 分身份"跟我相关"提取(见 §4 身份模型);**学模块:标准学习计划 + 知识课程 + 不定期考试(见 §4.5)**;**个人 AI 助理:个人资料/链接收藏、检索、总结与分析(见 §4.6)**;上行:品检翻转(员工拍照上报+AI分析+积分)、开放问题榜(见 §4.4) | 半年会后启动,与阶段一试点并行推进;**学模块岗前课程最小版视资源提前到阶段一试点后** | 本总纲 §4/§5 +《数字师傅学练问报整合方案》(后续出专项计划) | | **三、北森对接** | SSO/组织人员同步、考勤请假入口整合;报事闭环接口对接("一键走天下") | 阶段二稳定后;报事流程梳理由闫鑫牵头业务侧先行 | 本总纲 §6(后续出集成方案) | 排序理由(立项会原话):先陪练可倒逼知识沉淀 + 缓解 9 月收费压力;不求大求全,先做员工必用核心功能。 @@ -100,6 +101,26 @@ 范围控制:不做直播、不做线下签到、不做课程市场;只支撑"岗前课程 + 每日小训 + 不定期考试"三种形态。数据模型需新增:课程、课件、学习进度、考试、成绩(专项设计待出)。**节奏**:整体属阶段二;岗前课程最小版(课程列表 + 完成状态 + 入职任务包)视内容资源到位情况,可提前到阶段一试点后启动。 +### 4.6 员工个人 AI 助理 / 个人知识空间(2026-07-11 新增) + +定位:在公司公共知识库之外,为每名员工提供个人工作资料与灵感的沉淀、检索和再加工空间;入口可复用员工端「问」,但个人资料与公司知识必须分域、分权限、分来源展示。 + +| 层级 | 能力 | 阶段口径 | +|---|---|---| +| MVP | 收藏个人文字、PDF/Word/Excel/PPT、图片和网页链接;自动提取正文、标题、来源、收藏时间和主题标签 | 阶段二首批 | +| MVP | 按日期范围、主题、来源查询“我哪些天收藏了什么”;基于选定资料问答、总结、提炼工作想法,答案必须带来源 | 阶段二首批 | +| MVP | 将冲突处理、工作灵感、保洁管理等问题交给个人助理分析;允许同时引用个人资料与有权限的企业知识 | 阶段二首批 | +| 增强 | 多份资料对比、周报/月报、结构化汇报提纲、个人知识标签和长期记忆 | 阶段二后半 | +| 增强 | 将总结导出为 PPT/汇报材料;先生成可编辑大纲,再生成文件,不把“一键 PPT”作为首批阻塞项 | 阶段二后半/P1 | +| 外部数据 | 北森、考勤、请假、组织任职等个人数据接入后再做跨系统分析 | 阶段三 | + +边界与治理: + +- 个人资料默认仅本人可见;主动分享或申请进入企业知识库时必须经过权限检查、脱敏和审核,不得自动混入公司公共知识。 +- 网页链接需保留原 URL、抓取时间和正文快照;抓取必须防 SSRF、尊重访问权限与版权,登录态/付费内容不绕过授权。 +- 回答需区分“个人资料”“企业 SOP”“外部网页”三类引用;未命中时明确提示,不编造来源。 +- 开工前另出专项 TechSpec,至少覆盖个人资料元数据、内容解析、个人检索空间、来源引用、删除/导出和数据保留策略。 + ## 5. 阶段二不做什么(边界) - 不做通用 OA/审批流(请假考勤等待阶段三北森入口,不自建)。 @@ -112,7 +133,9 @@ - 现有系统整合策略:立项会已定**先用跳转链接集成**,不做深度改造;报事闭环由闫鑫牵头业务侧梳理流程,APP 侧只做入口与接口预留("一键走天下"是长期目标)。 - 对 BRD 的修订影响:BRD §7 外部依赖表中"采购系统用户体系"应更正/补充为**北森**(HR 主数据权威源);D2"本地账号一期、SSO 二期"决策不变,阶段三兑现 SSO。 -## 7. 对 BRD 的修订建议(待确认后落 v1.2) +## 7. 对 BRD 的后续修订追踪 + +BRD v1.2 已于 2026-07-11 增补“员工个人 AI 助理 / 个人知识空间”。下表是此前阶段讨论形成、仍需在后续 BRD 版本继续合并的修订项,不因本次个人助理增补自动视为全部完成。 | # | 修订点 | 说明 | |---|---|---|