Files
prop-ai-hr/docs/superpowers/specs/2026-07-25-broadcast-multi-role-document-insights-design.md

11 KiB
Raw Permalink Blame History

大喇叭公司文件多岗位解读设计

状态:产品方向已确认,待设计文档评审

日期:2026-07-25

范围:帮道大喇叭单文件附件,不建设独立文件管理系统

1. 目标

员工打开一份公司文件时,除查看通用摘要、消息正文和原文件外,还可以:

  1. 默认查看“我的岗位如何理解这份文件”;
  2. 主动切换财务、人力、业务运营等其他关键岗位视角;
  3. 看清不同岗位分别关注什么、受到什么影响、需要做什么;
  4. 查看每条 AI 判断对应的原文依据;
  5. 继续使用现有“问这条消息”追问完整文件。

该能力的产品名称统一为“多岗位解读”。它是同一份文件的多视角阅读,不是文件分类、权限过滤或目录管理。

2. 当前基线

当前生产链路已经具备:

  • 管理端上传一份公司文件并异步解析;
  • 生成一份通用摘要;
  • 发布时按项目、岗位、层级做定向提醒;
  • 员工查看消息正文、通用摘要和受控原文件;
  • 员工以 broadcastMessageId 进入“问”,由服务端加载完整提取文本;
  • 消息撤回后,同时拒绝详情、文件下载和消息上下文追问。

当前不具备:

  • 从全文识别多个岗位视角;
  • 提取与当前员工岗位直接相关的原文片段;
  • 在文件详情内切换其他岗位视角;
  • 为岗位判断提供可核验的原文依据。

现有“与我有关”只表示该消息命中了发布时冻结的定向提醒,不表示附件内容已按本人岗位拆解。

3. 产品口径

3.1 两种“相关”必须分开

概念 含义 员工端文案
消息定向 发布人选择的项目、岗位或层级命中了当前员工 定向提醒
内容相关 AI 在文件原文中找到与当前岗位有关的内容 与我相关

内部 API 字段 targeted 和列表筛选值 RELATED 本轮保持兼容;只调整员工端展示文案,避免两个概念混淆。

3.2 多岗位解读结构

每个岗位视角固定返回:

  1. summary:该岗位如何理解这份文件;
  2. concerns:最需要关注的事项;
  3. impacts:对该岗位职责、流程或指标的影响;
  4. actions:文件原文明确要求的行动;
  5. risks:原文明确存在的风险、限制或待确认事项;
  6. evidence:支持上述判断的原文短片段和段落序号。

文件未提及某岗位时,不生成补充常识,明确返回“原文未发现与该岗位直接相关的内容”。

3.3 V1 岗位视角目录

V1 使用版本化的服务端岗位视角目录,不建设配置后台:

  • 生活顾问/客服;
  • 保洁;
  • 保安;
  • 保修/工程;
  • 财务;
  • 人力;
  • 业务运营;
  • 审计/风控;
  • 管理层。

AI 只返回文件实际涉及的视角。员工仍可查看全部已生成视角;服务端根据当前 APP 登录身份的组织岗位,为其中一个视角标记 default=true。

如果当前岗位无法可靠映射到目录,默认展示“文件概览”,并提示暂未识别专属岗位视角;不得猜测身份或拿客户端字段兜底。

4. 非目标

本轮不做:

  • 行政、财务、业务等文件目录;
  • 文件库、文件归档、目录树和主动文件检索;
  • 多文件版本管理;
  • 文件修订、补推或外部强触达;
  • 员工自定义岗位身份;
  • AI 根据外部常识补充文件中不存在的要求;
  • 以岗位解读替代原文件或改变文件可见权限;
  • 后台岗位视角配置器。

5. 员工端交互

大喇叭文件详情保持一个主阅读流:

  1. 消息标题、必读和“定向提醒”标签;
  2. 消息正文;
  3. 公司文件名称和通用摘要;
  4. “多岗位解读”区域;
  5. “查看原文件”和“问这份文件”两个动作。

“多岗位解读”区域:

  • 默认选中“与我相关”;无法映射时选中“文件概览”;
  • 其余岗位使用横向可滚动的文本标签切换;
  • 只展示 AI 实际识别到内容的岗位;
  • 当前视角按“关注重点、岗位影响、需要行动、风险提醒、原文依据”顺序展示;
  • 原文依据默认折叠,员工主动展开后查看;
  • 不把所有岗位内容同时铺满页面。

状态处理:

状态 员工端表现
PENDING 显示“AI多岗位解读生成中”,其他功能照常使用
READY 展示多岗位解读
PARTIAL 展示已生成视角,并明确提示“文件较长,部分内容未完成解读”
FAILED 显示“多岗位解读暂不可用”,保留通用摘要、原文件和追问
旧文件无状态 按 NOT_PROCESSED 兼容,不显示错误

6. 后端设计

6.1 数据结构

在 aihr_broadcast_attachment 增加:

  • insight_status varchar(20):NOT_PROCESSED/PENDING/READY/PARTIAL/FAILED;
  • insights_json longtext:结构化多岗位解读;
  • insight_version varchar(30):例如 role-perspective-v1。

不新增文件主表,不把公司文件导入知识空间,不改变一条消息最多绑定一个附件的约束。

insights_json 逻辑结构:

{
  "version": "role-perspective-v1",
  "perspectives": [
    {
      "code": "FINANCE",
      "label": "财务视角",
      "summary": "……",
      "concerns": ["……"],
      "impacts": ["……"],
      "actions": ["……"],
      "risks": ["……"],
      "evidence": [
        {
          "paragraphIndex": 12,
          "quote": "……"
        }
      ]
    }
  ]
}

公开 DTO 不返回完整 extracted_text、模型提示词、模型原始响应或内部岗位匹配信息。

6.2 加工流程

复用现有附件上传、OSS、文档解析、异步 worker 和已启用的 chat 模型:

  1. 解析原文件,得到完整 extracted_text;
  2. 生成并保存现有通用摘要;
  3. 将全文按自然段和字符上限切片;
  4. 每个切片提取岗位候选、关注点、影响、行动、风险和原文短证据;
  5. 合并同岗位结果,去重并限制数量;
  6. 校验每条证据确实出现在对应原文切片中;
  7. 保存结构化结果和版本;
  8. 将文件状态保持为 READY,多岗位解读独立记录成功或失败。

现有通用摘要方法只分析正文摘录,不能直接承担长文件多岗位解读。新增逻辑放在独立、单一职责的 AihrBroadcastInsightService,避免继续扩大通用 SOP 服务。

V1 使用以下边界:

  • 每个切片最多 4000 个字符,相邻切片保留 300 个字符重叠;
  • 单文件最多处理 80 个切片,超过时按正文顺序处理前 80 个并标记 PARTIAL;
  • 最多返回 9 个岗位视角;
  • 每个视角的关注、影响、行动和风险各最多 5 条;
  • 每个视角最多返回 3 条原文依据,每条 20–200 字;
  • 原文依据必须是对应切片的连续子串,否则丢弃。

6.3 失败策略

  • 未配置模型、超时、非法 JSON 或证据校验失败时,insight_status=FAILED;
  • 多岗位解读失败不回滚文件解析、通用摘要或原文件;
  • 不返回无依据的规则式伪岗位结论;
  • 单个切片失败可忽略,但最终结果必须至少有一个通过证据校验的岗位视角,否则整体失败;
  • 超过 80 个切片或部分切片失败但仍有有效结果时标记 PARTIAL,不得伪装成完整解读;
  • 模型响应、原始文件和提取全文不得写入普通错误日志。

6.4 身份与默认视角

员工详情继续只接受当前 APP 登录态:

  1. 服务端按认证手机号精确解析唯一在职组织主体;
  2. 读取该主体的岗位、层级和项目范围;
  3. 使用服务端岗位别名规则映射默认视角;
  4. 只返回 defaultPerspectiveCode,不接受客户端提交岗位覆盖;
  5. 身份歧义或无法映射时返回空默认视角,不猜测。

其他岗位视角来自同一份已授权文件,员工可以主动切换查看;该能力不扩大原文件权限。

7. API 变化

继续复用:

  • GET /api/aihr/broadcast/messages/{id};
  • GET /api/aihr/broadcast/attachments/{id}/content;
  • POST /api/knowledge/query 的 broadcastMessageId。

扩展 BroadcastAttachmentResponse:

{
  "insightStatus": "READY",
  "defaultPerspectiveCode": "CLEANING",
  "perspectives": []
}

管理端附件状态响应只增加:

  • insightStatus;
  • perspectiveLabels。

管理端不读取员工默认视角,不返回提取全文。

8. 管理端

现有大喇叭发布页仅增加:

  • “AI多岗位解读生成中/已完成/暂不可用”状态;
  • 已识别岗位视角名称;
  • 解读失败不阻止发布。

不增加目录选择、文件中心、视角内容编辑器或批量文件管理。

9. 安全与审计

  • 每次详情读取仍校验租户、当前在职 APP 身份和消息 PUBLISHED 状态;
  • 撤回消息后,多岗位解读与原文件、追问同时不可访问;
  • 所有证据只来自当前附件的 extracted_text;
  • 模型不得调用全网,也不得读取其他文件;
  • 员工反馈、查看岗位视角等行为本轮不新增审计表;
  • 原有发布、阅读、下载和撤回审计保持不变。

10. 验收标准

使用两份真实企业文件进行生产验收:

  1. 管理端上传后可看到通用摘要和多岗位解读状态;
  2. 文件涉及财务、人力、业务等多个岗位时,员工端显示对应视角;
  3. 不同组织岗位登录后默认视角不同,但都能主动查看其他岗位视角;
  4. 每条结论都能展开看到确实存在于文件中的原文短片段;
  5. 长文件后半部分的相关内容能够进入解读结果;
  6. 文件未涉及某岗位时,不生成该岗位的虚构行动;
  7. AI失败时,通用摘要、原文件下载和“问这份文件”继续可用;
  8. API 不返回完整提取全文或原始 OSS 地址;
  9. 跨租户、非在职账号和撤回消息均无法获取解读;
  10. 390×844 下完成默认视角、视角切换、依据展开、原文件和追问的视觉与交互检查。

11. 兼容与发布

  • 旧附件迁移后为 NOT_PROCESSED,不自动批量调用模型;
  • 本轮验收文件在新版本发布后重新上传,直接走新链路;
  • 现有 summary、downloadUrl 和消息追问契约保持兼容;
  • 正式 SQL migration 更新远端 schema 预检;
  • 发布后同时核对静态资源、后端包和生产 schema;
  • 不将两份演示文件的成功等同于公司全量文件内容验收。

12. 后续候选项

只有真实使用证明有必要后再考虑:

  • 后台维护岗位视角目录和别名;
  • 旧文件按需重新拆解;
  • 员工对视角结果反馈;
  • 多岗位并排比较;
  • 独立文件分类和文件管理中心。