81 lines
3.9 KiB
HTML
81 lines
3.9 KiB
HTML
<h2>客户管理插件 — 三种实现方案</h2>
|
||
<p class="subtitle">选择最适合项目架构和交付目标的实现路径</p>
|
||
|
||
<div class="options">
|
||
<div class="option" data-choice="a" onclick="toggleSelect(this)">
|
||
<div class="letter">A</div>
|
||
<div class="content">
|
||
<h3>纯 WASM 插件 + 增强插件 UI 引擎</h3>
|
||
<p><strong>数据层:</strong>全部通过 WASM Host API,5 个动态表存储在 JSONB</p>
|
||
<p><strong>UI 层:</strong>扩展 PluginCRUDPage,新增 ui_widget 类型(tree、graph、timeline)</p>
|
||
<p><strong>关系图谱:</strong>新增 "graph" ui_widget,前端用 D3/AntV G6 渲染</p>
|
||
<div class="pros-cons">
|
||
<div class="pros"><h4>优势</h4><ul>
|
||
<li>完全在插件架构内,验证插件系统能力</li>
|
||
<li>新增的 ui_widget 可被所有未来插件复用</li>
|
||
<li>动态安装/卸载,热插拔</li>
|
||
</ul></div>
|
||
<div class="cons"><h4>劣势</h4><ul>
|
||
<li>JSONB 查询性能弱于原生列</li>
|
||
<li>复杂关系查询需多次 Host API 调用</li>
|
||
<li>ui_widget 扩展工作量大(3-4 种新控件)</li>
|
||
</ul></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="option" data-choice="b" onclick="toggleSelect(this)">
|
||
<div class="letter">B</div>
|
||
<div class="content">
|
||
<h3>WASM 插件数据层 + 专用前端页面(推荐)</h3>
|
||
<p><strong>数据层:</strong>WASM 插件管理 5 个实体,通过 Host API 操作</p>
|
||
<p><strong>UI 层:</strong>前端新增 CRM 专用页面组件(客户列表、联系人、沟通时间线、关系图谱)</p>
|
||
<p><strong>路由:</strong>插件的 manifest.ui.pages 声明自定义页面,前端按 pluginId 匹配加载</p>
|
||
<div class="pros-cons">
|
||
<div class="pros"><h4>优势</h4><ul>
|
||
<li>最佳 UX — 专为 CRM 设计的交互</li>
|
||
<li>关系图谱可用专业图表库(AntV G6)</li>
|
||
<li>数据层仍验证 WASM 插件系统</li>
|
||
<li>前后端分离,UI 可独立迭代</li>
|
||
</ul></div>
|
||
<div class="cons"><h4>劣势</h4><ul>
|
||
<li>每增加一个插件需写前端代码</li>
|
||
<li>插件 UI 不能完全动态化</li>
|
||
<li>数据查询仍受 Host API 限制</li>
|
||
</ul></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="option" data-choice="c" onclick="toggleSelect(this)">
|
||
<div class="letter">C</div>
|
||
<div class="content">
|
||
<h3>内置 erp-crm crate + 独立前端</h3>
|
||
<p><strong>数据层:</strong>新建 erp-crm crate,直接 SeaORM Entity,原生列存储</p>
|
||
<p><strong>UI 层:</strong>独立前端页面,直接调用 CRM API</p>
|
||
<p><strong>关系图谱:</strong>数据库原生支持关系查询,前端 AntV G6</p>
|
||
<div class="pros-cons">
|
||
<div class="pros"><h4>优势</h4><ul>
|
||
<li>性能最优 — 原生 SQL + 索引</li>
|
||
<li>复杂关系查询简单高效</li>
|
||
<li>完全控制数据模型</li>
|
||
</ul></div>
|
||
<div class="cons"><h4>劣势</h4><ul>
|
||
<li>不走插件架构,违背"插件优先"原则</li>
|
||
<li>编译时耦合,不能动态安装</li>
|
||
<li>不适合作为"第一个插件"验证目标</li>
|
||
</ul></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section" style="margin-top: 2rem; padding: 1.5rem; background: var(--card); border-radius: 12px; border-left: 4px solid #1677ff;">
|
||
<h3>💡 推荐方案:B(WASM 数据层 + 专用前端)</h3>
|
||
<p style="line-height: 1.8;">
|
||
作为"第一个插件",方案 B 在<strong>验证插件系统</strong>和<strong>交付可用产品</strong>之间取得最佳平衡:
|
||
数据层走 WASM Host API 验证插件架构的可行性,UI 层不受 schema 驱动的限制,
|
||
可以提供真正好用的 CRM 交互体验。同时为未来的插件 UI 定制建立模式(manifest.ui.pages 的前端路由匹配机制)。
|
||
</p>
|
||
</div>
|