Customer Reference Rule
文档版本:v1.0
更新日期:2026-04-02
适用范围:AOVIS / NEXA 独立站前台账户、客服查询、后台客户详情
1. 目标
customer reference 是一个面向用户、客服和后台运营的可读客户编号。
它的设计目标是:
- 简短
- 易读
- 便于口头沟通和人工检索
- 不暴露数据库真实主键
- 不暴露客户总量或月度新增量
- 一次生成后永久不变
2. 不承担的职责
customer reference 不是:
- 数据库主键
- 订单编号
- 财务编号
- 市场来源编号
- 国家归属编号
这些信息应由各自独立字段承担,不应混入客户编号本身。
3. 格式规则
格式:
YYMM-RAND4
示例:
2604-K7M2
2604-T9Q4
2604-BX6R
含义:
YYMM:用户创建时间的 UTC 年月,例如2604RAND4:4 位随机字符码
4. 随机码规则
4.1 字符集
随机码使用去歧义字符集:
ABCDEFGHJKLMNPQRSTUVWXYZ23456789
排除字符:
ILO01
目的:
- 避免客服口头报号时读错
- 避免用户截图或电话中混淆
4.2 容量
4 位码容量为:
32^4 = 1,048,576
已远高于 9999,且不会像顺序号那样泄露客户数量。
5. 敏感组合过滤原则
随机码生成时必须经过过滤,避免出现:
- 侮辱性词语
- 脏词
- 性暗示词语
- 容易引发歧义或不适的缩写
- 全重复字符等低质量组合
命中过滤规则时,必须重新生成。
5.1 当前实现要求
至少过滤以下类别:
- 常见英文脏词
- 常见侮辱词根
- 明显不适合客服口播的组合
- 全重复字符,如
AAAA、2222
5.2 后续维护要求
blacklist 必须维护在代码中可扩展的集中位置,后续可按市场反馈继续补充。
6. 生成与存储规则
customerReference为数据库持久字段- 在用户首次需要该编号时生成
- 生成后写入数据库
- 后续永久不变
- 依赖数据库唯一约束确保不重复
- 如遇碰撞,自动重试生成
7. 当前使用位置
当前编号应至少用于:
- 用户前台
/account/profile - 后台
/admin/customers/[id] - 客服支持和人工查号场景
8. 与系统内部 ID 的关系
- 系统内部继续使用
User.id作为技术主键 - 用户和客服使用
customerReference
两者职责不同,不应混用。