Files
erp/plans/rosy-painting-whisper.md
iven 841766b168
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
fix(用户管理): 修复用户列表页面加载失败问题
修复用户列表页面加载失败导致测试超时的问题,确保页面元素正确渲染
2026-04-19 08:46:28 +08:00

8.0 KiB
Raw Blame History

CRM 插件深度分析 & 多专家组头脑风暴

Context

CRM 插件 (erp-plugin-crm) 是 ERP 平台的第一个行业业务插件,也是 WASM 插件系统的标杆验证案例。它已完成了设计规格中的全部 3 个阶段(共 24 个任务),包含 5 个实体、9 个权限、7 种页面类型。现在需要从深度和广度两个维度进行全方位审视,发现改进空间、架构风险和演进方向。


一、CRM 插件全景画像

1.1 架构定位

┌─────────────────────────────────────────────────┐
│                   前端 SPA                       │
│  PluginCRUDPage / Tree / Graph / Dashboard /     │
│  Tabs / Detail / Admin — 全部 schema 驱动渲染    │
└────────────────────┬────────────────────────────┘
                     │ REST API (pluginData + plugins)
┌────────────────────▼────────────────────────────┐
│              Plugin Host (erp-plugin)             │
│  service.rs → engine.rs → host.rs → dynamic_table│
│  data_service.rs → handler → module              │
└────────────────────┬────────────────────────────┘
                     │ WIT 接口 (Host API 9 个函数)
┌────────────────────▼────────────────────────────┐
│          CRM WASM Guest (erp-plugin-crm)          │
│  lib.rs (30行) — init/on_tenant_created/          │
│  handle_event 全部 no-op                         │
└──────────────────────────────────────────────────┘

1.2 数据模型 (5 实体)

实体 表名 字段数 用途
customer plugin_erp_crm_customer 15 客户主数据 (企业/个人)
contact plugin_erp_crm_contact 8 联系人
communication plugin_erp_crm_communication 7 沟通记录
customer_tag plugin_erp_crm_customer_tag 3 客户标签
customer_relationship plugin_erp_crm_customer_relationship 4 客户关系

1.3 页面矩阵 (7 页面类型)

页面类型 CRM 用途 复杂度
CRUD 客户/联系人/沟通/标签/关系列表 中 (搜索/筛选/排序/视图切换)
Detail (Drawer) 客户360度视图 高 (字段+嵌套CRUD+时间线)
Tree 客户层级树
Tabs 客户管理入口
Graph 关系图谱 (Canvas手绘)
Dashboard 统计概览
Admin 插件生命周期管理

1.4 权限模型 (9 权限)

两级权限体系:平台级 (plugin.admin/list) + 插件级 (erp-crm.customer.list/manage 等)


二、深度分析 — 六维度体检

2.1 架构健壮性 ⚠️

优势:

  • Host-Guest 沙箱隔离Fuel 资源限制WASM panic 不影响主服务
  • 延迟写入模式 (PendingOp) 保证事务原子性
  • 乐观锁 + 软删除 + 多租户隔离

风险:

  • JSONB 外键完整性为零contact.customer_id 指向已删除客户不会被拦截
  • WASM Guest 价值极低 — CRM 插件 lib.rs 仅 30 行3 个生命周期钩子全是 no-op所有业务逻辑实际在 Host 侧的 data_service.rs
  • 动态表 SQL 拼接风险 — 虽有 sanitize_identifier(),但 JSONB 查询构建器复杂度高
  • 插件热升级策略缺失 — 版本升级时如何处理已有数据的 schema 变更?

2.2 数据完整性 ⚠️

当前状态:

  • 无 DB 级外键约束JSONB 字段无法使用 PostgreSQL FK
  • 无应用层 FK 校验data_service.rs 的 create/update 不检查关联实体是否存在)
  • 删除客户时不级联处理关联的联系人/沟通记录/标签
  • customer.parent_id 的循环引用无检测

2.3 查询性能 🟡

已做优化:

  • GIN 索引覆盖 searchable 字段
  • tenant_id 索引
  • Redis 连接缓存 (响应 2.26s → 2ms)

潜在瓶颈:

  • JSONB 内字段排序 (ORDER BY data->>'field') 无法使用 B-tree 索引
  • 聚合查询 (aggregate) 对大数据量可能慢
  • 关系图谱需要全量加载 customer + customer_relationship前端 Canvas 渲染
  • 无分页的树结构查询(前端全量加载后客户端构建)

2.4 安全合规 🔴

  • 数据权限缺失 — 只有操作权限 (能否操作),无数据权限 (能看到谁的数据)
  • 搜索注入 — search 参数直接拼入 SQL ILIKE需确认转义逻辑
  • 权限 fallback 过宽plugin.admin 权限自动获得所有插件的所有操作权限

2.5 前端体验 🟡

亮点:

  • 全 schema 驱动,零 CRM 专用前端代码
  • visible_when 条件表单字段
  • 时间线/表格视图切换
  • Canvas 手绘关系图谱(无第三方库依赖)
  • 嵌套 CRUD (Detail Drawer)

不足:

  • 无看板视图(销售漏斗/客户跟进阶段)
  • 无数据导入/导出功能
  • 无批量操作
  • 标签系统过于简单(无标签分组管理、无标签云)
  • Dashboard 统计维度有限(只有计数+分组聚合)
  • 树页面不支持拖拽排序

2.6 可扩展性 🟡

平台能力沉淀:

  • 7 种通用页面类型可供未来插件复用
  • 插件 manifest (TOML) schema 定义了完整的元数据规范
  • 插件生命周期管理 (上传→安装→启用→禁用→卸载→清除)

限制:

  • 页面类型有限 — 无日历、看板、甘特图、地图等业务常见页面
  • WASM WIT 接口固定 — Host API 9 个函数,扩展需要修改 WIT + 双端重编译
  • 插件间通信未实现 — 当前只能通过 EventBus 订阅系统事件,插件间无法直接交互

三、专家组头脑风暴议题

基于以上分析,建议从以下 6 个专家组视角展开头脑风暴:

专家组 1: 后端架构师

焦点: WASM 插件架构的真正价值在哪里?如何让 Guest 代码从 no-op 变成有意义的业务逻辑?

  • Host API 的 db_query 为何不可用?如何修复?
  • JSONB 动态表 vs 独立 schema 表的取舍
  • 插件版本升级的数据迁移策略
  • 延迟写入模式的局限性和改进

专家组 2: CRM 产品专家

焦点: 这个 CRM 能用吗?缺什么核心能力?

  • 销售漏斗/商机管理缺失的影响
  • 客户跟进提醒机制
  • 数据导入/导出 (Excel)
  • 客户画像/360度视图的完整性
  • 与 ERP 其他模块 (进销存/财务) 的联动

专家组 3: 安全工程师

焦点: 数据权限、隔离性、合规风险

  • 行级数据权限 (谁能看到哪些客户)
  • JSONB 查询注入风险
  • 插件 WASM 沙箱逃逸可能性
  • 审计日志的完整性
  • GDPR/数据隐私合规

专家组 4: 前端架构师

焦点: Schema 驱动 UI 的天花板和突破路径

  • 复杂交互场景 (拖拽、批量操作、右键菜单) 的 schema 描述能力
  • 看板/日历/甘特图等新页面类型的设计
  • 大数据量下的性能优化 (虚拟滚动、懒加载)
  • 插件自定义 UI 组件的可行性

专家组 5: 平台架构师

焦点: 插件平台的通用性和未来演进

  • 插件间通信和协作机制
  • 插件市场/分发的技术架构
  • 插件依赖管理和版本兼容
  • 多租户插件隔离的成本和安全性

专家组 6: 性能工程师

焦点: JSONB 动态表的性能天花板

  • 百万级数据的查询优化策略
  • 聚合查询的预计算/缓存
  • 关系图谱大数据量下的前端渲染
  • PostgreSQL JSONB 索引策略优化

四、实施计划

  1. 退出计划模式后,立即调用 /brainstorm 技能,以本分析报告为基础材料
  2. 对 6 个专家组视角逐一展开头脑风暴
  3. 汇总所有专家建议,形成优先级排序的改进路线图
  4. 输出最终的 CRM 插件改进计划