[ ok ] A1.1 首页渲染 + 名册表有行 | rows=10 canvas=2
[ ok ] A1.2 首页无 HTTP>=400 | 0 条
[ ok ] A2.1 合规检测 违规承诺 → BLOCK | 命中 BLOCK
[ ok ] A2.2 复制门闸 Tab1 检测后自动回填（有序依赖） | summary="本产品保本保收益，绝对不会亏。" level=BLOCK
[ ok ] A2.3 复制门闸 BLOCK 内容 → 拒绝导出 | 已拒绝导出
[ ok ] A2.4 复制门闸 INFO 内容 → 放行并出 use_id | 回执出现
[ ok ] A2.5 输入防护 注入样例 → prompt_injection | 命中：prompt injection
[ ok ] A3.1 话术模板 搜「亏损」有行 | rows=10
[ ok ] A3.2 话术模板 match_type（D3 定性） | match_type=["hybrid","hybrid","hybrid","hybrid","semantic","semantic","semantic","semantic","semantic","semantic"]（若全为 keyword 则语义检索未生效）
[ ok ] A3.3 话术模板 引用 → use_id | use_id=use_0311b932446f424ea55f9407759fa399
[ ok ] A4.1 KYC 创建会话 | 创建成功
[ ok ] A4.2 KYC 发送采集（D2 取证） | 未报错
[ ok ] A5.1 市场异动 查净值 000001（D1 回归） | 净值快照渲染
[ ok ] A5.2 市场异动 扫描 + 列表 | rows=5
[ ok ] A5.3 市场异动 生成解读 → 四段式 | 命中段=["【异动概述】","【原因分析】","【当前建议】","【风险提示】"] len=295
[ ok ] A5.4 市场异动 采纳（adopt） | HTTP 200
[ ok ] A6.1 BUG-1 回归：点击登录（无 reload 兜底） | 未出现 ErrorBoundary

===== 09 顾问前端: 17 PASS / 0 FAIL / 0 SKIP =====
