UPC · Unified Product Code

产品编码命名规范

给来佣表的每一个可报价单元一个唯一、稳定、看得懂的编号。一行一码,原表这一行不变、码就不变; 年期、年龄、PI/NPI 和产品大类都写在码面上。

基准数据 来佣表 20260910 版 已铸码 837 行 / 86 产品族 / 15 家保司 唯一性 837 / 837 铸码 2026-09-17
编码结构 · 七段(变体可选)
公司
P
R
U
保诚
-
大类
S
A
V
储蓄
-
产品
X
S
M
T
信守明天
-
年期
Y
0
3
3 年缴
-
年龄
A
0
0
6
5
0–65 岁
-
变体 · 可选
B
1
5
0
O
首年保费
≥ HKD 150,000
-
PI/NPI
P
I
专业投资者档
必填字段,六段恒定 仅 20 个产品族需要 分隔符一律用半角连字符
<公司3>-<大类3>-<产品3~5>-<年期>-<年龄>-[<变体>-]<PI/NPI>

PI/NPI 永远是最后一段;每一段又都有自己的开头(Y、A、C/P/T/B/S/V、PI/NPI/ALL),拆的时候不会拆错。

编码由三块拼成

PRU-SAV-XSMT产品身份 · 这是什么产品
Y03-A0065-B150O投保条件 · 客户怎么买
PI佣金档 · 我们拿哪一档佣金

PI/NPI 不是产品属性,也不是投保条件 —— 客户是不是专业投资者,不改变他买到的保单,只改变 BOI 拿到的佣金率。 它是挂在最外层的费率开关,所以放在最后一段。

字段 ①

公司

三位定长。来佣表实际出现 15 家保司。

AIA友邦
MNL宏利
BOC中银
PRU保诚
FTL周大福
CPI中国太平洋
AXA安盛
GEN忠意
YFL万通
CLI中国人寿
FWD富卫
SUN永明
WLL立桥
ZUR苏黎世
FUB富邦

CPI = 中国太平洋(CPIC)。 将来若接入「中国太平 / 太平人寿」,必须另起 CTP。这两家名字互为子串,用包含判断会静默判错整批行。

字段 ②

产品大类

三位定长,取值来自宏泰产品资料库既有的 14 个大类,不自创分类。

码大类资料库 categoryCode产品族来佣表行数
SAV储蓄SAVINGS51624
CIL危疾CRITICAL_ILLNESS968
LIF人寿LIFE1153
ANN年金ANNUITY537
UNL万用寿险UNIVERSAL_LIFE421
TRM定期寿险TERM_LIFE219
MED医疗MEDICAL415
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 版产品族族行
按同名(中文或英文)能唯一对上一个 productCode77776
资料库查不到同名产品,无码可用629
一族对上几个 productCode(来佣表把几款写在一行;资料库同一款挂了两个编号)332

能唯一对上的 77 族换成 productCode 后七段照样唯一:不用它不是因为会撞码,是因为另外 9 族对不上。

另外两条:这些 productCode 后缀长 2–15 位不齐; 它源自第三方系统,我们不控制它什么时候改。主键不能挂在别人会改的 ID 上。

正确用法:资料库的 productCode 单独存一列做对照,用于跟产品资料、宣传册对接。 对接能力一点不丢,主键归我们自己管。

字段 ④

缴费年期

前缀 Y。数字年期补零到两位,保证排序正确。

Y011 年缴 / 整付
Y022 年缴
Y033 年缴
Y055 年缴
Y1010 年缴
Y2525 年缴
YWL终身缴
YT80缴至 80 岁
Y20M20 年或以上
YNA原表未标注

来佣表 28 种年期写法全部可编码,零例外。Y01–Y30 之间的整数年期依此类推。

字段 ⑤

投保年龄

A + 下限两位 + 上限两位(原表年龄空白时写 ANA)。原表 79 种写法归一成 64 个码,全部解析成功。

原表写法码读法
0-65岁A00650 到 65 岁
76-80岁A768076 到 80 岁
66岁A6666单岁档 —— 上下限相同,这一岁自成一档
15日-65岁 / 15天-65岁 / 15日至65岁A0065三种写法同义,统一归一;原文另存一列
≦65岁 / ≤65岁A0065下限视为 0
>65岁A669966 岁起,上限未标注
≥75岁A759975 岁起,上限未标注
(空白)ANA原表未标注

99 是哨兵值,含义是上限未标注,不是「到 99 岁」。真实上限以原表年龄列为准。

字段 ⑥

变体可选

来佣表的产品名称列里藏着五个没有独立列的维度(币种、缴费方式、保单年期、保费档、特殊条款),外加一类拆不出含义的原表标记(V)。不给它们码位,173 行会撞在一起。

前缀维度取值示例不编码会撞
C币种CUH 港美元 · CRMB 人民币 · CMUL 多币种88 行
P缴费方式PPRE 预缴 · PREG 年缴50 行
T保单年期(≠缴费年期)T20 · T306 行
B保费档(原表写首年保费、总保费、整付保费或保费,编码里不区分,原文列保留)B150O ≥HKD150k · B150U <HKD150k25 行
S特殊条款S7D 保核后 7 日内全缴12 行
V原表标记(结构数字、推广档字母),原样保留V5_20_10 · V2B · VOE30 行

「不编码会撞」=只拿掉这一类记号、其余照旧,会撞在一起的行数。一行可带多个变体,段内用 . 连接、按 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/NPI11100%
公司-大类-产品-年期-年龄-PI/NPI-变体1584%
公司-大类-产品-PI/NPI-年期-年龄-变体14394%
公司-PI/NPI-大类-产品-年期-年龄-变体37840%

测量口径: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 行),由脚本从编码登记簿生成,发布前逐个核对,不是设计推演。

键组合唯一键撞码行
公司 + 产品 + 年期216773不可用
公司 + 产品 + 年龄 + 年期466650不可用
公司 + 大类 + 产品 + 年期 + 年龄 + PI/NPI726173不可用
以上 + 变体8370唯一

每一段都自带识别特征:年期段必以 Y 开头,年龄段是 A + 四位数字(原表空白时是 ANA), PI/NPI 段只有三个固定值,变体段必以 C P B T S V 之一开头,段里又都没有连字符。 所以不管从哪头拆都不会拆错;PI/NPI 钉在最后一段,从右往左拆最省事。

顺带得到的能力:前三段 AIA-CIL-ABH 就是产品族码。 截到第三个连字符,837 个报价行就汇总成 86 个产品族,不必再维护第二套编号。产品段 3–5 位不等长,不能用固定位数的 LEFT()。

审查 · 2026-09-16 · 09-17、09-24 更新

已知问题

把本规范在来佣表 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 初稿页面落地系统复现
产品族数9877
六段唯一键690670
六段撞码行126153
需变体的族1618
年期写法 / 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 铸出。

工具

编码检查器

贴一个编码进去,按本页的码表逐段拆开。查不到的码会如实标成「未登记」,不会替你猜。