feat(web3): 查询改分页拉取 + 中断按钮 + 后端 session 隔离
把原来 /api/queries/run 单次同步全表扫描改成 3 个端点: POST /api/queries/start COUNT + 编译规则 + 建 session(UUID) POST /api/queries/page 按页号拉一页,跑规则,只返回不合规的行 POST /api/queries/cancel 摘掉 session(best-effort 中断) session_manager.py 用模块级 dict + Lock 存 QuerySession,TTL 30min 懒清理。 每页新开 DBConnection → fetchall(避开 cursor 生命周期管理),~50ms 重连可接受。 dialect 兼容: mysql : LIMIT <n> OFFSET <m> dameng : OFFSET <m> ROWS FETCH NEXT <n> ROWS ONLY (SQL:2008) oracle : ROWNUM 三层嵌套(兼容 11g/10g;T4 任务实测 11g 服务端用 OFFSET/FETCH NEXT 报 ORA-00933) postgres / sqlserver : 同 dameng 前端友好的关键点: - /start 一次返回 fields(含 rule_list + field_comment),前端 resultFields 不再变 - 后端给每行注入 __row_index = (page_no-1)*page_size + idx,给前端做 Vue row-key - /page 失败不摘 session,让前端可以重试或走 /cancel 测试:新增 web3/tests/test_queries.py 15 条(start / page / cancel / paginate_sql / 并发 / TTL), 老的 test_run_query_only_bad_rows.py 和 test_rule_types_e2e.py 适配新端点(删 max_rows 那条, end-to-end 改成 /start + /page 聚合)。73 条全过。
Showing
This diff is collapsed.
web3/tests/test_queries.py
0 → 100644
This diff is collapsed.
This diff is collapsed.
Please register or sign in to comment