纠偏(08-23-production-fact-source-corrections): 更新当前生产事实源
这个提交包含在:
@@ -35,7 +35,7 @@
|
||||
- [x] 曾按用户初次指令将唯一 active `manager` 的直属主管设为 `wangshunli`;用户随后澄清其仅为系统开发/系统管理员,该中间关系需按最终职责口径修正。
|
||||
- [x] 只读确认唯一 active `manager` 与 `majianyong` CEO 账户,排除自环/环路后原子将 `direct_manager_id` 从 `wangshunli` 修正为 `majianyong`、写脱敏审计,并复核组织链;不改角色、邮箱、密码、binding 或企微通讯录。
|
||||
- [x] 只读解析手工企微通讯录导出并与生产 OA 对账:6 个 userid/binding 和 6 个企业邮箱全部精确一致,缺失、重复、冲突、未匹配和需修改数均为 0。
|
||||
- [x] 只读确认 `majianyong` 保持 `ceo` 且无直属主管、`wangshunli` 不新增业务审批角色;生产只有 active `finance`、没有 active `finance_mgr`,CEO 本人报销在后续最小权限修正前保持阻断。
|
||||
- [x] 只读确认 `majianyong` 保持 `ceo` 且无直属主管、`wangshunli` 不新增业务审批角色;生产只有 active `finance`、没有 active `finance_mgr`。更早完成的 `07-28-ceo-finance-fallback` 已使代码兼容 `finance|finance_mgr` 并将生产三档规则回填为 `finance`,CEO 本人三档均只读解析为唯一 active 非本人 `finance`;本轮未创建真实 CEO 报销。
|
||||
- [x] 更新现有管理员手册/试运行 checklist:active 账号启用必须包含安全凭据交付、首次改密、密码登录和企微本人免登。
|
||||
- [x] 运行认证聚焦测试、前端 typecheck/build、Trellis task/governance、敏感扫描、文档审计和 `git diff --check`;获批后已完成腾讯云真实生产发布与公网 smoke。
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
- [x] 使用既有部署标准入口发布 `7b86ffb`,固定 `SYNC_ENV=0`、`DEPLOY_DATA_MODE=existing`;未覆盖生产 `.env`,未执行 reset、db push、手工 DDL 或业务写入。
|
||||
- [x] 部署后 Prisma、`/ready`、运行构建、企业微信/SMTP/OCR/消息桥接契约、runtime smoke、公网 bundle 扫描与备份合同 refresh 均通过;Compose 保持 `server=1、worker=0`,未启动 worker。
|
||||
- [x] 无凭据真实浏览器公网复核通过:根入口登录页可见,密码框 Tab 直接进入“忘记密码?”链接,点击后忘记密码页面正常打开;未登录账号、未发送验证码、未写生产数据。
|
||||
- [ ] 直接请求或刷新 `/login`、`/forgot-password` 当前返回 404;从 OA 根入口的 SPA 实际流程正常。本问题不由本次 Tab 改动引入,后续应单独治理反向代理/静态资源 history fallback,不在本任务内扩大变更。
|
||||
- [x] 纠正发布后探针误判:默认 `Accept: */*` 的纯 HTTP 客户端请求两个路由可返回 404,但全新且禁用 Service Worker 的真实浏览器直接进入时均返回 200、目标页面可见;已有 Service Worker 的首次进入和刷新也均为 200,用户本人刷新未见 404。因此不存在用户可见的 history fallback finding,无需创建对应修复任务。
|
||||
|
||||
## 5. Stop Conditions
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
- 任何 binding 修正必须先证明目标 OA 员工和企微 userid 唯一对应;不得按姓名模糊匹配,不得修改企业微信通讯录成员。
|
||||
- 生产 binding、密码、账户状态或认证配置写入前另行给出精确变更清单并取得批准。
|
||||
- 最终业务职责以用户最新确认口径为准:`majianyong` 是 `ceo`,`wangshunli` 仅承担系统开发和系统管理,不是业务审批人;当前唯一 active `manager` 的 OA 直属主管应为 `majianyong`。
|
||||
- `majianyong` 本人报销不配置直属主管、不允许自审,目标由 active 非本人 `finance` 审批;当前实现只支持 `finance_mgr` 且生产无持有人,本轮保持失败关闭并记录后续最小权限修正,不修改任何角色、邮箱、密码、binding、审批规则或企微通讯录。
|
||||
- `majianyong` 本人报销不配置直属主管、不允许自审,目标由 active 非本人 `finance` 审批;已归档 `07-28-ceo-finance-fallback` 证明当前实现兼容 `finance|finance_mgr`、默认和生产三档规则均为 `finance`,三档只读解析均为唯一 active 非本人 `finance`。无 active 非本人持有人、CEO 同时持有 fallback 角色或规则漂移时仍失败关闭;本任务不修改任何角色、邮箱、密码、binding、审批规则或企微通讯录。
|
||||
- 认证页密码框的顺序 Tab 行为采用“当前密码输入框 → DOM 中下一个顺序表单控件”;框内显示/隐藏按钮保留鼠标、触屏和辅助技术语义,但不占普通连续填表的 Tab 次序。登录页的“忘记密码?”链接仍保持键盘可达,不通过正数 `tabIndex` 重排其他控件。
|
||||
|
||||
## Decision: Credential Recovery
|
||||
@@ -91,11 +91,11 @@
|
||||
- [x] 不存在 active 账户同时缺少密码找回能力和可用企微 binding;当前 6/6 均已有经本人验证的企微主入口,密码找回系统能力已有代表性生产 PASS,实际真人密码回退覆盖为 4/6。
|
||||
- [x] 本任务实际发生的重置、绑定、解锁和会话撤销均有 OA 审计;生产复核未发现角色扩张或企业微信通讯录写入。
|
||||
- [x] 当前唯一 active `manager` 的直属主管唯一解析为 active `majianyong`,不存在自环或主管链环路,并有脱敏审计;`wangshunli` 不进入业务审批链。
|
||||
- [x] `majianyong` 保持 `ceo` 且无直属主管;其本人报销目标为 active 非本人 `finance`,当前 `finance_mgr` 配置缺口未修复前保持阻断且不发生自审。
|
||||
- [x] `majianyong` 保持 `ceo` 且无直属主管;已部署规则使其本人三档报销均唯一解析到 active 非本人 `finance`,不发生自审;本轮未创建真实 CEO 报销,因此该结论是生产规则与只读解析验收,不是真人报销证据。
|
||||
- [x] 自动化、Trellis、敏感扫描、生产 `/ready` 和关联认证 smoke 已通过;未实测人员未来需要时可使用同一找回流程,但本轮不要求逐人操作。
|
||||
- [x] 登录、修改密码和忘记密码页的密码框按 Tab 跳过框内显示/隐藏按钮并进入 DOM 中下一个顺序表单控件;显示/隐藏按钮仍可点击、保留稳定可访问名称,且切换不丢失输入值。
|
||||
|
||||
当前员工可测试边界:生产邮件能力、公网 `/ready`、认证 capabilities 与 SMTP 连接/认证已通过;已有 1 名首次改密人员完成全链路,另外 2 人按批准不要求本轮逐人实测,仅记为预计可用。其本人未来使用找回流程时仍不得在聊天中传递密码或验证码,不连续点击重发;新签发验证码会使旧验证码失效。公网根入口到登录、忘记密码页面及密码框 Tab 行为已通过真实浏览器复核;直接刷新前端子路由的 history fallback 另行治理,不属于本任务登录能力和 Tab 改动的验收范围。
|
||||
当前员工可测试边界:生产邮件能力、公网 `/ready`、认证 capabilities 与 SMTP 连接/认证已通过;已有 1 名首次改密人员完成全链路,另外 2 人按批准不要求本轮逐人实测,仅记为预计可用。其本人未来使用找回流程时仍不得在聊天中传递密码或验证码,不连续点击重发;新签发验证码会使旧验证码失效。公网根入口、浏览器直接进入和刷新登录/忘记密码页面,以及密码框 Tab 行为均已通过真实浏览器复核。默认 `Accept: */*` 的纯 HTTP 探针返回 404 不能代表浏览器导航,不形成 history fallback 产品 finding。
|
||||
|
||||
## Definition of Done
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户