后端: - manifest.rs 新增 Graph 和 Dashboard 页面类型到 PluginPageType 枚举 - 添加 graph 页面验证逻辑(entity/relationship_entity/source_field/target_field) CRM 插件: - plugin.toml 新增关系图谱页面(graph 类型,基于 customer_relationship 实体) - plugin.toml 新增统计概览页面(dashboard 类型) - 侧边栏菜单从 5 项扩展到 7 项 前端 — 关系图谱 (PluginGraphPage): - 渐变节点 + 曲线箭头连线 + 关系类型色彩区分 - 鼠标悬停高亮 + Canvas Tooltip + 点击设为中心节点 - 2-hop 邻居视图 + 统计卡片(客户总数/关系总数/当前中心) - 关系类型图例(可点击筛选)+ 暗色主题适配 - ResizeObserver 自适应 + requestAnimationFrame 动画循环 前端 — 统计概览 (PluginDashboardPage): - 5 实体统计卡片(渐变色条 + 图标 + 数字动画) - 可筛选字段分布卡片(Progress 进度条 + Tag 标签) - 响应式栅格布局 + 骨架屏加载态 + 错误状态持久展示
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])