Skip to main content

Module key_enums

Module key_enums 

Source
Expand description

gen-key / bind-key 共用 enum / CSV 解析器

v1.4.106 codex 0608 F5 (P3) sweep — 从 gen_key.rs / bind_key.rs 抽出 enum / 字面量解析, 替代松散的 parse_csv (any-string-OK) 与每个 字段独立大小写归一化, 让早期 reject 取代 silent stash:

  • trd_sides: BUY / SELL / SELL_SHORT / BUY_BACK 等 backend 枚举严格匹配
  • markets: HK / US / CN / HKCC / FUTURES / SG / AU / JP / MY / CA / HKFUND / USFUND / CRYPTO (大小写归一化为 upper, 别名 HK_FUND / US_FUND / CC 仍接受) — 与 cmd::account::parse_trd_market 对齐已支持的 trade/QOT surface 语义
  • symbols: MARKET.CODE 形式校验 (e.g. “HK.00700”); MARKET 必须 是上述合法 market 列表的一个, CODE 不能为空 — 拒绝 “07000” / “AAPL” / 单纯 “HK” 等显然漏写市场前缀的 input
  • machine_csv: 64-hex 指纹严格校验 (失败早 fail) — 复用 gen-key / bind-key 的格式约束

parse_csv 的差别: 这里对每个 token loud reject 不合法 input, 不再 silent insert “随便什么字符串” 进 HashSet<String> 然后留给 daemon / backend 拒绝. 与 v1.4.93 BUG-001 修法 (schema-runtime layer 双 layer 对齐, pitfall #54) 同精神 — CLI 是离 daemon 的第一道闸门, 早期严格 = 后续少 silent.

空 CSV 语义 (与 v1.4.104 eli P2-008 fix 一致): 全空 token (e.g. “ ,,“ / “ “) 解析后是空集 → 调用方应显式拒绝, 不 silently stash 空集 (空集 在 daemon 端可能被当 “无限制” sentinel, silent inverse). 见 parse_strict_csv_non_empty helper 文档.

Constants§

ALLOWED_MARKETS 🔒
Trd market 合法集 — 与 backend Trd_Common.proto::TrdMarket enum 对齐 已支持 variant. 与 cmd::account::parse_trd_market 同源 (单一 source of truth).
ALLOWED_TRD_SIDES 🔒
Trd side 合法集 — 与 backend Trd_Common.proto::TrdSide enum 对齐.

Functions§

canonicalize_market 🔒
别名 → 规范名映射 (额外接受 HK_FUND / US_FUND / CC).
parse_fingerprints_csv
解析 64-hex 指纹 CSV → Vec<String> (保序去重由调用方做).
parse_markets_csv
解析 --allowed-markets CSV → HashSet<String> (canonical names).
parse_symbols_csv
解析 --allowed-symbols CSV → HashSet<String> (uppercase).
parse_trd_sides_csv
解析 --allowed-trd-sides CSV → HashSet<String> (uppercase).