feat(models): add Chinese verbose_name to all 74 models (Phase 4.0)

为所有 Django 模型添加 Meta.verbose_name 和 verbose_name_plural(中文表名),
覆盖 10 个 app 的全部 74 个业务模型。

Phase 4.0 范围:
- 仅 Meta 类级别中文名(用于 Django Admin、drf-spectacular OpenAPI title、错误信息)
- 字段级 verbose_name= 和 help_text= 留待 Phase 4.1(待 PM 补全 DATA_MODEL 后同步)

变更:
- 20 个 models 文件改动(每个模型 +2 行)
- 8 个 0002/0003 迁移文件(Meta options 变更)
- apps/tenant/migrations/0001_initial.py(之前漏生成的 tenant 模型迁移)

manage.py check: 0 issues。
This commit is contained in:
2026-04-29 19:10:38 +08:00
parent 94d160223d
commit 79c3cf2924
29 changed files with 594 additions and 0 deletions

View File

@@ -47,6 +47,8 @@ class ClientContact(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_contacts"
verbose_name = "客源联系人"
verbose_name_plural = "客源联系人"
indexes = [
models.Index(fields=["phone_hash"], name="idx_cc_phone_hash"),
models.Index(fields=["phone2_hash"], name="idx_cc_phone2_hash"),
@@ -118,6 +120,8 @@ class ClientRequirement(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_requirements"
verbose_name = "客源需求"
verbose_name_plural = "客源需求"
indexes = [
models.Index(fields=["client"], name="idx_creq_client"),
models.Index(fields=["requirement_type", "client"], name="idx_creq_type"),
@@ -138,6 +142,8 @@ class ClientSchoolPreference(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_school_preferences"
verbose_name = "意向学校"
verbose_name_plural = "意向学校"
indexes = [
models.Index(fields=["requirement"], name="idx_csp_requirement"),
]

View File

@@ -131,6 +131,8 @@ class Client(AuditedModel):
class Meta:
db_table = "clients"
verbose_name = "客源"
verbose_name_plural = "客源"
indexes = [
models.Index(fields=["client_type", "status"], name="idx_clients_type_stat"),
models.Index(fields=["owner"], name="idx_clients_owner"),

View File

@@ -15,6 +15,8 @@ class ClientFavoriteFolder(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_favorite_folders"
verbose_name = "私客收藏夹"
verbose_name_plural = "私客收藏夹"
indexes = [
models.Index(fields=["staff"], name="idx_cff_staff"),
]
@@ -38,6 +40,8 @@ class ClientFolderItem(models.Model):
class Meta:
db_table = "client_folder_items"
verbose_name = "收藏夹中的客源"
verbose_name_plural = "收藏夹中的客源"
constraints = [
models.UniqueConstraint(
fields=["folder", "client"], name="uq_cfi_folder_client"

View File

@@ -36,6 +36,8 @@ class ClientFollowLog(models.Model):
class Meta:
db_table = "client_follow_logs"
verbose_name = "客源跟进日志"
verbose_name_plural = "客源跟进日志"
managed = False
unique_together = (("id", "created_at"),)
@@ -52,4 +54,6 @@ class ClientFollowLogAttachment(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_follow_log_attachments"
verbose_name = "客源跟进附件"
verbose_name_plural = "客源跟进附件"
indexes = [models.Index(fields=["follow_log_id"], name="idx_cfla_log")]

View File

@@ -57,6 +57,8 @@ class ClientViewing(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_viewings"
verbose_name = "带看记录"
verbose_name_plural = "带看记录"
indexes = [
models.Index(
fields=["client", "-viewing_start_at"], name="idx_cv_client_time"
@@ -107,6 +109,8 @@ class ClientPropertyMatch(UUIDPrimaryKeyModel):
class Meta:
db_table = "client_property_matches"
verbose_name = "智能配房"
verbose_name_plural = "智能配房"
constraints = [
models.UniqueConstraint(
fields=["client", "property"], name="uq_client_match_pair"
@@ -141,6 +145,8 @@ class ClientStatusLog(models.Model):
class Meta:
db_table = "client_status_logs"
verbose_name = "客源状态变更日志"
verbose_name_plural = "客源状态变更日志"
indexes = [
models.Index(fields=["client", "-operated_at"], name="idx_csl_client"),
models.Index(fields=["change_type", "-operated_at"], name="idx_csl_type"),