显示 API 实现 - README
✅ 完整实现
OpenSynaptic 的自发现可视化系统,允许插件使用标准 API 注册自定义显示部分,由 web_user 和 tui 自动发现和呈现。
🎯 您获得了什么
核心系统(3 个文件,1050+ 行)
- display_api.py - 具有 DisplayProvider & DisplayRegistry 的标准显示 API
- example_display_plugin.py - 参考示例(4 个提供程序)
- id_allocator_display_example.py - 生产示例(2 个提供程序)
集成(修改 3 个文件,165+ 行)
- tui/main.py - 自动发现并显示提供程序
- web_user/main.py - 处理提供程序请求
- web_user/handlers.py - 3 个新的 HTTP API 端点
文档(5 个文件,1900+ 行)
- DISPLAY_API_QUICKSTART.md - 5 分钟快速开始
- DISPLAY_API_GUIDE.md - 完整参考
- DISPLAY_API_IMPLEMENTATION_SUMMARY.md - 技术细节
- IMPLEMENTATION_COMPLETE.md - 执行摘要
- DISPLAY_API_INDEX.md - 导航指南
🚀 快速开始(3 步)
第 1 步:阅读快速开始(5 分钟)
cat DISPLAY_API_QUICKSTART.md
第 2 步:查看示例(10 分钟)
cat src/opensynaptic/services/example_display_plugin.py
第 3 步:创建您的提供程序(15 分钟)
from opensynaptic.services.display_api import DisplayProvider, register_display_provider
class MyDisplay(DisplayProvider):
def __init__(self):
super().__init__('my_plugin', 'metrics', 'My Metrics')
def extract_data(self, node=None, **kwargs):
return {'value': 42}
def auto_load(config=None):
register_display_provider(MyDisplay())
return True
📚 文档
| 文档 | 大小 | 目的 |
|---|---|---|
| DISPLAY_API_QUICKSTART.md | 400+ 行 | 从这里开始! |
| DISPLAY_API_GUIDE.md | 600+ 行 | 完整参考 |
| DISPLAY_API_IMPLEMENTATION_SUMMARY.md | 300+ 行 | 技术细节 |
| IMPLEMENTATION_COMPLETE.md | 200+ 行 | 快速参考 |
| DISPLAY_API_INDEX.md | 200+ 行 | 导航 |
🎯 主要功能
✅ 基于插件 - 核心代码中无硬编码
✅ 自动发现 - 插件注册,系统自动发现
✅ 多种格式 - JSON、HTML、TEXT、TABLE、TREE
✅ 向后兼容 - 100% 兼容
✅ 线程安全 - RLock 保护的注册表
✅ 生产就绪 - 已测试并验证
✅ 文档完善 - 1900+ 行文档
📖 开始阅读
- DISPLAY_API_QUICKSTART.md ← 从这里开始
- example_display_plugin.py ← 查看示例
- DISPLAY_API_GUIDE.md ← 完整参考
- id_allocator_display_example.py ← 现实示例
✨ 改变了什么
之前(硬编码)
# 在 tui/main.py 中 - 必须修改核心代码
def _section_custom(self):
return {'metric': get_value()}
_SECTION_METHODS = {'custom': '_section_custom'}
之后(基于插件)
# 在任何插件中 - 无需修改核心代码
class CustomDisplay(DisplayProvider):
def extract_data(self, node=None, **kwargs):
return {'metric': get_value()}
def auto_load(config=None):
register_display_provider(CustomDisplay())
return True
📊 架构
插件 1 插件 2 插件 N
│ │ │
└────┬───┴───┬────┘
│ │
显示 API 注册表
│
┌───┴────┐
│ │
web_user tui
HTTP API BIOS 控制台
💻 如何使用
通过 web_user 访问
# 列出所有提供程序
curl http://localhost:8765/api/display/providers
# 呈现特定部分
curl http://localhost:8765/api/display/render/plugin:section?format=json
# 获取所有部分
curl http://localhost:8765/api/display/all?format=html
通过 tui 访问
python -u src/main.py tui interactive
bios> m # 显示提供程序元数据
bios> s metrics # 搜索部分
bios> 7 # 切换到部分 7
bios> j # 以 JSON 形式查看
✅ 状态
| 组件 | 状态 |
|---|---|
| 核心实现 | ✅ 完成 |
| web_user 集成 | ✅ 完成 |
| TUI 集成 | ✅ 完成 |
| 示例 | ✅ 完成 |
| 文档 | ✅ 完成 |
| 测试 | ✅ 已验证 |
| 向后兼容性 | ✅ 100% |
📋 文件位置
src/opensynaptic/services/
├── display_api.py 🎯 核心 API
├── example_display_plugin.py 📚 示例
├── id_allocator_display_example.py 💡 现实示例
├── tui/main.py 🖥️ TUI
└── web_user/
├── main.py 🌐 web_user
└── handlers.py 🔌 端点
🎓 学习路径
路径 1(30 分钟):快速学习者
- DISPLAY_API_QUICKSTART.md(5 分钟)
- example_display_plugin.py(10 分钟)
- 尝试创建你自己的(15 分钟)
路径 2(1 小时):彻底学习者
- 所有文档(45 分钟)
- 所有示例代码(15 分钟)
路径 3(2 小时):深度学习者
- 所有文档(1 小时)
- 示例代码(30 分钟)
- display_api.py 源(30 分钟)
🎉 准备好了!
一切都已就绪:
- ✅ 核心 API 已实现
- ✅ web_user 集成已完成
- ✅ tui 集成已完成
- ✅ 6+ 个示例提供程序
- ✅ 1900+ 行文档
- ✅ 生产就绪
从 DISPLAY_API_QUICKSTART.md 开始并享受!🚀
日期:2026-M03-30
状态:✅ 完成
向后兼容性:✅ 100%