Skip to main content

ek_data/
event.rs

1//! 总线事件字典:enkeep 原稿 `trader/event.py` 的字面常量移植。
2//!
3//! 命名规则(enkeep 实况):
4//! - **前缀型**(逐合约流,以 `.` 结尾,后接 vt_symbol):
5//!   `eTick.` / `eBar.` / `eOrder.` / `eTrade.` / `ePosition.` /
6//!   `eAccount.` / `eContract.`
7//! - **一字面型**(全局流):`eLog` 等。
8//!
9//! 注意区分:`eTick.` 属业务事件字典,与前两 crate 的
10//! `ePlugUp.*`(后缀型)、`eReq.<target>` 与 `eTimer` 属 ek-core/ek-event 域。
11//! 专嘱流(eTradeSync./ePositionDone./eQuote./eProduct./eSector.… 与
12//! 下载/股票池/K线图等 UI 流)属 OMS/UI 批次,defer(DESIGN.md §2)。
13
14/// 行情逐合约流,载荷 [`crate::tick::TickData`](`event.py:7`)。
15pub const EVENT_TICK: &str = "eTick.";
16/// K 线逐合约流,载荷 [`crate::bar::BarData`](`event.py:12`)。
17pub const EVENT_BAR: &str = "eBar.";
18/// 委托逐合约流,载荷 [`crate::order::OrderData`](`event.py:14`)。
19pub const EVENT_ORDER: &str = "eOrder.";
20/// 成交逐合约流,载荷 [`crate::trade::TradeData`](`event.py:13`)。
21pub const EVENT_TRADE: &str = "eTrade.";
22/// 持仓逐合约流,载荷 [`crate::position::PositionData`](`event.py:15`)。
23pub const EVENT_POSITION: &str = "ePosition.";
24/// 账户流,载荷 [`crate::account::AccountData`](`event.py:18`)。
25pub const EVENT_ACCOUNT: &str = "eAccount.";
26/// 合约流,载荷 [`crate::contract::ContractData`](`event.py:20`)。
27pub const EVENT_CONTRACT: &str = "eContract.";
28/// 日志全局流,载荷 [`crate::log::LogData`](`event.py:24`;enkeep 原稿不带点)。
29pub const EVENT_LOG: &str = "eLog";
30
31#[cfg(test)]
32mod tests {
33    use super::*;
34
35    /// 前缀型必须以 `.` 结尾(逐合约前缀路由的守卫;event.py 字面值逐一对齐)。
36    #[test]
37    fn prefix_consts_end_with_dot() {
38        assert_eq!(EVENT_TICK, "eTick.");
39        assert_eq!(EVENT_BAR, "eBar.");
40        assert_eq!(EVENT_ORDER, "eOrder.");
41        assert_eq!(EVENT_TRADE, "eTrade.");
42        assert_eq!(EVENT_POSITION, "ePosition.");
43        assert_eq!(EVENT_ACCOUNT, "eAccount.");
44        assert_eq!(EVENT_CONTRACT, "eContract.");
45    }
46
47    /// 一字面型不得带点:`eLog`(event.py:24 原稿实况)。
48    #[test]
49    fn exact_consts_have_no_dot() {
50        assert_eq!(EVENT_LOG, "eLog");
51    }
52}