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 工厂;sim 自 0.1.8 起在 station 缺省表内)/spawn_host_watcher(宿主观察线程;窗口关闭置 stop → close_all)/run_station_ui(进程主入口, S1c 起带--ready-file标记位);- 纸面网关自 0.2.9 起住【独立网关包 ek-paper】(BD-UI-36 用户裁定:网关归 网关包,与 ek-ctp 同级;本包只引用其注册名与工厂构造);
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/sim/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§
- fonts
- CJK 字体回退(BD-UI-26):epaint 0.33 缺省字体组(Hack / Ubuntu-Light / NotoEmoji-Regular / emoji-icon-font)没有任何中文字形 —— 界面中文 直接渲染成豆腐块/乱码(2026-10-18 用户实窗报障)。
- 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 上屏地面)、eTimer(1s 宿主自带)拉一次svctl.list+ 逐插件服务目录组快照 + ask oms 全量查询组交易监控帧(S5), 并辞行窗口面的操作指令队列(svctl 起停 + dm.reload 回灌 + oms 五段管线 下单/守卫撤单/流控查询)。- render
- 唯一渲染入口(L2):真实 eframe App 与 kittest 建构走同一个
render_body。 - runtime
- 运行时装配:工厂表(ui 工厂注册)、宿主观察线程(关窗→close_all)、 进程主入口(eframe 主线程 + 宿主观察线程)。
- state
- 共享观测状态:
UiPlugin(总线面)写、render_body(窗口面)读。
Enums§
- PickErr
- 清单读写错(业务枚举;launcher/text bin 面可读可断言)。
Functions§
- read_
pick - 读清单(bin
--from面)。 - write_
pick_ in - 写清单到指定目录(launcher 面),返回文件路径。