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::TrdMarketenum 对齐 已支持 variant. 与cmd::account::parse_trd_market同源 (单一 source of truth). - ALLOWED_
TRD_ 🔒SIDES - Trd side 合法集 — 与 backend
Trd_Common.proto::TrdSideenum 对齐.
Functions§
- canonicalize_
market 🔒 - 别名 → 规范名映射 (额外接受
HK_FUND/US_FUND/CC). - parse_
fingerprints_ csv - 解析 64-hex 指纹 CSV →
Vec<String>(保序去重由调用方做). - parse_
markets_ csv - 解析
--allowed-marketsCSV →HashSet<String>(canonical names). - parse_
symbols_ csv - 解析
--allowed-symbolsCSV →HashSet<String>(uppercase). - parse_
trd_ sides_ csv - 解析
--allowed-trd-sidesCSV →HashSet<String>(uppercase).