36 lines
2.9 KiB
Markdown
36 lines
2.9 KiB
Markdown
# 账号外部身份源连续性审计
|
||
|
||
审计日期: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 人工听读;由深链直接打开详情时没有原始触发按钮,关闭后焦点回到页面主体。
|