Skip to main content

Module security_resolver

Module security_resolver 

Source
Expand description

v1.4.106 codex 1148 F5 (P2): 统一 stock_id ↔ Security 双向解析入口。

C++ 对照:

  • APIServer_Inner_API.cpp:604 GetStockID(Security, &stock_id) — Security → stock_id
  • APIServer_Inner_API.cpp:669 GetAPIStock(stock_id, &Security) — stock_id → Security
  • 两者底层都查 INNBiz_Qot_SecList::SearchSecBy{Code,ID}, 失败语义清晰 (enReturnRet != Ok 即 fail), 不 silent drop。

Rust 早期实装曾把 id_to_key / securities 作为公开索引给 caller 直接读写;当前 StaticDataCache 已把核心索引私有化,写路径统一走 upsert_* / delete_security_info,读路径通过 cache helper 或本 resolver。 这层 resolver 保留的价值是把 “本地 cache miss” vs “backend 真返空” 的 语义显式化,避免 caller 用 filter_map / continue / 空 list 把异常吞成 ret_type=0

本 module 提供:

  1. bidir APIresolve_stock_id_by_security / resolve_security_by_stock_id
  2. loud miss — miss 时 bump counter (resolver_miss_total), 加 stale mark (复用 mkt_id refresh 路径)
  3. 明确返 enum 区分 hit / miss / unsupported — caller 必处理 miss (要么 reject, 要么 partial marker, 要么 trigger refresh)

当前 caller 边界:

  • request-side Security → stock_id 路径优先使用 cache helper / resolver fail-closed,例如 GetReference / GetBroker / Warrant / FutureInfo;
  • push-side backend stock_id → public Security 仍需要按事件类型决定: quote push 可以 partial/drop 并打日志,request/response handler 不能把 miss 投成成功空结果;
  • 若新增 caller 需要 stock_id 双向解析,先选本 resolver 或 StaticDataCache::get_security_info_by_stock_id(),不要重新读取底层索引。

Structs§

SecurityRef
轻量 Security 引用 (避免 caller 必须用 prost-generated 类型)。
SecurityResolver
v1.4.106 codex 1148 F5 (P2): 统一 stock_id ↔ Security 双向解析。

Enums§

ResolverErr
stock_id ↔ Security 解析失败的原因。