UPC · Unified Product Code
产品编码命名规范
给来佣表的每一个可报价单元一个唯一、稳定、看得懂的编号。一行一码,原表这一行不变、码就不变; 年期、年龄、PI/NPI 和产品大类都写在码面上。
≥ HKD 150,000
PI/NPI 永远是最后一段;每一段又都有自己的开头(Y、A、C/P/T/B/S/V、PI/NPI/ALL),拆的时候不会拆错。
编码由三块拼成
| PRU-SAV-XSMT | 产品身份 · 这是什么产品 |
| Y03-A0065-B150O | 投保条件 · 客户怎么买 |
| PI | 佣金档 · 我们拿哪一档佣金 |
PI/NPI 不是产品属性,也不是投保条件 —— 客户是不是专业投资者,不改变他买到的保单,只改变 BOI 拿到的佣金率。 它是挂在最外层的费率开关,所以放在最后一段。
公司
三位定长。来佣表实际出现 15 家保司。
CPI = 中国太平洋(CPIC)。
将来若接入「中国太平 / 太平人寿」,必须另起 CTP。这两家名字互为子串,用包含判断会静默判错整批行。
产品大类
三位定长,取值来自宏泰产品资料库既有的 14 个大类,不自创分类。
| 码 | 大类 | 资料库 categoryCode | 产品族 | 来佣表行数 |
|---|---|---|---|---|
| SAV | 储蓄 | SAVINGS | 51 | 624 |
| CIL | 危疾 | CRITICAL_ILLNESS | 9 | 68 |
| LIF | 人寿 | LIFE | 11 | 53 |
| ANN | 年金 | ANNUITY | 5 | 37 |
| UNL | 万用寿险 | UNIVERSAL_LIFE | 4 | 21 |
| TRM | 定期寿险 | TERM_LIFE | 2 | 19 |
| MED | 医疗 | MEDICAL | 4 | 15 |
| ILA | 投资相连 | INVESTMENT_LINKED | — | — |
| IUL | 指数型万用寿险 | INDEX_UNIVERSAL_LIFE | — | — |
| VUL | 投资型万用寿险 | VARIABLE_UNIVERSAL_LIFE | — | — |
| ACC | 意外 | ACCIDENT | — | — |
| GIN | 一般保险 | GI | — | — |
| MPF | 强积金 | MPF | — | — |
| OTH | 其他 | OTHERS | — | — |
标 — 的大类在当前来佣表里没有产品,码位先占住,将来接入直接用。
大类怎么定
按证据由强到弱逐级找,前一级定下就不看后一级;每一级命中的资料库产品大类必须一致,不一致就往下一级。
| 依据 | 20260910 版产品族 |
|---|---|
| 资料库有同名产品(先比含版本名的全名,比不上再把两边的版本名都去掉比) | 71 |
| 资料库有英文名相同的产品(来佣表英文名列) | 9 |
| 资料库有名称互相包含的产品 | 1 |
| 资料库同系列:英文名只差代际(II、III、V…),至少 2 款 | 1 |
| 资料库同品牌:中文名去掉保司名后前两字相同,至少 5 款 | 1 |
| 名称关键词:危疾、医疗 / 医保、年金、万用寿险、定期 / Renewable、储蓄 | 3 |
| 以上都没有:不猜,由人选 | 0 |
在资料库 1644 款香港产品上逐条「留一」回测(假装资料库里没有这一款,看规则判得对不对): 名称互相包含 97.5%、同系列 99.1%、同品牌 99.7%; 关键词 年金 98.7%、危疾 98.1%、万用寿险 96.6%、医疗 95.7%、储蓄 95.1%、定期 90.3%。 名字带「寿险 / 人寿」的只有 40.5% 是人寿(多数其实是储蓄),不作依据。
20260910 版 86 个产品族的大类已随铸码冻结(2026-09-17)。 第一份来佣表直接采用上表的判定;第二版起,新产品族的大类由人确认。
产品
三到五位。取产品品牌名的拼音首字母,砍掉保司名前缀和「保险计划 / 储蓄寿险计划 / 保障计划」这类通用后缀。
| 产品名称 | 取名 | 码 |
|---|---|---|
| 爱伴航 | 爱伴航 | ABH |
| 薪火传承环球终身寿险计划 | 薪火传承 | XHCC |
| 金满意足多元货币保险计划 | 金满意足 | JMYZ |
| 保诚信守明天多元货币计划 | 信守明天(保司名已在①) | XSMT |
| 匠心传承储蓄寿险计划 2(尊尚版) | 匠心传承储蓄寿险计划 → 超长截前 4 位,代际 2 接尾(名称以 2 结尾,第 2 步砍不到后缀,见取名步骤 3、7) | JXCC2 |
取名步骤
| 步 | 做法 | 例 |
|---|---|---|
| 1 | 去掉版本名(卓越、卓越版、尊尚版、优越版、加强版、荣耀版、星耀版、升级版、丰盛版、丰裕版、至尊版、标准版)和其余括号内容;名称带「/」只取第一个;去掉保司名 | 保诚信守明天多元货币计划 → 信守明天多元货币计划 |
| 2 | 名称以通用后缀结尾,就砍掉一个(多元货币保险计划、储蓄寿险计划、终身寿险、保险计划、计划、保险……) | 信守明天多元货币计划 → 信守明天 |
| 3 | 结尾的代际(阿拉伯数字,或 II、III、V 这类罗马数字)先摘下,最后接回码尾;名字中段的罗马数字当字母取。 注意第 2 步在第 3 步之前:名称以代际结尾时,通用后缀不在最末尾,第 2 步砍不到,后缀会留在名字里,这类名字多半在第 7 步截到 4 位 (盈御多元货币计划 3、匠心传承储蓄寿险计划 2、星河传承保险计划 II 都是这样) | 危疾加护保 III → WJJH3;盛利 II 储蓄保险—至尊 → SLII(「—至尊」不带括号,第 1 步不当版本名去掉,整名截到 4 位) |
| 4 | 名称带「·」且超过五个字,只取最后一段 | 万年青·星河传承保险计划 II → XHCC2 |
| 5 | 每个汉字取拼音首字母;英文单词取其中的大写字母;数字不取 | 信守明天 → XSMT |
| 6 | 不足 3 位:用第 2 步砍掉的后缀的首字母补到 3 位 | 尚裕终身寿险 → SYZ(Z 来自「终身寿险」) |
| 7 | 超长:字母超过 5 位(带代际时超过 4 位)只取前 4 位,再接代际 | 宏就名家传承 → HJMJ;盈御多元货币计划 3 → YYDY3 |
20260910 版 86 个产品族按此铸码:补位 11 族、截到 4 位 33 族、带代际 17 族。
同一保司撞码:两族名称只差版本名时,各取版本名里第一个不同字的首字母接在码尾——创逸致富(丰盛版) 与 创逸致富(丰裕版) 本来都得 CYZF,
铸成 CYZFS 与 CYZFY。其余撞码系统只报警、由人定;「往后多取一字」在前五字相同的名字上取不开。
用拼音不用英文,是因为来佣表的英文名列有缺失、且与中文名对不上,而团队日常沟通用的是中文名。
产品族怎么切
产品族 = 来佣表「产品名称」去掉括号里的年龄、保费档、缴费方式、年期、币种、特殊条款和结构数字,再去掉结尾的保费门槛、 [Prepayment] / [Regular Pay]、续保说明(10 Year Renewable)、两位原表标记(2B、OE)和「受保人居住地」说明后剩下的名字, 比较时繁简、全半角、罗马数字、空白与标点一律归一。名称尾数正好等于该行缴费年期、同保司又有两个以上这样的兄弟时,并成一族(生命隽富保 5 / 10 / 15 / 20)。 20260910 版切出 86 族。
为什么不直接用资料库的 productCode
资料库里每个产品自带 productCode(如 AIA:SLE2)。拿它当产品段,对不齐:
| 20260910 版产品族 | 族 | 行 |
|---|---|---|
| 按同名(中文或英文)能唯一对上一个 productCode | 77 | 776 |
| 资料库查不到同名产品,无码可用 | 6 | 29 |
| 一族对上几个 productCode(来佣表把几款写在一行;资料库同一款挂了两个编号) | 3 | 32 |
能唯一对上的 77 族换成 productCode 后七段照样唯一:不用它不是因为会撞码,是因为另外 9 族对不上。
另外两条:这些 productCode 后缀长 2–15 位不齐; 它源自第三方系统,我们不控制它什么时候改。主键不能挂在别人会改的 ID 上。
正确用法:资料库的 productCode 单独存一列做对照,用于跟产品资料、宣传册对接。
对接能力一点不丢,主键归我们自己管。
缴费年期
前缀 Y。数字年期补零到两位,保证排序正确。
来佣表 28 种年期写法全部可编码,零例外。Y01–Y30 之间的整数年期依此类推。
投保年龄
A + 下限两位 + 上限两位(原表年龄空白时写 ANA)。原表 79 种写法归一成 64 个码,全部解析成功。
| 原表写法 | 码 | 读法 |
|---|---|---|
| 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 岁」。真实上限以原表年龄列为准。
变体可选
来佣表的产品名称列里藏着五个没有独立列的维度(币种、缴费方式、保单年期、保费档、特殊条款),外加一类拆不出含义的原表标记(V)。不给它们码位,173 行会撞在一起。
| 前缀 | 维度 | 取值示例 | 不编码会撞 |
|---|---|---|---|
| C | 币种 | CUH 港美元 · CRMB 人民币 · CMUL 多币种 | 88 行 |
| P | 缴费方式 | PPRE 预缴 · PREG 年缴 | 50 行 |
| T | 保单年期(≠缴费年期) | T20 · T30 | 6 行 |
| B | 保费档(原表写首年保费、总保费、整付保费或保费,编码里不区分,原文列保留) | B150O ≥HKD150k · B150U <HKD150k | 25 行 |
| S | 特殊条款 | S7D 保核后 7 日内全缴 | 12 行 |
| V | 原表标记(结构数字、推广档字母),原样保留 | V5_20_10 · V2B · VOE | 30 行 |
「不编码会撞」=只拿掉这一类记号、其余照旧,会撞在一起的行数。一行可带多个变体,段内用 . 连接、按 C P T B S V 排:CHKD.PPRE = 港元 + 预缴。
保费档金额以「千」为单位:B150O = 15 万港元及以上,B150U = 15 万港元以下;美元门槛在 B 后加 U(BU150O);
区间写成「B 下限 T 上限」(B8000T16000);原表港元、美元两个门槛并写时只取第一个。20260910 版铸出的保费档共 6 种形状(≥、<、区间 × 港元、美元)。
V 装原表里拆不出独立含义的标记,原样保留,不猜。
20260910 版有两类:延期年金名称括号里的结构数字(原表写 5-20-10,码里是 V5_20_10,共 8 个);
一款储蓄产品名称尾部的 2B / 3O / IE 这类字母(15 个),
带这类字母的 18 行全部有「傭金推廣時限」,同一产品没带字母的 8 行一个都没有——是推广档,见已知问题二。
启用规则 —— 最容易做歪的地方
只有当「公司 + 产品 + 年期 + 年龄 + PI/NPI」之后仍有多行并列时才启用变体段。 名字里多几个字不算理由。这条规则机器可判定,直接写进发布闸门。
| 情形 | 年期列已经区分了吗 | 结论 |
|---|---|---|
| 生命隽富保 5 / 10 / 15 / 20 | 是 —— 年期列就是 5/10/15/20 | 不加变体,产品码统一 |
| 忠意尊安 10Y / 20Y / 至 80 岁 | 是 —— 年期列就是 10/20/至80岁 | 不加变体,产品码统一 |
| 金如意 2B / 2D / 3N / 2G | 否 —— 同为 5 年缴 · 0–60 岁 · NPI | 必须加 V 变体 |
结果:86 个产品族里 20 个用到变体段,共 161 个编码带变体;其余 66 个族都是干净的六段。
PI / NPI
投资者类别,恒定为最后一段。三个取值,没有第四种。
| 码 | 含义 | 行数 |
|---|---|---|
| PI | 专业投资者档 | 293 |
| NPI | 非专业投资者档 | 311 |
| ALL | 原表 PI 列留空 = 不区分,两侧同费率 | 233 |
这一段绝不能省
去掉这一段,其余六段相同的会有 285 组、570 行撞码 —— 其中 282 组的两档费率本来就不一样。
为什么放在最后而不是产品后面
纯粹是排序后的可读性。PI/NPI 每往前挪一位,同一个报价单元的两档费率就被推开一截。
| 排法 | PI↔NPI 中位间距 | 最大间距 | 紧邻比例 |
|---|---|---|---|
| 公司-大类-产品-年期-年龄-变体-PI/NPI | 1 | 1 | 100% |
| 公司-大类-产品-年期-年龄-PI/NPI-变体 | 1 | 5 | 84% |
| 公司-大类-产品-PI/NPI-年期-年龄-变体 | 14 | 39 | 4% |
| 公司-PI/NPI-大类-产品-年期-年龄-变体 | 37 | 84 | 0% |
测量口径:837 行里 285 组存在 PI/NPI 成对的可报价单元,覆盖 570 行;按每种排法把全部编码排序,量每组 PI 行与 NPI 行隔几行。
按当前排法,…-Y03-A0065-NPI 和 …-Y03-A0065-PI 排序后永远紧挨着,
两档费率并排就能比。放到产品后面,同一产品的 PI 行和 NPI 行会隔开十几行。
三条铁律
这三条不是风格偏好,违反其中任何一条都会让编码失去它存在的意义。
一 · 编码里不许出现季度或版本号
来佣表本身带 26Q2、26Q1 对比列。编码稳定,跨季度对比就是一个 VLOOKUP;
把 26Q3 编进去,等于每季度全表重编、历史全断。
二 · 一次铸成,永久冻结
若产品资料库以后把某产品从「储蓄」改判「人寿」,旧编码不动,只在映射表记一笔。 编码是身份证,不是计算结果 —— 重算一次就等于换了个人。
三 · 编码是索引,不是数据
年龄原文「15日至65歲」、币种、保费档等原文列全部保留。归一化有损是为了好用, 忠实性靠原始列兜底。任何人不得用编码反推去替代原表字段。
另外两个字段特意没有放进编码:分红险 Y/N(零区分度,且是产品属性不是报价维度)、 热卖标记(会变,编进去就违反铁律二)。它们留在各自的列里。
实测结果
本页数字都来自已铸码的来佣表 20260910 版(837 行),由脚本从编码登记簿生成,发布前逐个核对,不是设计推演。
| 键组合 | 唯一键 | 撞码行 | |
|---|---|---|---|
| 公司 + 产品 + 年期 | 216 | 773 | 不可用 |
| 公司 + 产品 + 年龄 + 年期 | 466 | 650 | 不可用 |
| 公司 + 大类 + 产品 + 年期 + 年龄 + PI/NPI | 726 | 173 | 不可用 |
| 以上 + 变体 | 837 | 0 | 唯一 |
每一段都自带识别特征:年期段必以 Y 开头,年龄段是 A + 四位数字(原表空白时是 ANA),
PI/NPI 段只有三个固定值,变体段必以 C P B T S V 之一开头,段里又都没有连字符。
所以不管从哪头拆都不会拆错;PI/NPI 钉在最后一段,从右往左拆最省事。
顺带得到的能力:前三段 AIA-CIL-ABH 就是产品族码。
截到第三个连字符,837 个报价行就汇总成 86 个产品族,不必再维护第二套编号。产品段 3–5 位不等长,不能用固定位数的 LEFT()。
已知问题
把本规范在来佣表 20260805 版与 20260910 版上用落地系统的解析器重跑一遍,得到下面这些。 20260910 版已于 2026-09-17 按落地系统的规则铸码;改了的标「已修」「已写明」,其余照旧待拍板。
四条会伤到「一码一行、跨季度不变」的
一 · 变体段取决于同组其它行,不是这一行自己待拍板
启用规则只保留组内有区分度的记号,兄弟行一增一减,同一行的码面就变。实例:某储蓄产品同年期同年龄同 PI 的一组四行,
港元两档、美元两档,港元行现在是 CHKD.B4000U;若美元两行下架,同一行按规则重算就变成 B4000U。
落地系统靠「身份键沿用旧码」压住了,代价是码面不再等于规则:谁按本页重新编一遍,就会得到另一个码。
20260805 → 20260910 实测漂移 0 行,是还没碰上,不是不会。
二 · V 段冻进去的是限时推广档待拍板
金如意星耀版 26 行里 18 行带 2B 2C 3N 3O IE OE SR SS 这类标记,
这 18 行全部带「傭金推廣時限」,没标记的 8 行一个都没有。
它们是推广档:到期退役、下季换一批字母,一个产品每季换一批码,正是铁律一要避免的;本页把「热卖标记」排除在编码外的理由,对它们同样成立。
这 18 个码已随 20260910 版铸出。V 前缀另外还装着延期年金的结构数字(V5_20_10 这类),而字段 ⑥ 写的是保单年期归 T。
三 · 大类是判断不是事实,却进了永久主键,且对唯一性零贡献待拍板
20260910 版 86 个产品族的大类已按字段 ② 的办法定下并冻结:资料库中文同名 71、英文名同名 9、 近似 1、同系列 1、同品牌 1、名称关键词 3。 冻结前修掉了一处判错:资料库里的同名产品是储蓄,旧办法只去掉我方名称的版本名、跟资料库比不上,退回按名字里的「寿险」判成了人寿。 同一保司的同类产品仍会分进不同大类(两款终身保险计划,资料库一款归储蓄、一款归人寿)。判错了按铁律二不改,页首又说「大类写在码面上」, 读码的人会把错的当真;前三段汇总也会把同系列拆开。它是七段里唯一要下判断、又对唯一性零贡献的一段。
四 · 本页的实测数字复现不了已修
08-31 初稿页面的数字按 20260805 版写:大类表七行合计 640 ≠ 770,族数、撞码数也与落地系统复现的不同(下表),生成数字的脚本没有落盘。 根因是「一个产品族怎么切」没有定义。现在切分与取名规则写进了字段 ③,本页数字全部改用已铸码的 20260910 版,由脚本从编码登记簿生成、发布前逐个核对。
| 指标 · 20260805 版 | 08-31 初稿页面 | 落地系统复现 |
|---|---|---|
| 产品族数 | 98 | 77 |
| 六段唯一键 | 690 | 670 |
| 六段撞码行 | 126 | 153 |
| 需变体的族 | 16 | 18 |
| 年期写法 / PI·NPI·ALL 行数 / 年龄写法→码数 | 28 / 281·299·190 / 78→63 | 一致 |
规则的洞
| 位置 | 问题 | 现状 |
|---|---|---|
| ③ 产品 | 两字品牌名怎么补到三位没有说。 | 已写明:拿砍掉的通用后缀首字母补,11 族如此(尊安保险计划 → ZAB)。补的字母带类别含义,与 XSMT 这类码不是一个体系,没改。 |
| ③ 产品 | 「同公司撞码往后多取一字」在只差版本名的产品上失效:前五字相同,第六字才分,超出五位上限。 | 已修:取版本名里第一个不同字的首字母接尾(CYZFS / CYZFY)。 |
| ③ 产品 | 罗马数字只在句尾才转;名字中段的 II 当字母取;过长的名字被截断。 | 已写明(取名步骤 3、7):33 族截到 4 位(SLII)。 |
| ③ 产品 | 检查器接受 2–6 位,正文规定 3–5 位;六段码也报「七段全部符合规范」。 | 已修 |
| ⑥ 变体 B | 只写了两种形状;美元门槛、区间、金额单位「千」都没写。 | 已写明(字段 ⑥):20260910 版 6 种形状。 |
| ⑥ 变体 | 字母 T 三种意思:B 记号里是 to,变体段是保单年期,年期段 YT80 是缴至。多记号的顺序、下划线记号没写。 |
顺序(C P T B S V)与下划线 已写明;T 一字三义 待拍板 |
| ④ 年期 | Y01 把整付和 1 年缴合并。 |
待拍板:20260910 版名称写明整付、躉繳或 Single 的 40 行,没有一行和 1 年缴同组,暂无碰撞。 |
| ⑤ 年龄 | 「五位定长」但 ANA 是三位;99 当哨兵会与真实的 99 岁上限相撞;≥100 岁无法编码。 |
待拍板:目前原表里没有 99 岁或三位数年龄。 |
| 页首 | 「跨季度不变」只对没动过的行成立:年龄、年期、PI 划分都在码面上,保司一改就是新码、旧码退役。 | 已改说法为「行不变则码不变」。20260805 → 20260910 有 739 行原样延续(96%); 2 款产品改了投保年龄段,6 行换了码。 |
| §验证 | 「定长字段记录」「一个 LEFT() 就能汇总」不成立:产品段 3–5 位变长。 |
已改说法 |
| 本页 | 公开无令牌页写了 15 家保司名单、各大类行数、保费档与特殊条款的写法。不含费率,但来佣表的结构等于公开了。已带 noindex。 | 待拍板 |
核过没问题的:右起切段无歧义;保司码全部对上原表(CPI 对应来佣表原文「中國太平洋」,
资料库 CPICLIFE 即中國太平洋人壽保險(香港));08-31 初稿页面的年期 28 种写法、年龄 78 种写法归 63 码、PI/NPI/ALL 行数在 20260805 版上全部复现。
处置待拍板,建议动四处:变体段改成本行全部记号、不看兄弟行;推广行不铸永久变体,先弄清那批字母的含义; 大类退出编码、只做对照列;把产品族切分规则写死,统计脚本落盘进闸门。第四处已做。 前三处都会改已铸的码:20260910 版的 837 个码已于 2026-09-17 铸出。
编码检查器
贴一个编码进去,按本页的码表逐段拆开。查不到的码会如实标成「未登记」,不会替你猜。