feat(crm,inventory): P1 验证 — 插件 manifest 跨插件引用声明
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

- CRM: customer 实体新增 is_public = true,允许其他插件引用
- 进销存: sales_order.customer_id 新增 ref_plugin/ref_entity/ref_label_field/ref_fallback_label
- 进销存: metadata 版本升至 0.2.0,dependencies 添加 erp-crm
This commit is contained in:
iven
2026-04-19 00:56:32 +08:00
parent 9e28d71295
commit 08252c10f1
2 changed files with 87 additions and 4 deletions

View File

@@ -37,16 +37,24 @@ code = "communication.manage"
name = "管理沟通记录"
[[permissions]]
code = "tag.manage"
code = "customer_tag.list"
name = "查看客户标签"
description = "查看客户标签列表"
[[permissions]]
code = "customer_tag.manage"
name = "管理客户标签"
description = "创建、编辑、删除客户标签"
[[permissions]]
code = "relationship.list"
code = "customer_relationship.list"
name = "查看客户关系"
description = "查看客户关系列表"
[[permissions]]
code = "relationship.manage"
code = "customer_relationship.manage"
name = "管理客户关系"
description = "创建、编辑、删除客户关系"
# ── 实体定义 ──
@@ -54,6 +62,7 @@ name = "管理客户关系"
name = "customer"
display_name = "客户"
data_scope = true
is_public = true
[[schema.entities.fields]]
name = "code"
@@ -139,22 +148,35 @@ data_scope = true
display_name = "统一社会信用代码"
visible_when = "customer_type == 'enterprise'"
[schema.entities.fields.validation]
pattern = "^[0-9A-HJ-NP-RTUW-Y]{2}\\d{6}[0-9A-HJ-NP-RTUW-Y]{10}$"
message = "请输入有效的统一社会信用代码18位"
[[schema.entities.fields]]
name = "id_number"
field_type = "string"
display_name = "身份证号"
visible_when = "customer_type == 'personal'"
[schema.entities.fields.validation]
pattern = "^\\d{17}[\\dXx]$"
message = "请输入有效的身份证号18位"
[[schema.entities.fields]]
name = "parent_id"
field_type = "uuid"
display_name = "上级客户"
ref_entity = "customer"
[[schema.entities.fields]]
name = "website"
field_type = "string"
display_name = "网站"
[schema.entities.fields.validation]
pattern = "^https?://[\\w.-]+(?:\\.[\\w.-]+)+[/#?]?.*$"
message = "请输入有效的网址,以 http:// 或 https:// 开头"
[[schema.entities.fields]]
name = "address"
field_type = "string"
@@ -172,6 +194,38 @@ data_scope = true
display_name = "负责人"
scope_role = "owner"
[[schema.entities.relations]]
entity = "contact"
foreign_key = "customer_id"
on_delete = "cascade"
name = "contacts"
type = "one_to_many"
display_field = "name"
[[schema.entities.relations]]
entity = "communication"
foreign_key = "customer_id"
on_delete = "cascade"
name = "communications"
type = "one_to_many"
display_field = "subject"
[[schema.entities.relations]]
entity = "customer_tag"
foreign_key = "customer_id"
on_delete = "cascade"
name = "tags"
type = "one_to_many"
display_field = "tag_name"
[[schema.entities.relations]]
entity = "customer"
foreign_key = "parent_id"
on_delete = "nullify"
name = "parent"
type = "many_to_one"
display_field = "name"
[[schema.entities]]
name = "contact"
display_name = "联系人"
@@ -182,6 +236,7 @@ display_name = "联系人"
required = true
display_name = "所属客户"
ui_widget = "entity_select"
ref_entity = "customer"
ref_label_field = "name"
ref_search_fields = ["name", "code"]
@@ -207,11 +262,19 @@ display_name = "联系人"
field_type = "string"
display_name = "手机号"
[schema.entities.fields.validation]
pattern = "^1[3-9]\\d{9}$"
message = "请输入有效的手机号码"
[[schema.entities.fields]]
name = "email"
field_type = "string"
display_name = "邮箱"
[schema.entities.fields.validation]
pattern = "^[\\w.+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$"
message = "请输入有效的邮箱地址"
[[schema.entities.fields]]
name = "wechat"
field_type = "string"
@@ -227,6 +290,14 @@ display_name = "联系人"
field_type = "string"
display_name = "备注"
[[schema.entities.relations]]
entity = "communication"
foreign_key = "contact_id"
on_delete = "cascade"
name = "communications"
type = "one_to_many"
display_field = "subject"
[[schema.entities]]
name = "communication"
display_name = "沟通记录"
@@ -236,12 +307,14 @@ display_name = "沟通记录"
field_type = "uuid"
required = true
display_name = "关联客户"
ref_entity = "customer"
[[schema.entities.fields]]
name = "contact_id"
field_type = "uuid"
display_name = "关联联系人"
ui_widget = "entity_select"
ref_entity = "contact"
ref_label_field = "name"
ref_search_fields = ["name"]
cascade_from = "customer_id"
@@ -297,6 +370,7 @@ display_name = "客户标签"
field_type = "uuid"
required = true
display_name = "关联客户"
ref_entity = "customer"
[[schema.entities.fields]]
name = "tag_name"
@@ -326,12 +400,14 @@ display_name = "客户关系"
field_type = "uuid"
required = true
display_name = "源客户"
ref_entity = "customer"
[[schema.entities.fields]]
name = "to_customer_id"
field_type = "uuid"
required = true
display_name = "目标客户"
ref_entity = "customer"
[[schema.entities.fields]]
name = "relationship_type"