diff --git a/docs/superpowers/plans/2026-07-24-company-message-r1-r3.md b/docs/superpowers/plans/2026-07-24-company-message-r1-r3.md new file mode 100644 index 00000000..285313e8 --- /dev/null +++ b/docs/superpowers/plans/2026-07-24-company-message-r1-r3.md @@ -0,0 +1,30 @@ +# 公司消息系统 R1–R3 实施计划 + +> 依据:`docs/superpowers/specs/2026-07-24-company-message-nine-capabilities-design.md` + +## R1:统一直通车 + +1. 新增正式 SQL 迁移:直通车反馈表、幂等索引、渠道/状态约束所需索引。 +2. 新增后端 DTO、服务和控制器;实现固定五渠道、匿名展示、本人列表、渠道收件箱和一次正式回复。 +3. 新增后端最小测试,覆盖渠道、匿名、幂等、跨渠道和跨租户失败关闭。 +4. 新增员工端服务、入口、提交页和“我的反馈”页。 +5. 新增管理端 API、路由和直通车收件箱。 +6. 新增移动端与管理端契约测试。 + +## R2:公司文件提炼 + +1. 新增正式 SQL 迁移:大喇叭附件和片段表。 +2. 复用现有 OSS、文档解析器和模型配置,实现大喇叭附件异步处理服务。 +3. 扩展管理端发布接口:先上传附件,处理完成后带附件 ID 发布。 +4. 扩展员工详情和原文件下载接口,按当前身份重新鉴权。 +5. 扩展消息追问服务端上下文,加载已授权附件片段。 +6. 新增解析失败、撤回失效、跨租户和来源引用测试。 + +## R3:系统整合与验收 + +1. 整合员工公司消息页入口,保留原筛选和现有“问这条消息”。 +2. 同步 API、BRD、迁移 Runbook、schema 测试和 demo/release 预检。 +3. 运行后端、前端、移动端和脚本验证。 +4. 启动本地界面,完成移动端和管理端截图及交互验证。 +5. 构建完整制品并按发布 Runbook 发布。 +6. 使用线上已有手机号和验证码 `123456` 完成生产认证闭环,复核远端 schema、静态资源、后端模块和服务状态。 diff --git a/docs/superpowers/specs/2026-07-24-company-message-nine-capabilities-design.md b/docs/superpowers/specs/2026-07-24-company-message-nine-capabilities-design.md new file mode 100644 index 00000000..f3daf139 --- /dev/null +++ b/docs/superpowers/specs/2026-07-24-company-message-nine-capabilities-design.md @@ -0,0 +1,72 @@ +# 公司消息系统九项能力设计 + +> 日期:2026-07-24 +> 范围:R1 统一直通车、R2 公司文件提炼、R3 系统整合与验收 + +## 1. 九项能力落位 + +| 原始表达 | 系统落位 | +|---|---| +| 定向下达 | 复用银城大喇叭项目/岗位/职级定向、必读和“与我有关” | +| 总裁直达 | 统一直通车的 `PRESIDENT` 渠道,默认匿名 | +| 财务直达 | 统一直通车的 `FINANCE` 渠道 | +| 人力直达 | 统一直通车的 `HR` 渠道 | +| 告别微信群 | 运营结果,不新增独立功能 | +| 文件提炼 | 大喇叭附件异步解析、摘要、相关性说明、原文件和受控追问 | +| 审计直达 | 统一直通车的 `AUDIT` 渠道,默认匿名 | +| 运营直达 | 统一直通车的 `OPERATIONS` 渠道 | +| 生活顾问一站式 | 复用“问”和“练”,不新增平行模块 | + +## 2. R1:统一直通车 + +员工从公司消息页进入直通车,选择五个固定渠道之一,输入最多 5000 字反馈并选择是否匿名。总裁、审计默认匿名,其他渠道默认实名,但员工可切换。提交使用请求 ID 保证幂等。 + +首版只支持一次正式回复,不做即时聊天、附件、工单和 SLA。员工可查看本人反馈及正式回复;处理人员只能查看其角色对应渠道。匿名反馈的业务接口不返回提交人姓名、手机号或外部人员 ID,系统仍保存提交人内部 ID,用于本人查询、幂等和安全审计。 + +固定渠道与处理角色: + +| 渠道 | 处理角色 | +|---|---| +| `PRESIDENT` | `direct_president` | +| `FINANCE` | `direct_finance` | +| `HR` | `direct_hr` | +| `AUDIT` | `direct_audit` | +| `OPERATIONS` | `direct_operations` | + +`superadmin` 可处理全部渠道;其他系统账号按角色收窄。APP 用户只能提交和读取本人记录。 + +## 3. R2:公司文件提炼 + +管理端发布大喇叭消息时可上传一个文件。文件先进入 OSS,再由现有解析器异步提取正文、切片并生成公共摘要。解析结果保存在大喇叭专属附件和片段表,不自动进入企业知识库。 + +文件状态为 `QUEUED/PARSING/READY/FAILED`。只有 `READY` 文件可随消息发布;失败时明确显示原因,不生成假摘要。员工详情显示摘要、目标命中原因和原文件入口。客户端下载原文件时服务端按租户、消息发布状态和当前员工身份重新鉴权。 + +客户端追问仍只传 `broadcastMessageId`。服务端重新加载消息及其已就绪附件片段,把受控文本加入现有消息上下文;撤回、跨租户或附件不可用时立即拒绝继续使用。 + +## 4. R3:系统整合 + +员工“大喇叭”页保留全部/与我有关/必读未读筛选,并增加直通车入口。管理端“内容运营”增加直通车收件箱;生活顾问一站式继续由“问”和“练”承载。 + +“告别微信群”只以系统使用结果表达,不新增企业微信、短信或电话功能。可使用现有阅读记录统计消息总量、未读和必读完成情况。 + +## 5. 安全与失败关闭 + +- 所有查询显式带 `tenant_id`,不信任客户端租户、提交人或渠道权限。 +- 匿名只影响业务展示,不影响本人查询、幂等和安全审计。 +- 直通车请求 ID 在租户和提交人范围内唯一;同键异内容返回 409。 +- 原文件、摘要和片段均从服务端绑定关系重新加载,不接受客户端正文。 +- 消息撤回后原文件下载和消息上下文追问同时失效。 +- 文件解析失败不回退成伪造摘要。 + +## 6. 验收 + +生产认证验收直接使用线上系统已有手机号和验证码 `123456`,手机号不得出现在报告、截图或命令输出中。 + +- 五渠道提交、收件和回复闭环。 +- 匿名反馈不向业务处理端泄露提交人。 +- 跨渠道、跨租户、非本人读取均拒绝。 +- 重复提交幂等、同键异内容冲突。 +- 大喇叭文件上传、解析、摘要、原文件下载和受控追问。 +- 定向员工显示“与我有关”,非命中员工不误标。 +- 390×844 员工端与桌面管理端截图和交互检查。 +- 前端构建、移动端构建、后端定向测试、schema 检查和完整发布预检通过。