feat(规则管理): 添加主题规则自动发现设备功能

实现设备自动发现规则管理系统,包含以下主要功能:
1. 新增规则管理页面和API,支持创建、编辑和删除主题匹配规则
2. 添加规则匹配引擎,支持+和#通配符匹配设备主题
3. 实现Broker设备注册表,自动发现并管理符合规则的设备
4. 扩展仪表盘显示Broker信息和活跃主题
5. 修改设备卡片和详情页以区分规则发现的设备
6. 添加相关测试用例确保功能稳定性
This commit is contained in:
walkpan
2026-03-30 19:28:22 +08:00
parent 38766ca792
commit 3ea47d471e
28 changed files with 2606 additions and 22 deletions

View File

@@ -63,8 +63,55 @@ class BrokerTopic(BaseModel):
node: Optional[str] = None
class BrokerDeviceResponse(BaseModel):
id: str
name: str
type: str
protocol: str = "topic_rule"
mqtt_topic: str
command_topic: str | None = None
state: str | None = None
is_online: bool = False
last_seen: datetime | None = None
rule_id: int = 0
class DashboardStats(BaseModel):
total_devices: int
online_devices: int
offline_devices: int
recent_logs: list[DeviceLogResponse]
broker_topics: list[str] = []
broker_device_count: int = 0
broker_online_count: int = 0
mqtt_connected: bool = False
class RuleCreate(BaseModel):
name: str
topic_pattern: str
device_type: str = "switch"
command_template: str | None = None
state_value_path: str | None = None
is_enabled: bool = True
class RuleUpdate(BaseModel):
name: str | None = None
topic_pattern: str | None = None
device_type: str | None = None
command_template: str | None = None
state_value_path: str | None = None
is_enabled: bool | None = None
class RuleResponse(BaseModel):
id: int
name: str
topic_pattern: str
device_type: str
command_template: str | None = None
state_value_path: str | None = None
is_enabled: bool
created_at: datetime
model_config = {"from_attributes": True}