日期:2026-10-08
状态:已确认(2026-10-08)
范围:biz_customer通用个人档案字段扩展;采集协议(及同源当事人同步)保存时以协议非空字段覆盖客户主档;协议快照仍用现有当事人表
关联:docs/superpowers/specs/2026-10-07-customer-family-protocol-link-design.md(三角色客户 ID 关联;本设计在其上扩展主档字段与覆盖策略)
采集协议「客户信息」中,母亲信息包含姓名、电话、身份证、出生年月、民族、邮箱、家庭住址;父亲包含姓名、电话、身份证;子女(新生儿)另有分娩相关业务字段。
当前分工:
| 表 | 作用 |
|---|---|
biz_customer |
客户主档(活档):姓名、性别、身份证、年龄、电话、标签、备注 |
biz_protocol_party_customer |
协议当事人表(快照):一单一行,冗余母亲/父亲/新生儿全套字段 + 三角色 customer_id |
当事人表已具备协议侧快照能力:查看协议读当事人字段,客户管理事后改主档不会冲掉旧协议展示值。
缺口:
biz_customer 缺少出生年月、民族、邮箱、住址,母亲扩展信息无法进入主档。party_customer_sync 同步偏窄(主要姓名/电话/身份证),且多为「空才补」,与产品选择的「协议有值则覆盖主档」不一致。产品确认采用方案 1:扩客户表为通用个人档案 + 协议保存单向覆盖同步;不拆 母亲/父亲/子女物理子表。
biz_customer 增加通用个人字段:birth_ym、ethnic、email、address(角色不进客户表)。biz_customer。party_customer_sync 的,同步规则一并升级。biz_protocol_party_customer 为母亲/父亲/子女三张子表。biz_customer_history 变更履历表。biz_customer 新增列| 列 | 类型 | API / 前端 | 说明 |
|---|---|---|---|
birth_ym |
CHAR(6) NULL |
birthYm |
出生年月 YYYYMM |
ethnic |
VARCHAR(32) NULL |
ethnic |
民族名称 |
email |
VARCHAR(128) NULL |
email |
邮箱 |
address |
VARCHAR(512) NULL |
address |
家庭住址 |
已有字段继续使用:customer_name、sex、id_card_no、age、phone_no、customer_tags、remark 及公共字段。
不改结构。 biz_protocol_party_customer(及科研捐赠同源当事人表若结构平行)继续作为协议快照权威。
母亲 → customer_id:
mother_name → customer_name
mother_phone → phone_no
mother_id_card → id_card_no
mother_birth_ym → birth_ym
mother_ethnic → ethnic
mother_email → email
mother_address → address
sex 默认 "1"(女);有明确值则用明确值
age:可由身份证推导则覆盖
父亲 → father_customer_id:
father_name / father_phone / father_id_card → 对应主档字段
sex 默认 "0"(男)
birth_ym / ethnic / email / address:协议无源字段 → 不覆盖
子女 → newborn_customer_id:
newborn_name / newborn_id_card / newborn_sex(及若有电话)→ 对应主档
分娩业务字段不同步到客户表
采集协议(及同源)保存,当事人快照 upsert 之后,调用扩展后的 sync_party_customers。
| 规则 | 行为 |
|---|---|
| 协议源字段有值(非空串) | 覆盖客户对应字段 |
| 协议源字段为空 | 不覆盖(保留客户原值,禁止用空串清空主档) |
customer_tags / remark |
协议不同步;撞库合并时标签可继续逗号并集 |
| 年龄 | 身份证可推导则覆盖;否则不动 |
CustomerCreateBody / CustomerUpdateBody / _row_to_dict 增加 birthYm、ethnic、email、address。create_customer / update_customer 支持写入。party_customer_sync:母亲写入四新字段;父亲/子女按第 3.3 节;统一「有值覆盖、空不覆盖」。docs/sql/migrations/2026-10-08-customer-profile-expand.sql(名称以实现时为准);模型与工程 SQL 约定对齐。BizCustomer 模型 + CRUD/API/类型。party_customer_sync 覆盖逻辑与角色字段映射;补单测。| 决策 | 选择 |
|---|---|
| 客户表形态 | 通用个人档案(A) |
| 协议→客户 | 有值覆盖、空不覆盖(B) |
| 协议快照 | 继续用现有当事人宽表,不拆子表(方案 1) |
| 客户→协议 | 不同步 |
| 新生儿业务字段 | 仅当事人表 |