Expand description
§ek-ui —— ek 生态常驻主界面(DV-1:egui/eframe 0.33;方案 docs/ek-ui-station-plan.md)。
定位(UI 即插件):常驻窗口不是宿主外壳,而是一个普通插件(ui)——
插件面走总线收 eLog/ePlugUp/ePlugDown/eTimer 维护共享快照(UiShared),
窗口面(eframe App)只读快照渲染。两边经 Arc<UiShared> 相连,零自制通道。
分层
state:共享观测状态(环形日志 + 服务快照 + 行情库 + 交易帧 + revision);plugin:UiPlugin(总线面;eTimer 1s 节流拉 svctl.list + oms 全量查询组快照);render:render_body(唯一渲染入口,真实 App 与 kittest 共用 —— L2);runtime:ui_kinds(default_kinds + ui 工厂)/spawn_host_watcher(宿主观察线程;窗口关闭置 stop → close_all)/run_station_ui(进程主入口, S1c 起带--ready-file标记位);- 纸面网关 0.2.9 曾住独立网关包 ek-paper(BD-UI-36);0.2.10 起【退场】 (BD-UI-38 用户裁定:ctp/SimNow 两套前置满足需求,本包不再引用);
pick/launch/launcher/launcher_ui(S1c 启动器:清单写读、spawn+boot-wait、--pick选窗与控制器)。
配置纪律(2026-10-17 用户定盘):ek-ui 零配置 + 宿主零配置 —— 不读任何
配置文件,界面本身无设置;插件结构只由 --from 清单或 demo 缺省决定(结构面
归 station 工厂表 + 清单)。需配置的插件(唯一 = ek-ctp 虚拟账号)其配置面
归插件自身,激活时在插件内完成;setting/ 目录已整树清理,插件配置自持
(原 S3 配置面 cfg 模块已整块撤销,见 DESIGN BD-UI-19)。
自动化验收(kittest 官方工具,egui 0.33 同版):L3 全走
Harness::builder().build(|ctx| render_body(ctx, &shared))(ctx 级,
面板组合在 render_body 内,BD-UI-29)+ AccessKit 节点断言/点击;
静态布局首帧快照入库;人工核查 0 项。
§版本边界
0.1.0(S1a→S5 全部落地):观测页/日志页/启动器/svctl 操作页/行情面/K 线/ 交易监控全接入;配置面撤销(零配置口径);发布面向 crates.io 装版互引 (ek-station 0.1.2)。
bin ek-ui 参数:(无参) demo 窗(dm/oms/ui)/ --pick 选窗启动 /
--from <清单> --ready-file <标记>(launcher 协议)/ 未知参数 usage exit 2。
Re-exports§
pub use fonts::CJK_FONT_NAME;pub use fonts::apply_cjk_fonts;pub use launch::LaunchFail;pub use launch::spawn_detached;pub use launch::wait_ready;pub use launcher::run_pick_launcher;pub use launcher_ui::pick_kinds;pub use launcher_ui::render_pick;pub use plugin::UiPlugin;pub use render::render_body;pub use runtime::run_station_ui;pub use runtime::spawn_host_watcher;pub use runtime::ui_kinds;pub use state::BusSnap;pub use state::CtpForm;pub use state::LogRing;
Modules§
- appconfig
- 无界面一次性写档共用面(0.9.0;BD-APP-2/4):
ekapp add-accountCLI 与 等效判据(tests/ui_app_contract.rs)共用同一构造函数 —— 判据钉的 就是「CLI 写出的段,喂给真受理方法apply_config必被全采纳」。 - faces
- faces —— 插件界面挂载表(「插件即 App」波 P4)。
- fonts
- CJK 字体回退(BD-UI-26):epaint 0.33 缺省字体组(Hack / Ubuntu-Light / NotoEmoji-Regular / emoji-icon-font)没有任何中文字形 —— 界面中文 直接渲染成豆腐块/乱码(2026-10-18 用户实窗报障)。
- format
- 0.3.1 Wave D(BD-UI-49):展示面数字与时间格式的唯一口径。
- launch
- spawn + 就绪等待(launcher 的子进程协议核心)。
- launcher
--pick主流程(launcher 控制器):选窗 → 写清单 → spawn 子进程(ek-ui --from <清单> --ready-file <标记>)→ 就绪等待 → 成功放手 / 失败聚合退出。- launcher_
ui - pick 窗体:纯渲染入口(L2/kittest 目标)+
PickApp(eframe App 状态机)。 - pick
- pick 地面(BD-UI-15):语义统一在
ek_station::pickfile(装版引用, ek-station 0.1.1 起)。本模块只保留生态惯用别名,launcher/bin/测试共此一处, 不再存在双实现。 - plugin
UiPlugin—— 总线面:eLog入环形日志、ePlugUp/Down记事件 + rev、eBar./eBarUpdate.记行情库(K线窗数据面)、eTick.记 tick 库(v4 行情带 唯一源,S7 上屏地面)、eContract./eContractFinish记合约表, 0.5 M1 起eOrder./eTrade./ePosition./eAccount.四条推送线入交易账本 (基线 BaseMonitor 同形:后台只 put,界面自己 process_event)。eTimer(1s 宿主自带)那一拍只做三件事:管制面快照(svctl.list,每LIST_POLL_TICKS拍)、待播种队列触发的状态播种(seed_status:网关刚上线/ 刚重连时一次性问{gw}.status,常态零轮询 —— 0.7.0 第3刀退役了 0.5 时代的 摊平状态轮询,登录态读数吃eStatus.推送)、被标记时才问一次的装配显形 (oms.pipeline_status)。这一拍不再问交易数据, 也不再辞行操作指令 —— 指令由命令线程执行(0.5 M5,点击即发)。- pluginwin
- pluginwin —— 「插件即 App」挂载表 + 逐插件配置窗口(ek-ui 0.9.2)。
- render
- 唯一渲染入口(L2):真实 eframe App 与 kittest 建构走同一个
render_body。 - runtime
- 运行时装配:工厂表(ui 工厂注册)、宿主观察线程(关窗→close_all)、 进程主入口(eframe 主线程 + 宿主观察线程)、启动阶段机(0.9.5)。
- splitters
- 薄 QSplitter(0.4.1,BD-UI-54):拆掉 egui_dock 后,数据区 2×2 的两刀分栏。
- state
- 共享观测状态:
UiPlugin(总线面)写、render_body(窗口面)读。 - toast
- 0.3.2(Wave E,BD-UI-50)告警 toast —— 照 Python
trader/ui/alert_toast.py。 - tokens
- 设计令牌层(0.2.30,BD-UI-46;0.8.0 配色双档,BD-UI-61)。
- ui_ext
- UiExt(0.2.30,BD-UI-47):语义排版助手。
Enums§
- PickErr
- 清单读写错(业务枚举;launcher/text bin 面可读可断言)。
Functions§
- read_
pick - 读清单(bin
--from面)。 - write_
pick_ in - 写清单到指定目录(launcher 面),返回文件路径。