# 全量审计对照修复（C2 / C9）

**日期**: 2026-05-23

## C2 — 认证审计日志字段

`server/application/services/auth_service.py`：

- `_audit()` 写入 `admin_username`、`ip_address` 列（不再仅堆在 detail 字符串里）
- 登录/刷新/登出/TOTP/WebSSH 等调用点传递对应用户名与 IP

## C9 — WebSocket 告警重复投递

`server/api/websocket.py`：

- 新增 `_dispatch_ws_message()`：Redis Pub/Sub 活跃时 **仅 publish**，由本 worker 的 subscriber 调用一次 `broadcast_local`
- Redis 不可用时回退为直接 `broadcast_local`
- `broadcast_alert` / `broadcast_recovery` / `broadcast_system_event` 均改用该路径

## 文档

- `docs/reports/audit-full-vs-phase2-reconciliation.md` — 全量 C1–C12 对照表
