# 账号外部身份源连续性审计 审计日期:2026-07-23。范围覆盖账号目录、外部身份详情、身份映射缺失、桌面侧栏和移动端底部侧栏。 ## 结论 1. 修复了本地接口 404 被伪装成“还没有客户账号”的异步状态错误。真实失败现在明确说明“这不是空目录”,保留筛选并提供原位重试。 2. `DATA_MODE=mock` 且未启用 SQL 身份库时提供可操作的本地账号目录,覆盖本地账号、已连接 OneOS、缺少映射的 RuoYi 和停用账号;创建、编辑、批量预检/创建仍可在本地验证。 3. 目录新增本地/外部身份数量与“身份待关联”状态;身份源进入搜索范围,缺少映射不再被菜单或车辆就绪状态掩盖。 4. 编辑器展示身份源、脱敏外部主体、映射状态与凭据归属。外部登录密码、锁定和多因素认证明确归属上游,本平台继续维护启停、菜单和车辆范围。 5. 外部身份密码输入在前端只读,生产 SQL 路径与本地演示路径都以 `EXTERNAL_IDENTITY_PASSWORD_READ_ONLY` 拒绝越界写入。 ## 当前运行证据 - 基线桌面:[目录错误被伪装为空目录](before/01-desktop-directory-error-as-empty.png) - 基线移动端:[移动目录错误被伪装为空目录](before/02-mobile-directory-error-as-empty.png) - 改进桌面:[真实账号目录与身份状态](after/01-desktop-directory.png) - 改进桌面:[OneOS 映射与凭据归属](after/02-desktop-external-identity.png) - 改进桌面:[RuoYi 映射缺失与处置说明](after/03-desktop-identity-warning.png) - 改进移动端:[紧凑账号目录](after/04-mobile-directory.png) - 改进移动端:[外部身份详情](after/05-mobile-external-identity.png) - 同屏对照:[桌面前后对照](comparison-desktop-before-after.png) · [移动端前后对照](comparison-mobile-before-after.png) ## 验证 - 1440 × 980:目录、已连接外部身份、缺失映射告警均通过真实浏览器检查。 - 390 × 844:目录单滚动、详情固定操作区和外部身份摘要通过真实浏览器检查。 - 语义:身份映射使用 `status` / `alert`;外部凭据输入为 disabled;目录条目无障碍名称包含身份源与映射状态;从目录打开后关闭详情会把焦点返回原账号按钮。 - 自动化:`UsersPage.test.tsx` 20 项通过;Web 生产构建通过;`apps/api/internal/app` 测试通过。 ## 已知边界 - 当前没有可写的上游身份适配器管理接口,因此缺失映射只能说明上游/适配器处置边界,不能在本平台直接补写外部主体。 - 外部身份真实同步延迟、重复主体冲突和上游停用回流仍需要生产身份源样本验证。 - 本轮完成语义 DOM、键盘焦点和禁用态验证,未执行 VoiceOver/NVDA 人工听读;由深链直接打开详情时没有原始触发按钮,关闭后焦点回到页面主体。