文件
hyb-oa/.trellis/tasks/05-28-company-docs-oa-ops-mapping/design.md
T

238 行
19 KiB
Markdown

# 公司电子资料与 OA 运营配合设计
## 设计结论
OA 不承载公司全量资料原件库职责,主要承载运营控制、流程状态、业务附件、台账索引、责任归属、签收、复核和审计证据。公司资料主库继续保存全量原件、高敏材料和历史证据;OA 只在具体业务流程中保存必要原文附件。
## 信息分工
| 对象 | 主事实源 | OA 中保存 | OA 中禁止 |
| --- | --- | --- | --- |
| 全量原件库 | 受控公司资料主库 | 不镜像全量原件,只记录必要索引和归档摘要 | 自由目录、全量资料包、历史资料镜像 |
| 授权业务附件 | OA 业务模块 | 合同、发票、回单、报价、验收等业务必要原文附件 | 越权上传、越权查看、跨业务自由下载 |
| 电子资料索引 | OA 资产 `EA-DOC` | 编号、类别、敏感级别、hash、负责人、归档位置摘要 | 完整本地路径、账号凭据、Secret |
| 制度发布 | OA 公告签收 + 受控制度版本 | 标题、版本、适用范围、签收声明、签收时间 | 未评审草案无限制公开 |
| 业务流程 | OA 审批和业务模块 | 状态、责任人、审批历史、附件清单、复核结论 | 越权附件、企业微信原生附件承载高敏材料 |
| 员工资料整理 | OA 任务/项目/待办 | 授权等级、范围、交付物、复核人、未确认项 | 全量目录访问、无关副本下载 |
## 落地原则
1. 先用现有 OA 能力做试点,不先开发完整文档库。
2. 凡涉及制度、合同、采购、付款、项目外发、入离职和资料归档,必须有责任人和状态。
3. 有权限人员可在 OA 业务流程内处理必要原文附件;普通员工协作、Codex/AI、外发、报告和企业微信消息只处理脱敏副本、低敏模板或摘要。
4. 外发材料必须同时经过脱敏检查和正式文件质量检查;涉及合同、付款、知识产权或责任边界时再进入专业复核。
5. 后续功能开发只承接经过试点证明的缺口。
## 阶段设计
| 阶段 | 目标 | 交付物 |
| --- | --- | --- |
| Phase 0 | 冻结资料安全边界 | 红线、授权等级、原文附件准入、索引-only 口径 |
| Phase 1 | 用现有模块试点 | 制度签收样例、`EA-DOC` 样例、合同/项目/入职样例 |
| Phase 2 | 制度和业务指导接入 | 员工签收、任务派发模板、资料整理 SOP |
| Phase 3 | 7 个制度联调场景回放 | 问题清单、风险等级、修订动作 |
| Phase 4 | 最小开发 | 资料协作任务模板、外发复核工作流、制度台账轻量页 |
## 后续开发触发条件
- 待办/项目任务不能清楚表达授权等级和禁止范围时,开发资料协作任务模板。
- 外发复核频率上升且人工台账漏签漏审时,开发外发复核工作流。
- 公告签收无法承载制度版本、适用范围、修订和执行检查时,开发制度台账轻量页。
- 手工登记 `EA-DOC` 成本过高且脱敏索引格式稳定时,再做导入工具。
## 文件管理服务器决策
当前阶段不建议单独建设公网文件管理服务器,也不建议自研“上传/下载文件中心”。原因是资料治理的主要问题不是缺少上传下载能力,而是缺少分类分级、授权、复核、签收、外发审批、归档责任和审计闭环。
部署服务器磁盘不足时,也不建议把生产附件直接放到另一台普通电脑的共享目录。更合适的是把“计算层”和“附件对象存储层”拆开:OA 服务仍在部署服务器运行,附件写入受控对象存储或专用 NAS,OA 继续负责权限、复核、下载审计和索引。
若后续确实需要文件服务,应按“受控文件服务 + OA 控制层”设计:
| 层 | 职责 |
| --- | --- |
| 受控文件服务 | 保存允许线上保存的授权业务原文、低敏/中敏文件、脱敏副本、员工交付物和非涉密证明材料 |
| OA 控制层 | 权限判断、审批状态、任务派发、下载审计、hash、归档位置摘要、外发复核 |
| 公司原件主库 | 保存全量原件、完整历史包、银行流水、工资社保、客户资料、源码密钥和历史证据 |
文件服务准入条件:
1. 先完成资料分级和员工授权等级定义。
2. 先完成 OA 中 `EA-DOC` 索引、公告签收和外发复核试点。
3. 文件服务必须支持最小权限、下载审计、离职回收、备份恢复、加密存储和外链限制。
4. 文件服务不得绕过 OA 直接给员工全量目录访问。
5. 高敏原件默认不进通用文件服务;合同、发票、回单、报价、验收等业务必要原文只能进入 OA 授权业务附件链路。
### 附件存储后端建议
现有后端已经有存储抽象层,支持 `STORAGE_DRIVER=local` 和 `STORAGE_DRIVER=s3`,并且 `storage_path` 支持 `s3:` 前缀。因此附件存储后端优先级建议如下:
阶段性落地口径:COS 和额外文件服务先暂缓。当前 V0 继续使用部署服务器本地存储承载授权业务附件,同时用 OA 保存资料索引、复核记录和归档位置摘要;全量原件库、历史包和不适合线上保存的高敏原件仍保留在受控离线资料主库,需要时由负责人按权限调取。
| 方案 | 建议 | 适用条件 |
| --- | --- | --- |
| 云对象存储 OSS/COS/S3 | 推荐 | 正式公网 OA、附件增长、部署服务器磁盘紧张 |
| 部署服务器新增数据盘 | 可作为短期方案 | 文件量较小、需要最快止血、能做备份和监控 |
| 公司受控 NAS/MinIO | 可选 | 有专门设备、固定网络、UPS、备份、权限和运维负责人 |
| 普通办公电脑共享目录 | 不推荐 | 只可做离线原件主库或临时人工中转,不做生产附件后端 |
选型建议:
1. 当前 V0 先不接腾讯云 COS,避免在附件复核和资料分级未跑稳前增加存储迁移工作。
2. 正式主选仍保留腾讯云 COS:国内访问、企业微信/腾讯 OCR 生态和小团队运维便利性更匹配;后端可按 S3 兼容接入做验证。
3. 如果当前部署服务器、域名、账号和账单已经主要在阿里云,则改选阿里云 OSS,避免多云账号和发票管理成本。
4. Cloudflare R2 适合低风险试点或临时验证免费额度,不作为国内 OA 生产附件首选。
5. 自建 MinIO 只在有专人运维和可靠硬件时考虑,不为了省几十元/月引入新单点。
### 家用群晖 NAS 判断
用户已有家用群晖 NAS。该 NAS 可以纳入公司资料治理,但不建议直接作为正式公网 OA 附件主存储,除非它被改造成受控存储节点。
推荐定位:
| 用法 | 建议 | 原因 |
| --- | --- | --- |
| 离线原件主库/冷归档 | 推荐 | 适合保存受控原件、历史资料、备份副本 |
| OA 附件备份目标 | 推荐 | 可作为服务器附件备份或对象存储备份的二级留存 |
| 低风险试点存储 | 可选 | 可用 VPN + MinIO 验证 S3 链路和受控入库流程 |
| 正式 OA 主附件库 | 暂不推荐 | 家宽、电力、动态 IP、上行带宽和家庭网络稳定性不足 |
若一定要用群晖承载 OA 附件,必须满足:
1. 部署服务器通过 VPN/Tailscale/WireGuard 等私有网络访问 NAS,不开放公网 MinIO/SMB/NFS。
2. NAS 上运行 MinIO 或等效 S3 兼容服务,OA 使用 `STORAGE_DRIVER=s3` 接入。
3. 只允许 OA 服务账户读写 bucket,员工不能直接访问 NAS 共享目录。
4. NAS 有 UPS、磁盘健康监控、容量告警、快照或版本保留。
5. NAS 资料还要再备份到外部介质或云端;RAID 不等于备份。
6. 家庭网络中断时,OA 附件上传/预览/下载会受影响,必须有暂停和恢复预案。
结论:群晖 NAS 适合做“受控原件库 + 备份/冷归档 + 低风险试点 MinIO”,不适合作为当前正式 OA 附件主存储的第一选择。正式附件主存储仍优先腾讯云 COS;若坚持零云存储成本,则先用群晖做非关键试点,再评估稳定性。
选择对象存储时的硬要求:
1. Bucket 私有,不开放公网匿名访问。
2. OA 服务端统一代理上传、预览和下载;前端不直接拿永久密钥。
3. 下载链接短有效期,并绑定操作者和附件。
4. 开启服务端加密或等效加密措施。
5. 配置生命周期和容量告警,避免无限增长。
6. 定期备份或跨区域/异地备份,至少保留关键业务附件恢复方案。
7. 迁移前先做 dry-run:上传、预览、下载、审计、备份恢复都通过后再切换生产。
如果必须临时使用“另一台电脑”,它必须被当作受控 NAS/MinIO 节点管理,而不是个人电脑共享盘:固定内网/VPN、独立账号、磁盘加密、UPS、自动备份、容量监控、禁止员工直接访问、只允许 OA 服务账户读写。
## 业务附件受控入库 V1
用户补充的真实需求不是“做网盘”,而是让员工或授权人员在 OA 的具体业务流程中上传必要附件。附件是否需要脱敏,取决于业务对象、角色权限、附件类型、流程状态和用途,不能一刀切。
核心口径:
1. 内部授权业务流可以保存必要原文附件。例如合同审批中的待审合同、盖章后扫描件,报销中的发票,付款中的银行回单,采购中的报价/验收材料。
2. “不用脱敏”只适用于有权限人员在 OA 业务流程内处理原文,不适用于企业微信消息、AI/Codex 处理、自动化报告、外发材料、低权限协作或普通员工下载。
3. 原文附件必须依附具体业务对象,不提供自由目录浏览、跨业务搜索下载或员工网盘式共享。
4. 高敏附件必须有状态、责任人、访问角色、下载审计和归档去向;不允许绕过 OA 直接共享服务器目录。
5. 源码、密钥、Secret、完整配置、完整账号凭据和完整本地路径仍禁止进入 OA 附件库。
### 同类系统抽象
参考成熟文档协作系统后,本项目不照搬完整文档库,而吸收其中与小团队 OA 匹配的治理能力:
| 成熟系统能力 | 对 hyb-oa 的启发 | 是否纳入 V1 |
| --- | --- | --- |
| 文件审批 | 文件或附件可进入正式审批,审批人可通过、拒绝或反馈 | 纳入,做附件复核 |
| 审批中锁定 | 审批期间防止被随意修改,修改后应重新复核 | 纳入,复核中附件不可直接替换正式件 |
| 版本和签出 | 正式版本与草稿/待审版本分离,变更有历史 | 简化纳入,V1 记录替换历史和复核意见 |
| 待审批可见性 | 待审批文件默认只让上传人和管理/复核人员可见 | 纳入,待复核附件不对普通业务成员开放 |
| 规则化访问控制 | 按用户组、标签、文件状态和上下文限制访问 | 纳入,按角色、业务关系、状态、敏感级别判断 |
| 在线预览优先 | 业务处理需要看内容,但不一定需要下载副本 | 纳入,默认预览,下载收紧 |
| 外链/短链接 | 临时分享需要时效和操作者绑定 | 后置,只保留短期下载链接原则 |
因此,适合 hyb-oa 的需求不是“文件中心”,而是“业务附件治理层”:附件必须依附业务对象,跟随审批、复核、归档和审计,不提供自由目录浏览。
### 跨业务附件矩阵
| 业务流程 | 典型附件 | 谁可上传 | 原文/脱敏规则 | 归档节点 | 下载边界 |
| --- | --- | --- | --- | --- | --- |
| 合同审批/用印 | 待审合同、修订稿、审批版、盖章扫描件、归档证明 | 合同负责人、管理层、被授权经办人 | 授权人员可上传原文合同;外发稿、AI 初审、低权限协作必须使用脱敏副本或摘要 | 审批通过、盖章扫描件上传后生成合同归档记录或 `EA-DOC` 索引 | 合同负责人/审批人/管理层可预览;下载需原因和审计;普通员工只看摘要 |
| 报销/票据 | 发票 PDF/图片、行程单、消费凭证、补充说明 | 报销人、财务、被授权代填人 | 发票和凭证是业务原文,可进入 OA;自动化报告只输出发票摘要和脱敏编号 | 报销提交、财务复核、付款完成后状态锁定 | 报销人看本人材料;审批人和财务按职责查看;归档后下载收紧 |
| 采购/费用申请 | 报价单、采购申请附件、供应商资料、验收单、交付证明 | 申请人、采购/项目负责人、财务 | 业务处理需要时可上传原文;敏感报价和供应商资料限制可见范围 | 验收通过、付款关联、资产登记后归档 | 申请人/审批人/采购/财务按业务关系查看;供应商敏感资料禁止普通下载 |
| 付款/AP | 付款申请依据、银行回单、付款批次附件、代账交接材料 | 财务、出纳、管理层授权人员 | 回单和代账资料可作为财务原文附件,但仅财务线可见 | 付款完成、AP 导出或月结归档后锁定 | 财务和管理层查看下载;其他角色只看付款状态和脱敏摘要 |
| 项目交付/外发 | 交付物、验收单、客户确认、外发稿、会议纪要 | 项目负责人、交付负责人、管理层授权人员 | 内部交付材料可原文保存;客户原始资料、报价、账号截图外发前必须脱敏复核 | 验收通过、回款节点、项目归档 | 项目成员按职责预览;客户敏感材料下载需用途记录 |
| 制度/资料管理 | 制度发布版、签收附件、资料索引、员工交付物 | 管理员、负责人、被授权整理人 | 发布版可进入 OA;草案历史、员工整理过程材料按敏感级别控制;AI/Codex 只处理脱敏副本 | 制度发布、签收完成、资料复核入库 | 员工看适用制度;资料原件默认只看摘要或索引 |
| 人事/员工资料 | 劳动合同、身份证明、入离职交接、培训证书 | HR/管理层授权人员 | 高敏个人资料默认不进普通 OA 附件区;若后续必须线上化,应作为 HR 受限域单独治理 | 入职完成、续签、离职归档 | 普通员工不可见;HR/管理层最小权限访问 |
### 原文、脱敏和索引-only 分类
| 分类 | 定义 | 处理 |
| --- | --- | --- |
| 授权原文附件 | 业务办理必须查看的合同、发票、回单、报价、验收、交付材料 | 可进入 OA,但必须绑定业务对象、角色、状态、审计和归档节点 |
| 脱敏协作附件 | 给普通员工整理、AI 初审、外发复核、格式检查用的副本 | 可进入 OA 协作区;不得反推完整客户、金额、账号、证件或合同敏感条款 |
| 索引-only 资料 | 不适合线上保存原文,但需要 OA 记录责任和位置的资料 | OA 只保存编号、摘要、hash、负责人、归档位置摘要、复核状态 |
| 禁止入库资料 | 源码、密钥、Secret、完整配置、完整账号凭据、完整本地路径 | 不进入 OA 附件库,不进入聊天、报告或企业微信消息 |
### 状态模型
| 状态 | 含义 | 允许动作 |
| --- | --- | --- |
| `draft` 草稿 | 上传人或授权经办人已上传,业务尚未提交 | 上传人可替换/删除;未进入正式业务证据 |
| `pending_review` 待复核 | 附件已随业务提交,尚未确认是否合规、归类正确或可作为依据 | 上传人可补充说明;复核人可预览、通过、退回、标记线下归档 |
| `under_approval` 审批中 | 附件是当前审批依据,不能随意替换 | 审批人可预览;替换必须产生新版本并重新进入复核/审批 |
| `returned` 已退回 | 附件缺材料、错类、涉敏或说明不足 | 上传人补充说明或重新上传;保留退回原因 |
| `approved` 已通过 | 复核通过,可作为当前业务单据附件使用 | 按业务权限预览;下载按下载策略控制 |
| `archived` 已归档 | 附件已进入正式归档或生成 `EA-DOC` 索引 | 核心信息锁定;下载需权限和审计 |
| `quarantined` 已隔离 | 疑似误传高敏原件、账号密钥、敏感报价等 | 仅管理员/负责人处理;普通员工不可见不可下载 |
| `rejected` 已拒绝 | 不应入库或不属于本业务 | 不作为业务证据;保留审计摘要 |
### 权限原则
| 角色 | 待复核附件 | 已通过附件 | 已归档附件 |
| --- | --- | --- | --- |
| 上传人 | 可查看自己上传的文件名、状态、退回原因;不默认下载归档件 | 可查看当前业务需要的附件摘要 | 非责任人时只看摘要或不可见 |
| 业务负责人/审批人 | 可在待办内预览复核所需附件 | 可预览处理所需附件 | 按业务权限预览,下载需记录原因 |
| 财务/合同/项目复核人 | 可预览本职责范围内附件 | 可按职责查看和下载,下载留审计 | 可按职责查看和下载,下载留审计 |
| 管理员 | 可处理隔离、误传、权限修正 | 不自动获得业务审批权 | 技术排障最小化授权并留痕 |
前端按钮显隐只做体验优化;服务端必须判断附件状态、业务权限、下载策略和审计要求。
### 下载策略
1. 默认优先提供在线预览,不默认提供下载。
2. 下载必须服务端鉴权,并写审计日志:操作者、时间、业务对象、附件 ID、动作、原因或用途。
3. 敏感级别较高的附件下载需填写原因;必要时需二次确认或负责人批准。
4. 普通员工不得批量下载业务附件;归档附件默认只显示摘要。
5. 临时下载链接必须短有效期、绑定操作者和附件,不能被转发后长期可用。
6. 企业微信消息不携带附件,只提供 OA deeplink。
### 入库规则
复核通过不等于所有文件都进 OA 原文库;是否保存原文按业务必要性和授权边界判断:
| 附件类型 | 处理 |
| --- | --- |
| 合同审批材料、盖章扫描件、报销发票、付款回单、采购报价、验收单等业务必要原文 | 可进入 OA 业务附件库,但只对业务相关授权人员开放 |
| 项目外发稿、制度发布版、员工交付物 | 可进入 OA 附件或 `EA-DOC` 索引,视敏感级别决定原文、脱敏副本或索引-only |
| 工资社保个税、身份证银行卡、客户原始高敏资料、银行流水、涉密合同包 | 默认索引-only 或进入后续专门受限域;普通业务附件区不保存原文 |
| 源码、密钥、Secret、完整配置、完整账号凭据、完整路径 | 禁止入库 |
### 实现建议
现有系统已有报销附件、采购附件、付款回单附件和下载审计基础。后续实现不应另建独立文件服务器,而应优先增强现有附件模型:
1. 增加附件复核状态、敏感级别、附件类型、复核人、复核时间、复核意见、下载策略。
2. 业务提交前为 `draft`;提交后按流程进入 `under_approval` 或 `pending_review`,不直接进入正式附件清单。
3. 业务详情页区分“草稿/待复核/审批中附件”和“已通过/已归档附件”。
4. 下载接口按附件状态和下载策略二次校验。
5. 复核通过后可关联业务单据、归档记录或 `EA-DOC` 资料索引。
6. 对误传高敏资料提供隔离和下架动作,不能让普通用户继续查看。
V1 不做:
- 不做全站网盘目录。
- 不做员工自由建文件夹和共享空间。
- 不做全量原件迁移。
- 不做复杂文档协同编辑、签出锁定和版本树。
- 不做对外分享链接。
- 不做企业微信附件承载。
## 验证方式
本任务只验证规划材料自身:Trellis task validate、Trellis governance gate、`git diff --check`。实际 OA 业务试点和公网检查需要后续实施任务承接。