feat(setting): add Chinese verbose_name/help_text to setting models (Phase 4.1 part 7/9)

This commit is contained in:
2026-04-30 09:30:35 +08:00
parent 9ef6eb6369
commit 289ec43265
2 changed files with 128 additions and 26 deletions

View File

@@ -4,13 +4,39 @@ from core.models.base import UUIDPrimaryKeyModel
class LookupGroup(UUIDPrimaryKeyModel):
module = models.CharField(max_length=50)
key = models.CharField(max_length=100)
label_zh = models.CharField(max_length=50)
description = models.TextField(blank=True, default="")
sort_order = models.SmallIntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
module = models.CharField(
max_length=50,
verbose_name="所属模块",
help_text="client / property",
)
key = models.CharField(
max_length=100,
verbose_name="分组 key",
help_text="如 source / follow_purpose",
)
label_zh = models.CharField(
max_length=50,
verbose_name="分组中文名",
help_text="界面显示名称,如「客源来源」",
)
description = models.TextField(
blank=True,
default="",
verbose_name="分组说明",
help_text="前端 tooltip 使用",
)
sort_order = models.SmallIntegerField(
default=0,
verbose_name="排序",
)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name="创建时间",
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name="更新时间",
)
class Meta:
db_table = "lookup_groups"
@@ -25,22 +51,52 @@ class LookupGroup(UUIDPrimaryKeyModel):
class LookupItem(UUIDPrimaryKeyModel):
group = models.ForeignKey(
LookupGroup, on_delete=models.CASCADE, related_name="items"
LookupGroup,
on_delete=models.CASCADE,
related_name="items",
verbose_name="所属分组",
)
value = models.CharField(
max_length=100,
verbose_name="存储值",
help_text="英文 snake_case如 door_to_door写入后只读",
)
label_zh = models.CharField(
max_length=50,
verbose_name="显示文本",
help_text="如「上门」",
)
is_system = models.BooleanField(
default=False,
verbose_name="是否系统预制",
help_text="True=系统预制不可物理删除,仅可停用",
)
is_active = models.BooleanField(
default=True,
verbose_name="是否启用",
help_text="False 后录入下拉不展示,历史记录保留并展示「(已停用)」后缀",
)
sort_order = models.SmallIntegerField(
default=0,
verbose_name="排序",
)
value = models.CharField(max_length=100)
label_zh = models.CharField(max_length=50)
is_system = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
sort_order = models.SmallIntegerField(default=0)
created_by = models.ForeignKey(
"org.Staff",
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="created_lookup_items",
verbose_name="创建人",
help_text="系统预制时为 NULL",
)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name="创建时间",
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name="更新时间",
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "lookup_items"

View File

@@ -17,18 +17,38 @@ TRADE_STATUS_CHOICES = (
class TenantSetting(UUIDPrimaryKeyModel):
category = models.CharField(max_length=50)
key = models.CharField(max_length=100)
value = models.JSONField()
value_type = models.CharField(max_length=20, choices=SettingValueType.choices)
category = models.CharField(
max_length=50,
verbose_name="配置分类",
help_text="client / property / showroom",
)
key = models.CharField(
max_length=100,
verbose_name="配置 key",
help_text="如 duplicate_check_scope",
)
value = models.JSONField(
verbose_name="配置值",
help_text='JSONB统一格式 {"v": <value>}',
)
value_type = models.CharField(
max_length=20,
choices=SettingValueType.choices,
verbose_name="值类型",
help_text="bool / int / string / enum用于前端渲染控件",
)
updated_by = models.ForeignKey(
"org.Staff",
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="updated_tenant_settings",
verbose_name="最后修改人",
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name="更新时间",
)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "tenant_settings"
@@ -45,12 +65,34 @@ class TenantSetting(UUIDPrimaryKeyModel):
class FieldRequirementRule(UUIDPrimaryKeyModel):
module = models.CharField(max_length=20, choices=FieldRuleModule.choices)
entity_type = models.CharField(max_length=50, choices=FieldRuleEntityType.choices)
trade_status = models.CharField(max_length=20, choices=TRADE_STATUS_CHOICES)
field_key = models.CharField(max_length=50)
module = models.CharField(
max_length=20,
choices=FieldRuleModule.choices,
verbose_name="模块",
help_text="property / clientMVP 仅 property",
)
entity_type = models.CharField(
max_length=50,
choices=FieldRuleEntityType.choices,
verbose_name="实体类型",
help_text="与 property.property_type 值域完全一致residential/villa/commercial_residential/shop/office/other",
)
trade_status = models.CharField(
max_length=20,
choices=TRADE_STATUS_CHOICES,
verbose_name="交易状态",
help_text="sale=出售 / rent=出租 / sale_rent=租售 / *=全部fallback 通配)",
)
field_key = models.CharField(
max_length=50,
verbose_name="字段 key",
help_text="如 orientation / decoration / floor / building_area",
)
requirement = models.CharField(
max_length=10, choices=FieldRuleRequirement.choices
max_length=10,
choices=FieldRuleRequirement.choices,
verbose_name="规则",
help_text="required=必填 / optional=选填 / hidden=隐藏",
)
updated_by = models.ForeignKey(
"org.Staff",
@@ -58,8 +100,12 @@ class FieldRequirementRule(UUIDPrimaryKeyModel):
blank=True,
on_delete=models.SET_NULL,
related_name="updated_field_rules",
verbose_name="最后修改人",
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name="更新时间",
)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "field_requirement_rules"