feat(web2): IdCardTool UI — 折叠结果面板 + 弃用 SSE 改轮询 + done 分支兜底
- 弃用 SSE(EventSource)
- 原方案 push 大 payload + Vue 响应式触发 1000+ 行 el-table 重渲,主线程卡 2s+ 导致页面「无响应」
- 改为 setInterval(1000ms) 轮询 + 立即首次触发
- 删除大进度卡片(3 指标 + el-progress)
- 改为单行扫描提示:Loading 图标 + 「已发现 X 张问题表 / Y 行违规(Zs)」
- 结果区改为 el-collapse 折叠面板(每张表一个 collapse-item)
- 新增 violationsByTable + liveBadRowCount 两个 ref(模板读这两个,不直接读 scanResult)
- polling 累加 + done 兜底:
- running 阶段 partial 来的表 push 到 violationsByTable(dedupe by renderedTableNames Set)
- done 分支兜底:若 violationsByTable 为空,从 data.response.violations_by_table 同步灌入
(解决扫描太快<1s 时 running partial 没机会被观察到的问题)
- 错误处理:
- 404 = scan_id 过期(10 分钟 TTL),友好提示
- 网络瞬断不停轮询,下次自动恢复
Showing
This diff is collapsed.
Please register or sign in to comment