feat(plugin): P1 跨插件数据引用系统 — 后端 Phase 1-3
实现跨插件实体引用的基础后端能力:
Phase 1 — Manifest 扩展 + Entity Registry 数据层:
- PluginField 新增 ref_plugin/ref_fallback_label 支持跨插件引用声明
- PluginRelation 新增 name/relation_type/display_field(CRM 已在用的字段)
- PluginEntity 新增 is_public 标记可被其他插件引用的实体
- 数据库迁移:plugin_entities 新增 manifest_id + is_public 列 + 索引
- SeaORM Entity 和 install 流程同步更新
Phase 2 — 后端跨插件引用解析 + 校验:
- data_service: 新增 resolve_cross_plugin_entity/is_plugin_active 函数
- validate_ref_entities: 支持 ref_plugin 字段,目标插件未安装时跳过校验(软警告)
- host.rs: HostState 新增 cross_plugin_entities 映射,db_query 支持点分记号
- engine.rs: execute_wasm 自动构建跨插件实体映射
Phase 3 — API 端点:
- POST /plugins/{id}/{entity}/resolve-labels 批量标签解析
- GET /plugin-registry/entities 公开实体注册表查询
This commit is contained in:
@@ -91,6 +91,10 @@ impl PluginModule {
|
||||
"/plugins/{plugin_id}/{entity}/aggregate",
|
||||
get(crate::handler::data_handler::aggregate_plugin_data::<S>),
|
||||
)
|
||||
.route(
|
||||
"/plugins/{plugin_id}/{entity}/aggregate-multi",
|
||||
post(crate::handler::data_handler::aggregate_multi_plugin_data::<S>),
|
||||
)
|
||||
// 批量操作路由
|
||||
.route(
|
||||
"/plugins/{plugin_id}/{entity}/batch",
|
||||
@@ -100,8 +104,20 @@ impl PluginModule {
|
||||
.route(
|
||||
"/plugins/{plugin_id}/{entity}/timeseries",
|
||||
get(crate::handler::data_handler::get_plugin_timeseries::<S>),
|
||||
)
|
||||
// 跨插件引用:批量标签解析
|
||||
.route(
|
||||
"/plugins/{plugin_id}/{entity}/resolve-labels",
|
||||
post(crate::handler::data_handler::resolve_ref_labels::<S>),
|
||||
);
|
||||
|
||||
admin_routes.merge(data_routes)
|
||||
// 实体注册表路由
|
||||
let registry_routes = Router::new()
|
||||
.route(
|
||||
"/plugin-registry/entities",
|
||||
get(crate::handler::data_handler::list_public_entities::<S>),
|
||||
);
|
||||
|
||||
admin_routes.merge(data_routes).merge(registry_routes)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user