跳到主要内容

显示 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.md400+ 行从这里开始!
DISPLAY_API_GUIDE.md600+ 行完整参考
DISPLAY_API_IMPLEMENTATION_SUMMARY.md300+ 行技术细节
IMPLEMENTATION_COMPLETE.md200+ 行快速参考
DISPLAY_API_INDEX.md200+ 行导航

🎯 主要功能

基于插件 - 核心代码中无硬编码
自动发现 - 插件注册,系统自动发现
多种格式 - JSON、HTML、TEXT、TABLE、TREE
向后兼容 - 100% 兼容
线程安全 - RLock 保护的注册表
生产就绪 - 已测试并验证
文档完善 - 1900+ 行文档


📖 开始阅读

  1. DISPLAY_API_QUICKSTART.md ← 从这里开始
  2. example_display_plugin.py ← 查看示例
  3. DISPLAY_API_GUIDE.md ← 完整参考
  4. 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%