UPC · Unified Product Code
产品编码命名规范
给来佣表的每一个可报价单元一个唯一、稳定、看得懂的编号。一行一码,跨季度不变, 年期、年龄、PI/NPI 和产品大类都写在码面上。
≥ HKD 150,000
PI/NPI 永远是最后一段 —— 解析时从右往左切,永不出错。
编码由三块拼成
| PRU-SAV-XSMT | 产品身份 · 这是什么产品 |
| Y03-A0065-B150O | 投保条件 · 客户怎么买 |
| PI | 佣金档 · 我们拿哪一档佣金 |
PI/NPI 不是产品属性,也不是投保条件 —— 客户是不是专业投资者,不改变他买到的保单,只改变 BOI 拿到的佣金率。 它是挂在最外层的费率开关,所以放在最后一段。
公司
三位定长。来佣表实际出现 15 家保司。
CPI = 中国太平洋(CPIC)。
将来若接入「中国太平 / 太平人寿」,必须另起 CTP。这两家名字互为子串,用包含判断会静默判错整批行。
产品大类
三位定长,取值来自宏泰产品资料库既有的 14 个大类,不自创分类。
| 码 | 大类 | 资料库 categoryCode | 来佣表行数 |
|---|---|---|---|
| SAV | 储蓄 | SAVINGS | 439 |
| CIL | 危疾 | CRITICAL_ILLNESS | 68 |
| LIF | 人寿 | LIFE | 52 |
| ANN | 年金 | ANNUITY | 27 |
| UNL | 万用寿险 | UNIVERSAL_LIFE | 21 |
| TRM | 定期寿险 | TERM_LIFE | 19 |
| MED | 医疗 | MEDICAL | 14 |
| ILA | 投资相连 | INVESTMENT_LINKED | — |
| IUL | 指数型万用寿险 | INDEX_UNIVERSAL_LIFE | — |
| VUL | 投资型万用寿险 | VARIABLE_UNIVERSAL_LIFE | — |
| ACC | 意外 | ACCIDENT | — |
| GIN | 一般保险 | GI | — |
| MPF | 强积金 | MPF | — |
| OTH | 其他 | OTHERS | — |
标 — 的大类在当前来佣表里没有产品,码位先占住,将来接入直接用。
产品
三到五位。取产品品牌名的拼音首字母,砍掉保司名前缀和「保险计划 / 储蓄寿险计划 / 保障计划」这类通用后缀。
| 产品名称 | 取名 | 码 |
|---|---|---|
| 爱伴航 | 爱伴航 | ABH |
| 薪火传承环球终身寿险计划 | 薪火传承 | XHCC |
| 金满意足多元货币保险计划 | 金满意足 | JMYZ |
| 保诚信守明天多元货币计划 | 信守明天(保司名已在①) | XSMT |
| 匠心传承储蓄寿险计划 2 | 匠心传承 2(代际数字接尾) | JXCC2 |
罗马数字统一转阿拉伯数字(II → 2,III → 3)。同一公司内撞码时,往后多取一个字的首字母,三位 → 四位 → 五位。
用拼音不用英文,是因为来佣表的英文名列有缺失、且与中文名对不上,而团队日常沟通用的是中文名。
为什么不直接用资料库的 productCode
资料库里每个产品自带 productCode(如 AIA:SLE2)。看起来现成可用,实测不行 ——
它的粒度比来佣表粗,直接拿来当产品段会把不同费率的行压成同一个码。
| 产品段取自 | 唯一键 | 撞码行 |
|---|---|---|
| 资料库 productCode | 671 / 770 | 152 |
| 我们自己的产品族码 | 690 / 770 | 126 |
其中 26 行是「改用资料库编码」才新撞上的。例:CPIC:GR 一个码覆盖来佣表 16 个费率不同的金如意变体。
另外三条:资料库里有 10 个产品族查无此码(含一个 58 行的主力产品);后缀长度 2–11 位不齐; 且它源自第三方系统,我们不控制它什么时候改。主键不能挂在别人会改的 ID 上。
正确用法:资料库的 productCode 单独存一列做对照,用于跟产品资料、宣传册对接。
对接能力一点不丢,主键归我们自己管。
缴费年期
前缀 Y。数字年期补零到两位,保证排序正确。
来佣表 28 种年期写法全部可编码,零例外。Y01–Y30 之间的整数年期依此类推。
投保年龄
五位定长:A + 下限两位 + 上限两位。原表 78 种写法归一成 63 个码,全部解析成功。
| 原表写法 | 码 | 读法 |
|---|---|---|
| 0-65岁 | A0065 | 0 到 65 岁 |
| 76-80岁 | A7680 | 76 到 80 岁 |
| 66岁 | A6666 | 单岁档 —— 上下限相同,这一岁自成一档 |
| 15日-65岁 / 15天-65岁 / 15日至65岁 | A0065 | 三种写法同义,统一归一;原文另存一列 |
| ≦65岁 / ≤65岁 | A0065 | 下限视为 0 |
| >65岁 | A6699 | 66 岁起,上限未标注 |
| ≥75岁 | A7599 | 75 岁起,上限未标注 |
| (空白) | ANA | 原表未标注 |
99 是哨兵值,含义是上限未标注,不是「到 99 岁」。真实上限以原表年龄列为准。
变体可选
来佣表的产品名称列里藏着五个没有独立列的维度。不给它们码位,126 行会撞在一起。
| 前缀 | 维度 | 取值示例 | 不编码会撞 |
|---|---|---|---|
| C | 币种 | CUH 港美元 · CRMB 人民币 · CMUL 多币种 | 100 行 |
| P | 缴费方式 | PPRE 预缴 · PREG 年缴 | 70 行 |
| T | 保单年期(≠缴费年期) | T20 · T30 | 38 行 |
| B | 保费档 | B150O ≥HKD150k · B150U <HKD150k | 22 行 |
| S | 特殊条款 | S7D 保核后 7 日内全缴 | 10 行 |
| V | 原表标记,含义待确认 | V2B · V3N · VOE | — |
一行可带多个变体,段内用 . 连接:CHKD.PPRE = 港元 + 预缴。
V 是给「我们不知道是什么」留的位置。
某保司产品名尾部带 2B / 3O / IE 这类内部标记,含义未经确认 ——
那就不猜,原样保留。它照样能把行分开(这才是主键的职责),同时诚实地标着含义待确认。
启用规则 —— 最容易做歪的地方
只有当「公司 + 产品 + 年期 + 年龄 + PI/NPI」之后仍有多行并列时才启用变体段。 名字里多几个字不算理由。这条规则机器可判定,直接写进发布闸门。
| 情形 | 年期列已经区分了吗 | 结论 |
|---|---|---|
| 生命隽富保 5 / 10 / 15 / 20 | 是 —— 年期列就是 5/10/15/20 | 不加变体,产品码统一 |
| 忠意尊安 10Y / 20Y / 至 80 岁 | 是 —— 年期列就是 10/20/至80岁 | 不加变体,产品码统一 |
| 金如意 2B / 2D / 3N / 2G | 否 —— 同为 3 年缴 · 0–60 岁 · NPI | 必须加 V 变体 |
结果:98 个产品族里只有 16 个需要变体码,共约 47 个。其余 82 个族都是干净的六段。
PI / NPI
投资者类别,恒定为最后一段。三个取值,没有第四种。
| 码 | 含义 | 行数 |
|---|---|---|
| PI | 专业投资者档 | 281 |
| NPI | 非专业投资者档 | 299 |
| ALL | 原表 PI 列留空 = 不区分,两侧同费率 | 190 |
这一段绝不能省
去掉它,「公司 + 产品 + 年期 + 年龄」会有 273 个键重复、546 行撞码 —— 绝大多数产品就是靠 PI/NPI 分成两行不同费率的。
为什么放在最后而不是产品后面
纯粹是排序后的可读性。PI/NPI 每往前挪一位,同一个报价单元的两档费率就被推开一截。
| 排法 | PI↔NPI 中位间距 | 最大间距 | 紧邻比例 |
|---|---|---|---|
| 公司-大类-产品-年期-年龄-变体-PI/NPI | 1 | 1 | 100% |
| 公司-大类-产品-年期-年龄-PI/NPI-变体 | 1 | 4 | 88% |
| 公司-大类-产品-PI/NPI-年期-年龄-变体 | 14 | 39 | 6% |
| 公司-PI/NPI-大类-产品-年期-年龄-变体 | 35 | 84 | 0% |
测量口径:770 行里 273 组存在 PI/NPI 成对的可报价单元,覆盖 546 行。
按当前排法,…-Y03-A0065-NPI 和 …-Y03-A0065-PI 排序后永远紧挨着,
两档费率并排就能比。放到产品后面,同一产品的 PI 行和 NPI 行会隔开十几行。
三条铁律
这三条不是风格偏好,违反其中任何一条都会让编码失去它存在的意义。
一 · 编码里不许出现季度或版本号
来佣表本身带 26Q2、26Q1 对比列。编码稳定,跨季度对比就是一个 VLOOKUP;
把 26Q3 编进去,等于每季度全表重编、历史全断。
二 · 一次铸成,永久冻结
若产品资料库以后把某产品从「储蓄」改判「人寿」,旧编码不动,只在映射表记一笔。 编码是身份证,不是计算结果 —— 重算一次就等于换了个人。
三 · 编码是索引,不是数据
年龄原文「15日至65歲」、币种、保费档等原文列全部保留。归一化有损是为了好用, 忠实性靠原始列兜底。任何人不得用编码反推去替代原表字段。
另外两个字段特意没有放进编码:分红险 Y/N(零区分度,且是产品属性不是报价维度)、 热卖标记(会变,编进去就违反铁律二)。它们留在各自的列里。
实测结果
所有结论都跑在来佣表 20260805 版的 770 个产品行上,不是设计推演。
| 键组合 | 唯一键 | 撞码行 | |
|---|---|---|---|
| 公司 + 产品 + 年期 | 497 | 546 | 不可用 |
| 公司 + 产品 + 年龄 + 年期 | 497 | 546 | 不可用 |
| 公司 + 大类 + 产品 + 年期 + 年龄 + PI/NPI | 690 | 126 | 不可用 |
| 以上 + 变体 | 770 | 0 | 唯一 |
每一段都自带识别特征:年期段必以 Y 开头,年龄段是 A + 四位数字,
PI/NPI 段只有三个固定值,变体段必以 C P B T S V 之一开头。加上 PI/NPI 钉死末位,
从右往左切永不歧义。
顺带得到的能力:前三段 AIA-SAV-ABH 天然就是产品族码。
一个 LEFT() 就能从 770 个报价行汇总到 98 个产品,不必再维护第二套编号。
编码检查器
贴一个编码进去,按本页的码表逐段拆开。查不到的码会如实标成「未登记」,不会替你猜。