OMAT1 补充高敏边界审视

这个提交包含在:
2026-05-23 18:20:54 +08:00
父节点 cb8be25149
当前提交 fc339e878e
共修改 2 个文件,包含 16 行新增和 2 行删除
@@ -34,3 +34,6 @@
"OMAT1-32","公告制度发布缺少签收验收边界","系统已有公告中心、通知已读和员工培训记录,但公告本身更像轻量发布入口,尚未证明制度版本、员工已读签收、培训确认和后续追溯能形成闭环;成熟 OA 通常会把制度发布和签收作为合规证据。","正式启用前可先用人工培训签到或管理员确认作为 OALAUNCH 证据;若后续采纳功能化,再实现公告/制度按人签收、版本记录、未读提醒和导出,不把普通公告复杂化。","受影响流程:制度发布 -> 员工阅读/培训 -> 签收确认 -> 审计追溯;验证步骤:稳定期内选择 1 条数据治理或报销制度,记录人工培训/签收证据或后续功能化决策。","manual","TODO","TODO","TODO","server/src/routes/announcements.js;client/src/pages/AnnouncementsPage.tsx;client/src/pages/EmployeeProfilePage.tsx;docs/员工快速上手.md","[""OMAT1-14"",""OMAT1-31""]","优先级 P1;启用前建议用人工证据覆盖,功能化可等 7 天后评估。不要把所有公告都做成强制签收。"
"OMAT1-33","审计日志取证包和导出边界需要明确","系统已有审计日志页面和导出能力,但成熟运营需要明确审计日志保留期限、谁能导出、导出是否留痕、哪些字段需要脱敏、争议处理时如何形成取证包,避免审计数据本身成为隐私或权限风险。","正式启用前明确审计导出 SOP:导出角色、场景、审批或记录要求、字段脱敏规则、保存位置、保留期限和删除/移交规则;后续如需自动化,再另建审计取证包 Issue。","受影响流程:审计查询 -> 导出 -> 存档/取证 -> 查阅授权;验证步骤:用管理员账号导出 1 次脱敏审计样例,确认普通员工无权访问审计入口和导出 API。","manual|playwright|node","TODO","TODO","TODO","server/src/routes/audit.js;client/src/pages/AuditLogsPage.tsx;server/src/routes/exports.js","[""OMAT1-3"",""OMAT1-14""]","优先级 P0;建议采纳为权限和数据治理子项。涉及审计权限或导出字段改动时必须 reviewer 只读评审。"
"OMAT1-34","冻结功能入口和功能开关需要最终清点","代码中存在预算、ERP、差旅、AI、切换控制台等后置模块或入口;即使业务上已冻结,正式启用前仍需证明普通用户看不到或进不去未启用能力,API 也受权限和 feature flag 约束。","正式启用前完成 launch scope 功能开关矩阵:P0/轻 P1 开启项、冻结项、角色可见入口、API 负例和回滚方式;冻结项不得因导航、搜索或直连 URL 暴露给普通员工。","受影响流程:登录 -> 导航/搜索 -> 直连 URL/API -> 冻结功能拦截;验证步骤:复用 OA-only smoke 多角色账号跑入口和直连负例,结果纳入 OALAUNCH_PERMISSION_EVIDENCE。","playwright|node|manual","TODO","TODO","TODO","client/src/features/navigation/schema.ts;server/src/routes/featureFlags.js;client/src/pages/FeatureFlagsPage.tsx","[""OMAT1-3"",""OMAT1-30""]","优先级 P0;建议采纳。成熟启用不是删除后置模块,而是确保未批准能力不可见、不可写、可回滚。"
"OMAT1-35","全局搜索需要专门做权限穿透和脱敏验收","系统已有全局搜索,能检索人员、公告、资产、项目、合同、涉密资料引用、报销、采购、差旅等多域对象;成熟 OA 的搜索能力必须证明只返回当前用户有权知道的对象和摘要,不能因搜索匹配泄露合同摘要、涉密资料、他人报销或后置模块存在。","正式启用前把全局搜索纳入权限矩阵负例:普通员工、主管、财务、管理员分别搜索合同号、项目号、资产号、报销号和涉密关键词;结果只允许出现授权对象和脱敏摘要;冻结功能对象不得通过搜索可见。","受影响流程:登录 -> 全局搜索 -> 结果点击 -> 权限校验;验证步骤:用 OA-only smoke 多角色执行搜索负例,报告纳入 OALAUNCH_PERMISSION_EVIDENCE,不输出真实敏感关键词或完整编号。","playwright|node|manual","TODO","TODO","TODO","server/src/routes/search.js;client/src/components/GlobalSearchDialog.tsx","[""OMAT1-3"",""OMAT1-34""]","优先级 P0;建议采纳为权限矩阵子项。已有代码做了多域权限过滤,但上线成熟需要公网负例证据。"
"OMAT1-36","薪酬绩效和差旅等高敏/后置模块需要启用边界","代码中存在薪酬、绩效、差旅等模块;国内成熟 OA/HR 系统常覆盖这些能力,但对小团队正式启用而言,它们属于高敏或非当前主线能力。若未明确启用边界,容易出现管理员可写薪酬、员工误见入口、测试数据污染真实人事档案的问题。","正式启用前明确薪酬、绩效、差旅的状态:A 继续冻结并从普通入口/搜索/API 负例证明不可见不可写;B 仅管理员可见但不录真实数据;C 另建专项启用合同。默认不把薪酬绩效纳入 OALAUNCH1 正式启用范围。","受影响流程:角色登录 -> 高敏模块入口 -> 直连 API -> 审计;验证步骤:功能开关矩阵和多角色负例确认普通员工、主管、财务不可越权访问薪酬/绩效/差旅管理数据。","manual|playwright|node","TODO","TODO","TODO","server/src/routes/payroll.js;server/src/routes/performance.js;server/src/routes/travelRequests.js;client/src/pages/PayrollPage.tsx;client/src/pages/PerformancePage.tsx;client/src/pages/TravelRequestsPage.tsx","[""OMAT1-14"",""OMAT1-34""]","优先级 P0;建议采纳为冻结/边界确认。薪酬、绩效属于高敏数据,不因代码存在就进入正式启用。"
"OMAT1-37","通知送达可靠性和失败处理需要运行证据","系统已有通知中心、未读、企微消息通道和 delivery 记录;成熟 OA 需要证明关键审批、付款、退回、异常提醒能送达或可补偿,失败时有人查看和处理,而不是只看站内消息存在。","7 天稳定化期间至少抽样关键通知:审批待办、退回/通过、付款批次或回单、系统公告;检查站内未读、企微送达记录、失败 delivery 列表和人工补救口径。若企业微信不可用,需有站内/人工兜底。","受影响流程:业务事件 -> 站内通知/企微消息 -> 阅读/处理 -> 失败补救;验证步骤:运行 OAOPS1 或只读 delivery 查询,并由人工确认 1-2 条真实通知可读、可回跳、失败可追踪。","manual|node|bash","TODO","TODO","TODO","server/src/routes/notifications.js;client/src/pages/NotificationsPage.tsx;client/src/pages/NotificationChannelsPage.tsx;scripts/qa/run-oa-real-use-daily.sh","[""OMAT1-5"",""OMAT1-15""]","优先级 P1;建议采纳为稳定期观察项。通知失败不一定阻断启用,但关键审批/付款通知失败必须当天处理或人工绕行。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
34 OMAT1-32 公告制度发布缺少签收验收边界 系统已有公告中心、通知已读和员工培训记录,但公告本身更像轻量发布入口,尚未证明制度版本、员工已读签收、培训确认和后续追溯能形成闭环;成熟 OA 通常会把制度发布和签收作为合规证据。 正式启用前可先用人工培训签到或管理员确认作为 OALAUNCH 证据;若后续采纳功能化,再实现公告/制度按人签收、版本记录、未读提醒和导出,不把普通公告复杂化。 受影响流程:制度发布 -> 员工阅读/培训 -> 签收确认 -> 审计追溯;验证步骤:稳定期内选择 1 条数据治理或报销制度,记录人工培训/签收证据或后续功能化决策。 manual TODO TODO TODO server/src/routes/announcements.js;client/src/pages/AnnouncementsPage.tsx;client/src/pages/EmployeeProfilePage.tsx;docs/员工快速上手.md ["OMAT1-14","OMAT1-31"] 优先级 P1;启用前建议用人工证据覆盖,功能化可等 7 天后评估。不要把所有公告都做成强制签收。
35 OMAT1-33 审计日志取证包和导出边界需要明确 系统已有审计日志页面和导出能力,但成熟运营需要明确审计日志保留期限、谁能导出、导出是否留痕、哪些字段需要脱敏、争议处理时如何形成取证包,避免审计数据本身成为隐私或权限风险。 正式启用前明确审计导出 SOP:导出角色、场景、审批或记录要求、字段脱敏规则、保存位置、保留期限和删除/移交规则;后续如需自动化,再另建审计取证包 Issue。 受影响流程:审计查询 -> 导出 -> 存档/取证 -> 查阅授权;验证步骤:用管理员账号导出 1 次脱敏审计样例,确认普通员工无权访问审计入口和导出 API。 manual|playwright|node TODO TODO TODO server/src/routes/audit.js;client/src/pages/AuditLogsPage.tsx;server/src/routes/exports.js ["OMAT1-3","OMAT1-14"] 优先级 P0;建议采纳为权限和数据治理子项。涉及审计权限或导出字段改动时必须 reviewer 只读评审。
36 OMAT1-34 冻结功能入口和功能开关需要最终清点 代码中存在预算、ERP、差旅、AI、切换控制台等后置模块或入口;即使业务上已冻结,正式启用前仍需证明普通用户看不到或进不去未启用能力,API 也受权限和 feature flag 约束。 正式启用前完成 launch scope 功能开关矩阵:P0/轻 P1 开启项、冻结项、角色可见入口、API 负例和回滚方式;冻结项不得因导航、搜索或直连 URL 暴露给普通员工。 受影响流程:登录 -> 导航/搜索 -> 直连 URL/API -> 冻结功能拦截;验证步骤:复用 OA-only smoke 多角色账号跑入口和直连负例,结果纳入 OALAUNCH_PERMISSION_EVIDENCE。 playwright|node|manual TODO TODO TODO client/src/features/navigation/schema.ts;server/src/routes/featureFlags.js;client/src/pages/FeatureFlagsPage.tsx ["OMAT1-3","OMAT1-30"] 优先级 P0;建议采纳。成熟启用不是删除后置模块,而是确保未批准能力不可见、不可写、可回滚。
37 OMAT1-35 全局搜索需要专门做权限穿透和脱敏验收 系统已有全局搜索,能检索人员、公告、资产、项目、合同、涉密资料引用、报销、采购、差旅等多域对象;成熟 OA 的搜索能力必须证明只返回当前用户有权知道的对象和摘要,不能因搜索匹配泄露合同摘要、涉密资料、他人报销或后置模块存在。 正式启用前把全局搜索纳入权限矩阵负例:普通员工、主管、财务、管理员分别搜索合同号、项目号、资产号、报销号和涉密关键词;结果只允许出现授权对象和脱敏摘要;冻结功能对象不得通过搜索可见。 受影响流程:登录 -> 全局搜索 -> 结果点击 -> 权限校验;验证步骤:用 OA-only smoke 多角色执行搜索负例,报告纳入 OALAUNCH_PERMISSION_EVIDENCE,不输出真实敏感关键词或完整编号。 playwright|node|manual TODO TODO TODO server/src/routes/search.js;client/src/components/GlobalSearchDialog.tsx ["OMAT1-3","OMAT1-34"] 优先级 P0;建议采纳为权限矩阵子项。已有代码做了多域权限过滤,但上线成熟需要公网负例证据。
38 OMAT1-36 薪酬绩效和差旅等高敏/后置模块需要启用边界 代码中存在薪酬、绩效、差旅等模块;国内成熟 OA/HR 系统常覆盖这些能力,但对小团队正式启用而言,它们属于高敏或非当前主线能力。若未明确启用边界,容易出现管理员可写薪酬、员工误见入口、测试数据污染真实人事档案的问题。 正式启用前明确薪酬、绩效、差旅的状态:A 继续冻结并从普通入口/搜索/API 负例证明不可见不可写;B 仅管理员可见但不录真实数据;C 另建专项启用合同。默认不把薪酬绩效纳入 OALAUNCH1 正式启用范围。 受影响流程:角色登录 -> 高敏模块入口 -> 直连 API -> 审计;验证步骤:功能开关矩阵和多角色负例确认普通员工、主管、财务不可越权访问薪酬/绩效/差旅管理数据。 manual|playwright|node TODO TODO TODO server/src/routes/payroll.js;server/src/routes/performance.js;server/src/routes/travelRequests.js;client/src/pages/PayrollPage.tsx;client/src/pages/PerformancePage.tsx;client/src/pages/TravelRequestsPage.tsx ["OMAT1-14","OMAT1-34"] 优先级 P0;建议采纳为冻结/边界确认。薪酬、绩效属于高敏数据,不因代码存在就进入正式启用。
39 OMAT1-37 通知送达可靠性和失败处理需要运行证据 系统已有通知中心、未读、企微消息通道和 delivery 记录;成熟 OA 需要证明关键审批、付款、退回、异常提醒能送达或可补偿,失败时有人查看和处理,而不是只看站内消息存在。 7 天稳定化期间至少抽样关键通知:审批待办、退回/通过、付款批次或回单、系统公告;检查站内未读、企微送达记录、失败 delivery 列表和人工补救口径。若企业微信不可用,需有站内/人工兜底。 受影响流程:业务事件 -> 站内通知/企微消息 -> 阅读/处理 -> 失败补救;验证步骤:运行 OAOPS1 或只读 delivery 查询,并由人工确认 1-2 条真实通知可读、可回跳、失败可追踪。 manual|node|bash TODO TODO TODO server/src/routes/notifications.js;client/src/pages/NotificationsPage.tsx;client/src/pages/NotificationChannelsPage.tsx;scripts/qa/run-oa-real-use-daily.sh ["OMAT1-5","OMAT1-15"] 优先级 P1;建议采纳为稳定期观察项。通知失败不一定阻断启用,但关键审批/付款通知失败必须当天处理或人工绕行。