Skip to main content

ek_ui/
lib.rs

1//! # ek-ui —— ek 生态常驻主界面(DV-1:egui/eframe 0.33;方案 docs/ek-ui-station-plan.md)。
2//!
3//! 定位(**UI 即插件**):常驻窗口不是宿主外壳,而是一个普通插件(`ui`)——
4//! 插件面走总线收 `eLog`/`ePlugUp`/`ePlugDown`/`eTimer` 维护共享快照(`UiShared`),
5//! 窗口面(eframe `App`)只读快照渲染。两边经 `Arc<UiShared>` 相连,零自制通道。
6//!
7//! 分层
8//! - `state`:共享观测状态(环形日志 + 服务快照 + 行情库 + 交易帧 + revision);
9//! - `plugin`:`UiPlugin`(总线面;eTimer 1s 节流拉 svctl.list + oms 全量查询组快照);
10//! - `render`:`render_body`(唯一渲染入口,真实 App 与 kittest 共用 —— L2);
11//! - `runtime`:`ui_kinds`(default_kinds + ui 工厂)/ `spawn_host_watcher`
12//!   (宿主观察线程;窗口关闭置 stop → close_all)/ `run_station_ui`(进程主入口,
13//!   S1c 起带 `--ready-file` 标记位);
14//! - 纸面网关 0.2.9 曾住独立网关包 ek-paper(BD-UI-36);0.2.10 起【退场】
15//!   (BD-UI-38 用户裁定:ctp/SimNow 两套前置满足需求,本包不再引用);
16//! - `pick`/`launch`/`launcher`/`launcher_ui`(S1c 启动器:清单写读、spawn+boot-wait、
17//!   `--pick` 选窗与控制器)。
18//!
19//! 配置纪律(2026-10-17 用户定盘):**ek-ui 零配置 + 宿主零配置** —— 不读任何
20//! 配置文件,界面本身无设置;插件结构只由 `--from` 清单或 demo 缺省决定(结构面
21//! 归 station 工厂表 + 清单)。需配置的插件(唯一 = ek-ctp 虚拟账号)其配置面
22//! 归插件自身,激活时在插件内完成;setting/ 目录已整树清理,插件配置自持
23//! (原 S3 配置面 cfg 模块已整块撤销,见 DESIGN BD-UI-19)。
24//!
25//! 自动化验收(kittest 官方工具,egui 0.33 同版):L3 全走
26//! `Harness::builder().build(|ctx| render_body(ctx, &shared))`(ctx 级,
27//! 面板组合在 render_body 内,BD-UI-29)+ AccessKit 节点断言/点击;
28//! 静态布局首帧快照入库;人工核查 0 项。
29//!
30//! ## 版本边界
31//! 0.1.0(S1a→S5 全部落地):观测页/日志页/启动器/svctl 操作页/行情面/K 线/
32//! 交易监控全接入;配置面撤销(零配置口径);发布面向 crates.io 装版互引
33//! (ek-station 0.1.2)。
34//!
35//! bin `ek-ui` 参数:`(无参)` demo 窗(dm/oms/ui)/ `--pick` 选窗启动 /
36//! `--from <清单>` `--ready-file <标记>`(launcher 协议)/ 未知参数 usage exit 2。
37
38pub mod appconfig;
39pub mod fonts;
40pub mod format;
41pub mod launch;
42pub mod launcher;
43pub mod launcher_ui;
44pub mod pick;
45pub mod plugin;
46pub mod render;
47pub mod runtime;
48pub mod splitters;
49pub mod state;
50pub mod toast;
51pub mod tokens;
52pub mod ui_ext;
53
54pub use fonts::{CJK_FONT_NAME, apply_cjk_fonts};
55pub use launch::{LaunchFail, spawn_detached, wait_ready};
56pub use launcher::run_pick_launcher;
57pub use launcher_ui::{pick_kinds, render_pick};
58pub use pick::{PickErr, read_pick, write_pick_in};
59pub use plugin::UiPlugin;
60pub use render::render_body;
61pub use runtime::{run_station_ui, spawn_host_watcher, ui_kinds};
62pub use state::{BusSnap, CtpForm, LogRing, UiShared};