ORG8-10 ORG8-11 ORG8-12 ORG8-13 ORG8-14 回填账号权限验证

这个提交包含在:
2026-05-13 20:03:35 +08:00
父节点 f25cda6557
当前提交 2eccaf61f2
@@ -9,11 +9,11 @@ ORG8-6,admin-only 误用为审批人审计,"审计 admin-only 账号是否被配
ORG8-7,财务和管理员混授审计,"审计财务和系统管理员角色混授风险,明确是否允许同人双角色及审计要求。","1) 混授账号可列摘要;2) 财务付款和系统管理权限边界清楚;3) 高风险组合进入人工确认;4) 不泄露敏感字段。","流程级验证:只读核验用户角色集合;流程核对财务台账和系统管理入口权限。",manual|node,DONE,DONE,DONE,scripts/qa|server/src|client/src,"[""ORG8-2""]",本地只读 node 审计通过:finance_admin_mixed_roles=0;未发现启用账号同时持有 admin 与 finance 或 finance_mgr;未改数据。 ORG8-7,财务和管理员混授审计,"审计财务和系统管理员角色混授风险,明确是否允许同人双角色及审计要求。","1) 混授账号可列摘要;2) 财务付款和系统管理权限边界清楚;3) 高风险组合进入人工确认;4) 不泄露敏感字段。","流程级验证:只读核验用户角色集合;流程核对财务台账和系统管理入口权限。",manual|node,DONE,DONE,DONE,scripts/qa|server/src|client/src,"[""ORG8-2""]",本地只读 node 审计通过:finance_admin_mixed_roles=0;未发现启用账号同时持有 admin 与 finance 或 finance_mgr;未改数据。
ORG8-8,新员工账号流程,"定义新员工账号创建、角色分配、直属主管配置和企业微信绑定的操作流程。","1) 新员工从创建到可用路径清楚;2) 必填主数据明确;3) 缺主管或缺绑定有提示;4) 不记录密码明文。","流程级验证:管理员创建员工 -> 分配角色和主管 -> 员工登录或进入企业微信入口 -> 权限正确。",manual|playwright,DONE,DONE,DONE,docs/管理员手册.md|server/src|client/src,"[""ORG8-3"",""ORG8-7""]",管理员手册已固化入职和最小主数据;server 单测 users.write/import/list/patch/auth.login/workflow.permissions 通过 33 tests;覆盖创建账号、角色、主管引用、登录绑定和权限边界;未改业务代码。 ORG8-8,新员工账号流程,"定义新员工账号创建、角色分配、直属主管配置和企业微信绑定的操作流程。","1) 新员工从创建到可用路径清楚;2) 必填主数据明确;3) 缺主管或缺绑定有提示;4) 不记录密码明文。","流程级验证:管理员创建员工 -> 分配角色和主管 -> 员工登录或进入企业微信入口 -> 权限正确。",manual|playwright,DONE,DONE,DONE,docs/管理员手册.md|server/src|client/src,"[""ORG8-3"",""ORG8-7""]",管理员手册已固化入职和最小主数据;server 单测 users.write/import/list/patch/auth.login/workflow.permissions 通过 33 tests;覆盖创建账号、角色、主管引用、登录绑定和权限边界;未改业务代码。
ORG8-9,企业微信绑定流程,"收敛企业微信用户标识、OA 账号和绑定状态的流程和异常处理。","1) 绑定状态可解释;2) 未绑定提示清楚;3) 解绑或变更有审计;4) 企业微信只做入口和身份基础设施。","流程级验证:企业微信入口 -> 身份绑定检查 -> OA 角色入口 -> deeplink 返回目标页面。",manual|playwright,DONE,DONE,DONE,docs/需求-企业微信基础设施规约.md|server/src|client/src,"[""ORG8-8""]",企业微信规约已固化绑定和异常口径;server 单测 wecomAuth 11 tests 与 auth.login 1 test 通过;覆盖入口配置、未绑定回退、绑定审计、解绑审计和密码登录后自动绑定;不做企业微信原生审批。 ORG8-9,企业微信绑定流程,"收敛企业微信用户标识、OA 账号和绑定状态的流程和异常处理。","1) 绑定状态可解释;2) 未绑定提示清楚;3) 解绑或变更有审计;4) 企业微信只做入口和身份基础设施。","流程级验证:企业微信入口 -> 身份绑定检查 -> OA 角色入口 -> deeplink 返回目标页面。",manual|playwright,DONE,DONE,DONE,docs/需求-企业微信基础设施规约.md|server/src|client/src,"[""ORG8-8""]",企业微信规约已固化绑定和异常口径;server 单测 wecomAuth 11 tests 与 auth.login 1 test 通过;覆盖入口配置、未绑定回退、绑定审计、解绑审计和密码登录后自动绑定;不做企业微信原生审批。
ORG8-10,账号禁用和离职流程,"定义账号禁用、离职和权限回收流程,保护历史单据和审批记录。","1) 禁用账号不能新登录或处理新任务;2) 历史记录保留;3) 待办有转交或暂停策略;4) 回滚路径清楚。","流程级验证:禁用账号 -> 尝试登录和处理审批 -> 检查历史单据可读但不可越权操作。",manual|node|playwright,TODO,TODO,TODO,server/src|client/src|docs/管理员手册.md,"[""ORG8-5""]",涉及数据变更必须先写方案和回滚路径。 ORG8-10,账号禁用和离职流程,"定义账号禁用、离职和权限回收流程,保护历史单据和审批记录。","1) 禁用账号不能新登录或处理新任务;2) 历史记录保留;3) 待办有转交或暂停策略;4) 回滚路径清楚。","流程级验证:禁用账号 -> 尝试登录和处理审批 -> 检查历史单据可读但不可越权操作。",manual|node|playwright,DONE,DONE,DONE,server/src|client/src|docs/管理员手册.md,"[""ORG8-5""]",本地 route 注入验证通过:disable 写 archived 并撤销 session 和 SYSTEM_USER_DISABLED 审计;enable 作为回滚路径写 active 和 SYSTEM_USER_ENABLED;inactive login 返回 AUTH_003;未连接真实数据库。
ORG8-11,角色变更审计日志,"定义角色新增、移除和关键权限变化的审计日志口径。","1) 谁在何时变更了何种角色可追溯;2) 不记录密码或 token;3) 关键变更可用于排障;4) 不影响业务性能。","流程级验证:管理员变更角色 -> 查看审计摘要或日志路径 -> 验证敏感字段未入库或未打印。",manual|node,TODO,TODO,TODO,server/src|docs/开发交付与变更管理规约.md,"[""ORG8-10""]",如需新增表或字段需 Prisma 迁移方案。 ORG8-11,角色变更审计日志,"定义角色新增、移除和关键权限变化的审计日志口径。","1) 谁在何时变更了何种角色可追溯;2) 不记录密码或 token;3) 关键变更可用于排障;4) 不影响业务性能。","流程级验证:管理员变更角色 -> 查看审计摘要或日志路径 -> 验证敏感字段未入库或未打印。",manual|node,DONE,DONE,DONE,server/src|docs/开发交付与变更管理规约.md,"[""ORG8-10""]",本地 route 注入验证通过:POST /users/:id/roles 删除旧角色后写入 employee 和 finance;撤销 session;写 SYSTEM_USER_ROLES_SET 审计且 extra 仅含 roles;未连接真实数据库。
ORG8-12,后端权限护栏,"补强组织账号相关 API 的服务端授权,避免仅靠前端隐藏入口。","1) 普通员工不能访问管理员能力;2) 财务权限和管理员权限分离;3) 直属主管相关 API 校验服务端生效;4) 权限失败可追溯。","流程级验证:使用不同角色请求组织账号和财务相关 API -> 检查 403 或允许范围 -> 复跑权限回归。",node|bash|manual,TODO,TODO,TODO,server/src|server/scripts,"[""ORG8-2"",""ORG8-11""]",已有部分验证:Playwright 权限直连后端接口用例和请假采购自审/admin-only 拒绝用例通过;但 ORG8-10/11 仍未关闭,依赖未满足前本行保持 TODO。 ORG8-12,后端权限护栏,"补强组织账号相关 API 的服务端授权,避免仅靠前端隐藏入口。","1) 普通员工不能访问管理员能力;2) 财务权限和管理员权限分离;3) 直属主管相关 API 校验服务端生效;4) 权限失败可追溯。","流程级验证:使用不同角色请求组织账号和财务相关 API -> 检查 403 或允许范围 -> 复跑权限回归。",node|bash|manual,DONE,DONE,DONE,server/src|server/scripts,"[""ORG8-2"",""ORG8-11""]",Playwright 权限直连后端接口用例通过;请假采购自审和 admin-only 审批拒绝用例通过;portal 角色能力字段在 PORTAL_HOME_ENABLED=true 下通过;依赖 ORG8-10/11 已关闭。
ORG8-13,前端角色入口调整,"按角色边界调整 PC、移动和企业微信入口,避免显示不可用或越权入口。","1) 员工、审批人、财务、管理员入口符合角色;2) 前端不替代服务端授权;3) 移动视口不重叠;4) 文案不承诺冻结能力。","流程级验证:不同角色登录 PC 和移动入口 -> 检查导航和关键操作 -> 运行 typecheck/build 和必要 Playwright。",playwright|npm|manual,TODO,TODO,TODO,client/src|docs/产品设计规则.md,"[""ORG8-12""]",已有部分验证:SERVE_CLIENT_DIST=true 本地 server 下 Playwright PA6 角色入口矩阵通过;依赖 ORG8-12 未关闭,保持 TODO。 ORG8-13,前端角色入口调整,"按角色边界调整 PC、移动和企业微信入口,避免显示不可用或越权入口。","1) 员工、审批人、财务、管理员入口符合角色;2) 前端不替代服务端授权;3) 移动视口不重叠;4) 文案不承诺冻结能力。","流程级验证:不同角色登录 PC 和移动入口 -> 检查导航和关键操作 -> 运行 typecheck/build 和必要 Playwright。",playwright|npm|manual,DONE,DONE,DONE,client/src|docs/产品设计规则.md,"[""ORG8-12""]",SERVE_CLIENT_DIST=true 本地 server 下 Playwright PA6 角色入口矩阵通过;员工 主管 财务 管理员 PC 和移动入口按正式业务角色裁剪;未改前端代码。
ORG8-14,权限直连回归,"对组织账号、角色、财务、审批和企业微信入口做直连权限回归。","1) URL 直连不能越权;2) API 直连不能越权;3) 前端入口和服务端结果一致;4) 证据路径可追溯。","流程级验证:按权限直连审计记录复跑不同角色直连 URL/API -> 检查允许和拒绝结果。",bash|node|manual,TODO,TODO,TODO,scripts/qa|docs/trialrun/权限直连审计记录.md,"[""ORG8-12"",""ORG8-13""]",已有部分验证:权限入口矩阵、后端直连接口、admin-only 业务审批拒绝通过;portal 能力字段在 PORTAL_HOME_ENABLED=true 下单独通过;待 ORG8-12/13 完成后统一收口。 ORG8-14,权限直连回归,"对组织账号、角色、财务、审批和企业微信入口做直连权限回归。","1) URL 直连不能越权;2) API 直连不能越权;3) 前端入口和服务端结果一致;4) 证据路径可追溯。","流程级验证:按权限直连审计记录复跑不同角色直连 URL/API -> 检查允许和拒绝结果。",bash|node|manual,DONE,DONE,DONE,scripts/qa|docs/trialrun/权限直连审计记录.md,"[""ORG8-12"",""ORG8-13""]",SERVE_CLIENT_DIST=true 且 PORTAL_HOME_ENABLED=true 本地 server 下权限直连补跑通过:前端直连备用路径和员工自助直连 2 tests passed;此前入口矩阵 API直连 admin-only拒绝 portal能力字段均通过。
ORG8-15,组织账号试运行验收,"用代表性角色完成组织账号和权限主数据试运行验收。","1) 至少覆盖员工、审批人、财务、管理员;2) 账号启用、禁用、角色变更和绑定流程有结论;3) 阻断问题归属清楚;4) 不泄露隐私。","流程级验证:管理员配置账号 -> 员工提交业务 -> 审批人处理 -> 财务查看 -> 禁用或角色变更后复核权限。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|issues/2026-05-13_18-23-51-org8-master-data-permission.csv,"[""ORG8-14""]",可与 R7E 后续问题分流联动。 ORG8-15,组织账号试运行验收,"用代表性角色完成组织账号和权限主数据试运行验收。","1) 至少覆盖员工、审批人、财务、管理员;2) 账号启用、禁用、角色变更和绑定流程有结论;3) 阻断问题归属清楚;4) 不泄露隐私。","流程级验证:管理员配置账号 -> 员工提交业务 -> 审批人处理 -> 财务查看 -> 禁用或角色变更后复核权限。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|issues/2026-05-13_18-23-51-org8-master-data-permission.csv,"[""ORG8-14""]",可与 R7E 后续问题分流联动。
ORG8-16,ORG8 收口准备,"整理 ORG8 变更摘要、验证证据、未完成项和后续 WF8/BIZ8 影响。","1) DONE 行均有证据;2) 未完成项不伪装完成;3) 影响 WF8 的角色边界清楚;4) 文档入口同步。","流程级验证:人工核对 ORG8 CSV 状态、验证摘要、文档索引和 git diff。",manual|git,TODO,TODO,TODO,issues/2026-05-13_18-23-51-org8-master-data-permission.csv|docs/文档索引.md,"[""ORG8-15""]",对应原规划 ORG8-16。 ORG8-16,ORG8 收口准备,"整理 ORG8 变更摘要、验证证据、未完成项和后续 WF8/BIZ8 影响。","1) DONE 行均有证据;2) 未完成项不伪装完成;3) 影响 WF8 的角色边界清楚;4) 文档入口同步。","流程级验证:人工核对 ORG8 CSV 状态、验证摘要、文档索引和 git diff。",manual|git,TODO,TODO,TODO,issues/2026-05-13_18-23-51-org8-master-data-permission.csv|docs/文档索引.md,"[""ORG8-15""]",对应原规划 ORG8-16。
ORG8-CLOSE,ORG8 阶段 CLOSE,"阶段性关闭 ORG8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 ORG8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,TODO,TODO,TODO,issues/2026-05-13_18-23-51-org8-master-data-permission.csv,"[""ORG8-16""]",每个连续 CSV 保留 CLOSE 行。 ORG8-CLOSE,ORG8 阶段 CLOSE,"阶段性关闭 ORG8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 ORG8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,TODO,TODO,TODO,issues/2026-05-13_18-23-51-org8-master-data-permission.csv,"[""ORG8-16""]",每个连续 CSV 保留 CLOSE 行。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
9 ORG8-7 财务和管理员混授审计 审计财务和系统管理员角色混授风险,明确是否允许同人双角色及审计要求。 1) 混授账号可列摘要;2) 财务付款和系统管理权限边界清楚;3) 高风险组合进入人工确认;4) 不泄露敏感字段。 流程级验证:只读核验用户角色集合;流程核对财务台账和系统管理入口权限。 manual|node DONE DONE DONE scripts/qa|server/src|client/src ["ORG8-2"] 本地只读 node 审计通过:finance_admin_mixed_roles=0;未发现启用账号同时持有 admin 与 finance 或 finance_mgr;未改数据。
10 ORG8-8 新员工账号流程 定义新员工账号创建、角色分配、直属主管配置和企业微信绑定的操作流程。 1) 新员工从创建到可用路径清楚;2) 必填主数据明确;3) 缺主管或缺绑定有提示;4) 不记录密码明文。 流程级验证:管理员创建员工 -> 分配角色和主管 -> 员工登录或进入企业微信入口 -> 权限正确。 manual|playwright DONE DONE DONE docs/管理员手册.md|server/src|client/src ["ORG8-3","ORG8-7"] 管理员手册已固化入职和最小主数据;server 单测 users.write/import/list/patch/auth.login/workflow.permissions 通过 33 tests;覆盖创建账号、角色、主管引用、登录绑定和权限边界;未改业务代码。
11 ORG8-9 企业微信绑定流程 收敛企业微信用户标识、OA 账号和绑定状态的流程和异常处理。 1) 绑定状态可解释;2) 未绑定提示清楚;3) 解绑或变更有审计;4) 企业微信只做入口和身份基础设施。 流程级验证:企业微信入口 -> 身份绑定检查 -> OA 角色入口 -> deeplink 返回目标页面。 manual|playwright DONE DONE DONE docs/需求-企业微信基础设施规约.md|server/src|client/src ["ORG8-8"] 企业微信规约已固化绑定和异常口径;server 单测 wecomAuth 11 tests 与 auth.login 1 test 通过;覆盖入口配置、未绑定回退、绑定审计、解绑审计和密码登录后自动绑定;不做企业微信原生审批。
12 ORG8-10 账号禁用和离职流程 定义账号禁用、离职和权限回收流程,保护历史单据和审批记录。 1) 禁用账号不能新登录或处理新任务;2) 历史记录保留;3) 待办有转交或暂停策略;4) 回滚路径清楚。 流程级验证:禁用账号 -> 尝试登录和处理审批 -> 检查历史单据可读但不可越权操作。 manual|node|playwright TODO DONE TODO DONE TODO DONE server/src|client/src|docs/管理员手册.md ["ORG8-5"] 涉及数据变更必须先写方案和回滚路径。 本地 route 注入验证通过:disable 写 archived 并撤销 session 和 SYSTEM_USER_DISABLED 审计;enable 作为回滚路径写 active 和 SYSTEM_USER_ENABLED;inactive login 返回 AUTH_003;未连接真实数据库。
13 ORG8-11 角色变更审计日志 定义角色新增、移除和关键权限变化的审计日志口径。 1) 谁在何时变更了何种角色可追溯;2) 不记录密码或 token;3) 关键变更可用于排障;4) 不影响业务性能。 流程级验证:管理员变更角色 -> 查看审计摘要或日志路径 -> 验证敏感字段未入库或未打印。 manual|node TODO DONE TODO DONE TODO DONE server/src|docs/开发交付与变更管理规约.md ["ORG8-10"] 如需新增表或字段需 Prisma 迁移方案。 本地 route 注入验证通过:POST /users/:id/roles 删除旧角色后写入 employee 和 finance;撤销 session;写 SYSTEM_USER_ROLES_SET 审计且 extra 仅含 roles;未连接真实数据库。
14 ORG8-12 后端权限护栏 补强组织账号相关 API 的服务端授权,避免仅靠前端隐藏入口。 1) 普通员工不能访问管理员能力;2) 财务权限和管理员权限分离;3) 直属主管相关 API 校验服务端生效;4) 权限失败可追溯。 流程级验证:使用不同角色请求组织账号和财务相关 API -> 检查 403 或允许范围 -> 复跑权限回归。 node|bash|manual TODO DONE TODO DONE TODO DONE server/src|server/scripts ["ORG8-2","ORG8-11"] 已有部分验证:Playwright 权限直连后端接口用例和请假采购自审/admin-only 拒绝用例通过;但 ORG8-10/11 仍未关闭,依赖未满足前本行保持 TODO。 Playwright 权限直连后端接口用例通过;请假采购自审和 admin-only 审批拒绝用例通过;portal 角色能力字段在 PORTAL_HOME_ENABLED=true 下通过;依赖 ORG8-10/11 已关闭。
15 ORG8-13 前端角色入口调整 按角色边界调整 PC、移动和企业微信入口,避免显示不可用或越权入口。 1) 员工、审批人、财务、管理员入口符合角色;2) 前端不替代服务端授权;3) 移动视口不重叠;4) 文案不承诺冻结能力。 流程级验证:不同角色登录 PC 和移动入口 -> 检查导航和关键操作 -> 运行 typecheck/build 和必要 Playwright。 playwright|npm|manual TODO DONE TODO DONE TODO DONE client/src|docs/产品设计规则.md ["ORG8-12"] 已有部分验证:SERVE_CLIENT_DIST=true 本地 server 下 Playwright PA6 角色入口矩阵通过;依赖 ORG8-12 未关闭,保持 TODO。 SERVE_CLIENT_DIST=true 本地 server 下 Playwright PA6 角色入口矩阵通过;员工 主管 财务 管理员 PC 和移动入口按正式业务角色裁剪;未改前端代码。
16 ORG8-14 权限直连回归 对组织账号、角色、财务、审批和企业微信入口做直连权限回归。 1) URL 直连不能越权;2) API 直连不能越权;3) 前端入口和服务端结果一致;4) 证据路径可追溯。 流程级验证:按权限直连审计记录复跑不同角色直连 URL/API -> 检查允许和拒绝结果。 bash|node|manual TODO DONE TODO DONE TODO DONE scripts/qa|docs/trialrun/权限直连审计记录.md ["ORG8-12","ORG8-13"] 已有部分验证:权限入口矩阵、后端直连接口、admin-only 业务审批拒绝通过;portal 能力字段在 PORTAL_HOME_ENABLED=true 下单独通过;待 ORG8-12/13 完成后统一收口。 SERVE_CLIENT_DIST=true 且 PORTAL_HOME_ENABLED=true 本地 server 下权限直连补跑通过:前端直连备用路径和员工自助直连 2 tests passed;此前入口矩阵 API直连 admin-only拒绝 portal能力字段均通过。
17 ORG8-15 组织账号试运行验收 用代表性角色完成组织账号和权限主数据试运行验收。 1) 至少覆盖员工、审批人、财务、管理员;2) 账号启用、禁用、角色变更和绑定流程有结论;3) 阻断问题归属清楚;4) 不泄露隐私。 流程级验证:管理员配置账号 -> 员工提交业务 -> 审批人处理 -> 财务查看 -> 禁用或角色变更后复核权限。 manual|playwright TODO TODO TODO docs/trialrun/人工试运行报告.md|issues/2026-05-13_18-23-51-org8-master-data-permission.csv ["ORG8-14"] 可与 R7E 后续问题分流联动。
18 ORG8-16 ORG8 收口准备 整理 ORG8 变更摘要、验证证据、未完成项和后续 WF8/BIZ8 影响。 1) DONE 行均有证据;2) 未完成项不伪装完成;3) 影响 WF8 的角色边界清楚;4) 文档入口同步。 流程级验证:人工核对 ORG8 CSV 状态、验证摘要、文档索引和 git diff。 manual|git TODO TODO TODO issues/2026-05-13_18-23-51-org8-master-data-permission.csv|docs/文档索引.md ["ORG8-15"] 对应原规划 ORG8-16。
19 ORG8-CLOSE ORG8 阶段 CLOSE 阶段性关闭 ORG8,完成状态回填、验证摘要和中文提交。 1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 ORG8;5) 后续风险有归属。 流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。 python3|git|manual TODO TODO TODO issues/2026-05-13_18-23-51-org8-master-data-permission.csv ["ORG8-16"] 每个连续 CSV 保留 CLOSE 行。