Skip to main content

Module page_bounds

Module page_bounds 

Source
Expand description

共享分页 / 边界 validator (v1.4.106 codex 0635 整体重构, ζ36)

历史背景: codex 0635 audit (5 P2) 揭示 QOT 分析 / 参考类查询的分页 / 边界 校验四处不一致:

  • F1 [P2]: warrant MCP/CLI wrapper 没暴露 begin (硬编码 0), 用户拿不到分页
  • F2 [P2]: GetWarrantHandler 直透 begin/num 不校验, REST/raw caller 可发非法值
  • F3 [P2]: warrant + stock-filter MCP/CLI wrapper 静默 clamp num (1, 200)
  • F4 [P2]: stock-filter num=0 跨 surface 行为不一致 (MCP clamp 1 / REST silent empty)
  • F5 [P2]: history-kline schema 写 default 1000 实际不限制

audit 自己建议抽 PageBounds / validate_begin_num / validate_optional_max_count 共享分页契约. 本模块实装该契约, 落点:

  • MCP wrapper: tool 入参先校验, 错走 Err
  • CLI wrapper: 越界返 Err, 不静默改写
  • gateway handler: 最终边界再校验, 防 REST/raw/gRPC/WS 直 proto caller
  • schema/help: 只写真实运行契约

C++ 对照: 各 handler 校验在 NNBiz/Src/Qot/StockScreener/NNBiz_Qot_StockScreener.cpp (CMD 9010 begin/num validation) 及 NNBiz_Qot_Warrant.cpp (CMD 6513 data_from / data_max_count validation). C++ backend 拒非法值 (loud reject), Rust daemon 提前到入口拦截 减少 backend 往返 + 给用户清晰中文错误.

Structs§

PageBounds
分页参数校验结果. 越界 / 非法返 PageBoundsError, 校验通过返 PageBounds.
PageBoundsError
校验失败原因.

Enums§

PageBoundsErrorReason

Functions§

validate_begin_num
校验 (begin, num) 分页参数. C++ 对应做法是 backend 收到非法值返 result_code != 0, daemon 提前 loud reject 减少 backend 往返.
validate_optional_max_count
校验 Option<i32> max_count (history-kline 类) 参数.