# 一、需求背景
汇丰银行后台需要基于客户数据标签筛选目标客群,用于权益投放、活动触达、名单圈选等业务场景。
当前《汇丰借记卡权益》PRD 中,"展示客群限制""领取客群限制"依赖标签 ID 关联客群,但标签本身的创建、编辑、维护能力缺失。本需求补齐客户数据标签的后台管理能力,支持运营人员通过可视化方式按客户属性组合规则,生成可被其他业务模块引用的标签。
# 二、需求列表
## (一)后台
入口:定制功能 → 汇丰银行 → 标签管理
1. 标签列表
2. 新建标签
3. 编辑标签
4. 查看标签
5. 删除标签
6. 启用 / 停用标签
# 三、需求详述
## (一)业务流程
```mermaid
flowchart TD
A[运营人员进入标签管理] --> B{操作类型}
B -->|新建/编辑| C[填写标签名称与描述]
C --> D[新增规则组]
D --> E[组内新增规则]
E --> E1[选择参数]
E1 --> E2{参数是否含历史月末值?}
E2 -->|是| E3[选择时间窗口与聚合方式]
E2 -->|否| E4[跳过]
E3 --> E5[选择运算符]
E4 --> E5
E5 --> E6[填写/选择比较值]
E6 --> F{继续新增规则?}
F -->|是| E
F -->|否| G[设置组内关系 且/或]
G --> H{继续新增规则组?}
H -->|是| D
H -->|否| J[保存标签]
J --> K[标签可在权益/活动配置中引用]
B -->|查看| L[只读展示规则]
B -->|删除| M{是否被业务引用?}
M -->|是| M1[阻止删除, 提示先解除引用]
M -->|否| M2[二次确认, 软删除]
B -->|启用/停用| N[状态切换, 实时生效]
```
## (二)后台
菜单入口:liso 定制功能 → 汇丰银行 → 标签管理
### 1\. 标签列表
(1)筛选条件
| **字段名称** | **字段类型** | **是否必填** | **说明** |
| --- | --- | --- | --- |
| 标签名称 | 文本输入框 | 否 | 模糊搜索 |
| 标签 ID | 文本输入框 | 否 | 精确匹配 |
| 状态 | 下拉选择 | 否 | 全部 / 启用 / 停用,默认"全部" |
| 创建时间 | 日期范围 | 否 | 起止日期,格式 Y-m-d |
| 创建人 | 文本输入框 | 否 | 模糊搜索创建人姓名/账号 |
(2)操作按钮
- 查询:按筛选条件查询
- 重置:清空筛选条件
- 新建标签:打开【新建标签】页面
(3)列表字段
| 字段名称 | **说明** |
| --- | --- |
| 操作 | • 查看:查看标签详情
• 编辑:编辑标签
• 删除:软删除该标签
• 启用 / 停用:切换标签状态 |
| 标签 ID | 系统生成,唯一,可复制 |
| 标签名称 | 运营定义的名称 |
| 标签描述 | 标签用途说明,超出省略 |
| 规则摘要 | "规则组数 / 规则总数",如 `2 组 / 5 条` |
| 状态 | 启用 / 停用 |
| 创建人 / 创建时间 | 展示姓名与 Y-m-d H:i:s |
| 最后更新人 / 更新时间 | 展示姓名与 Y-m-d H:i:s |
| 引用数 | 该标签被权益、活动等引用的次数,点击可查看引用明细 |
(4)分页
- 默认每页 20 条
- 支持首页、上一页、下一页、末页、跳转至指定页
### 2\. 新建标签
采用单页表单布局:**基础信息 + 规则配置**。
2.1 基础信息
| **字段名称** | **字段类型** | **是否必填** | **说明** |
| --- | --- | --- | --- |
| 标签名称 | 文本输入框 | 是 | 最长 40 字符,同一渠道下不可重复 |
| 标签描述 | 文本域 | 否 | 最长 200 字符,便于识别标签用途 |
| 状态 | 开关(Toggle) | 是 | 默认开启 |
2.2 规则配置
规则采用"规则组 + 规则"两级嵌套结构:
- **规则组之间**:固定为 **且(AND)**
- **规则组内部**:可切换为 **且(AND)** 或 **或(OR)**
(1)规则组管理
- **新增规则组**:页面右上角"+ 新增规则组"按钮;新建标签时默认已有 1 个空规则组
- **删除规则组**:每个规则组右上角提供删除按钮;至少保留 1 个规则组,最后一个不可删除
- **复制规则组**:复制当前组的全部规则到新规则组(含组内关系设置)
(2)规则管理(组内)
- **新增规则**:规则组底部"+ 新增规则"按钮;新建规则组时默认已有 1 条空规则
- **删除规则**:每条规则末尾提供删除按钮;每组至少保留 1 条规则
- **组内关系**:规则组头部切换"且 / 或"
(3)单条规则配置
每条规则包含四段输入:**参数 → 时间窗口(仅历史值参数) → 运算符 → 比较值**
| **输入段** | **控件** | **说明** |
| --- | --- | --- |
| 参数 | 级联下拉 / 搜索下拉 | 按分组展示(客户基础 / 资产 / 尊尚与私行 / 跨境资格 / MGM / 投资偏好 / 行为触点),支持中文、参数名双向搜索。详见【附录 A:参数清单】 |
| 时间窗口 | 动态下拉组合 | 仅当参数含"近 12 个月月末值"变体时展示:
① **取值方式**:当前值 / 指定某月 / 近 N 个月(N=1-12)
② **聚合方式**(取值方式为"近 N 个月"时):任一月满足 / 所有月满足 / 至少 M 个月满足 / 平均值 / 最大值 / 最小值(后三项仅数值类型支持) |
| 运算符 | 下拉 | 根据参数类型动态展示可选项。详见【附录 B:运算符清单】 |
| 比较值 | 动态控件 | 根据运算符类型切换输入控件:
• 单值:文本 / 数字 / 日期选择器 / 布尔下拉(真/假)
• 多值:多选下拉 或 以逗号分隔的批量输入
• 区间:两个输入框或区间选择器
• 为空 / 不为空:不需要输入 |
**参数取值规则:**
- 参数类型为枚举(如私行权益标签、客户持有定存种类、资产大类明细等)时,运算符与比较值均使用枚举选择器,避免手工输入错误
- 比较值输入需与参数类型一致:`BigDecimal` 仅允许数字;`YYYY-MM-DD` 仅允许日期;`Boolean` 使用"真/假"下拉选择
2.3 操作按钮
- **取消**:若有未保存修改则二次确认"未保存内容将丢失,确认退出?";否则直接返回列表
- **保存**:校验必填项与规则完整性,通过后持久化;保存成功 toast "保存成功"并返回列表
### 3\. 编辑标签
- 入口:列表"编辑"按钮
- 字段同【新建标签】,**标签 ID 不可编辑**
- 若标签已被业务引用(引用数 > 0),保存时二次确认:"该标签已被 N 个权益/活动引用,修改后将影响其客群匹配,确认保存?"
- 操作按钮:取消 / 保存(同新建)
### 4\. 查看标签
- 入口:列表"查看"按钮
- 字段同【编辑标签】
- 所有输入框、选择框、按钮(新增规则组 / 新增规则 / 删除)禁用
- 仅展示【返回】按钮
### 5\. 删除标签
- 入口:列表"删除"按钮
- 若 **引用数 > 0**:弹窗提示"该标签已被 N 个权益/活动引用,请先在对应业务中解除引用后再删除",**仅显示"我知道了"按钮**,阻止删除
- 若 **引用数 = 0**:弹窗二次确认"确定要删除标签「XXX」吗?删除后无法恢复"
- **确定**:软删除(保留数据用于审计),列表不再展示
- **取消**:关闭弹窗
### 6\. 启用 / 停用
- 入口:列表"启用"/"停用"按钮
- **启用 → 停用**:弹窗二次确认"停用后,引用该标签的业务将视为该客群不命中,确认停用?"
- **停用 → 启用**:无需确认,直接切换
- 状态变更实时生效
### 7\. 状态定义
| 状态 | 说明 | 可执行操作 |
| --- | --- | --- |
| 启用 | 参与客户匹配,可被业务引用 | 查看 / 编辑 / 停用 / 删除(引用数=0 时) |
| 停用 | 不参与匹配,引用方视为未命中 | 查看 / 编辑 / 启用 / 删除(引用数=0 时) |
## (三)校验与异常
- **标签名称**:必填、长度 ≤ 40、同渠道下唯一;重复时提示"标签名称已存在"
- **规则组**:至少 1 个;每组至少 1 条完整规则
- **规则完整性**:参数、运算符、比较值(除"为空/不为空"外)均不得为空
- **数值比较值**:须可解析为数字;"区间"运算符要求下限 ≤ 上限
- **日期比较值**:格式须与参数格式匹配(`YYYY-MM-DD` 或 `YYYY-MM`)
- **枚举比较值**:仅允许枚举内取值
- **时间窗口参数**:`近 N 个月`的 N 取值 1-12;`至少 M 个月`的 M 不得大于 N
- **并发编辑**:以保存时间戳为准,后保存覆盖先保存;列表展示最后更新人与时间,便于追溯
- **删除保护**:引用数 > 0 的标签不可删除
- **接口异常**:保存 / 预估接口异常时 toast 报错并保留当前输入,不清空表单
# 附录 A:参数清单
> 所有参数仅在存在数据时返回;标签匹配时参数值为空则该条规则判为不匹配(除非运算符为"为空")。
## A.1 客户基础与身份
| 中文名 | 参数名 | 类型 | 历史值 | 说明 / 取值 |
| --- | --- | --- | --- | --- |
| 客户 MSC Group | mscGroup / mscGroupList | String / List | ✔ | 历史值:近 12 个月月末值 `[{"date":"2025-03","mscGroup":"xxx"}, ...]` |
| 客户类型 MSC | mscCode / mscCodeList | String / List | ✔ | 历史值:近 12 个月月末值 `[{"date":"2025-03","mscCode":"xxx"}, ...]` |
| Current MSC entry date | currentMscEntryDate | String (YYYY-MM-DD) |
| 当前 MSC 生效起始日期 |
| 客户 MOB 值(含信用卡) | mob | String |
| 取值:0 / 1 / 2 / 3 / 4 / 5 / 6 / … |
| First contact date | firstContactDate | String (YYYY-MM-DD) |
|
|
| 开户时间 | openDate | String (YYYY-MM-DD) |
|
|
| 城市 | city | String |
|
|
| RM 类型 | rmType | String |
|
|
| 客户姓名 | customerName | String |
|
|
## A.2 资产与持有
| 中文名 | 参数名 | 类型 | 历史值 | 说明 / 取值 |
| --- | --- | --- | --- | --- |
| End of day balance(所有资金含产品) | endOfBalance / endOfBalanceList | BigDecimal / List | ✔ | 历史值:近 12 个月月末值 `[{"date":"2025-03","endOfBalance":"xxx"}, ...]` |
| TRB 值 - Avg TRB 口径(含家庭账户余额) | avgTrbIncludingHousehold / avgTrbIncludingHouseholdList | BigDecimal / List | ✔ | 历史值:近 12 个月月末值 |
| TRB 值 - Avg TRB 口径(不含家庭账户余额) | avgTrbExcludingHousehold / avgTrbExcludingHouseholdList | BigDecimal / List | ✔ | 历史值:近 12 个月月末值 |
| 资产大类明细 | assetCategoryDetails | String(多选) |
| 1-9 依次表示,多个英文逗号分隔:
1 存款(定期 / 通知 / 个人大额存单)
2 结构性存款(自有)
3 基金相关产品(代客境外理财海外基金 / 代销内地证券投资基金 / 代销香港互认基金)
4 理财产品(代销)
5 代客境外理财海外债券型 / 结构性票据型(自有)
6 资产管理计划(代销)
7 信托计划(代销)
8 保险产品(代销)
9 预留 |
| 客户持有定存种类 | fixedDepositTypes | String(多选) |
| 1-5 依次表示,多个英文逗号分隔:
1 不持有定存
2 持有普通定存(美金)
3 持有普通定存(人民币)
4 持有普通定存(其他币种)
5 持有大额存单(人民币) |
## A.3 尊尚 / 私行
| 中文名 | 参数名 | 类型 | 历史值 | 说明 / 取值 |
| --- | --- | --- | --- | --- |
| 近 6 个月是否符合尊尚资格 | isQualifiedLast6Months | Boolean |
|
|
| 私行权益标签 | privateBankTag | String |
| 取值:银辉 / 金曜 / 钻皓私人银行客户 |
| 首次升级尊尚的时间 | firstUpgradePremierDate | String (YYYY-MM-DD) |
|
|
| 私行 ID 卓越理财尊尚编号 | privateBankId | String |
|
|
| 尊尚资格到期日 | premierValidityDate | String (YYYY-MM-DD) |
|
|
| 首次达标日期 | firstAchievementDate | String (YYYY-MM) |
|
|
| 首次升级为 PB 的日期 | firstPBUpgradeDate | String (YYYY-MM) |
|
|
| PB 活动参与白名单 | isPbActivityWhitelisted | Boolean |
|
|
## A.4 跨境资格(1+1)
| 中文名 | 参数名 | 类型 | 历史值 | 说明 |
| --- | --- | --- | --- | --- |
| 是否为 1+1 CN-HK 双边客户 | isCrossBorderHK | Boolean |
|
|
| 是否为 1+1 CN-SG 双边客户 | isCrossBorderSG | Boolean |
|
|
| 是否为 HK qualifier | isHKQualifier | Boolean |
|
|
| New to 1+1 CN-HK qualifier 时间 | cnHkQualifierDate | String (YYYY-MM) |
|
|
| 是否为 SG qualifier | isSGQualifier | Boolean |
|
|
| New to 1+1 CN-SG qualifier 时间 | cnSgQualifierDate | String (YYYY-MM) |
|
|
## A.5 MGM / 推荐关系
| 中文名 | 参数名 | 类型 | 历史值 | 说明 |
| --- | --- | --- | --- | --- |
| 某自然月成功推荐人数 | monthlySuccessfulReferrals | List | ✔ | 近 12 个月 `[{"date":"2025-03","successfulReferrals":"xxx"}, ...]` |
| 某自然年成功推荐人数总数 | yearlySuccessfulReferrals | List | ✔ | 近 N 年 `[{"date":"2024","successfulReferrals":"xxx"}, ...]` |
| 是否被成功推荐来开户且达标 | isReferredAndQualified | Boolean |
|
|
| MGM case ID | mgmCaseId | String |
|
|
| 某自然月推荐人数 | monthlyReferrals | List | ✔ | 近 12 个月 |
| 某自然年推荐人数 | yearlyReferrals | List | ✔ | 近 N 年 |
| 推荐关系 | referralRelation | List |
| `[{customerId:"xxx"}, ...]`;通过被推荐人客户号查询其数据 |
## A.6 投资偏好
| 中文名 | 参数名 | 类型 | 历史值 | 说明 |
| --- | --- | --- | --- | --- |
| 客户持有 valid RPQ 等级 | validRpq | String |
| 取值:0 / 1 / 2 / 3 / 4 / 5 / NA |
| Prospects Needs | prospectsNeeds | Boolean |
|
|
## A.7 行为与触点
| 中文名 | 参数名 | 类型 | 历史值 | 说明 |
| --- | --- | --- | --- | --- |
| 是否关注 "汇丰中国客户服务" 微信服务号且绑定银行账户 | isHsbcWechatLinked | Boolean |
|
|
| 上个自然月未登录、当前自然月登录过手机银行 1 天或以上 | isPrevMonthInactiveCurMonthActive | Boolean |
|
|
| 从当前自然月起前序连续 2 个完整月是否登录手机银行 | isPrevTwoMonthsActive | Boolean |
|
|
| 是否绑定 RM 企业微信 | isRmWeComBound | Boolean |
|
|
| 是否首次使用 Face ID 或指纹登录手机银行 | firstBiometricLogin | Boolean |
|
|
| 成功完成模拟资产配置的客户 | isSimulatedAllocationCompleted | Boolean |
|
|
# 附录 B:运算符清单
## B.1 String(字符串 / 枚举)
| 运算符 | 适用说明 |
| --- | --- |
| 等于 / 不等于 | 单值精确匹配 |
| 包含 / 不包含 | 子串匹配(仅自由文本类参数开放) |
| 属于 / 不属于 | 多值集合,比较值为多选或逗号分隔 |
| 为空 / 不为空 | 无需输入比较值 |
## B.2 BigDecimal / Number(数值)
| 运算符 | 适用说明 |
| --- | --- |
| \= / ≠ | 精确匹配 |
| \>、≥、<、≤ | 单边比较 |
| 区间 | `[下限, 上限]`,支持"含 / 不含端点"设置 |
| 为空 / 不为空 | 无需输入比较值 |
## B.3 Boolean(布尔)
| 运算符 | 适用说明 |
| --- | --- |
| \= / ≠ | 比较值为 `真` / `假`(下拉选择);`= 假` 与 `≠ 真` 等价 |
## B.4 Date(日期 YYYY-MM-DD / YYYY-MM)
| 运算符 | 适用说明 |
| --- | --- |
| \= / ≠ | 精确日期匹配 |
| \>、≥、<、≤ | 早于 / 晚于 |
| 区间 | 起止日期 |
| 相对当前 | N 日 / 月 / 年内;超过 N 日 / 月 / 年 |
| 为空 / 不为空 | 无需输入比较值 |
## B.5 List(近 N 月 / 近 N 年历史值)
### B.5.1 数值型 List(如 endOfBalanceList、TRB List)
先在"时间窗口"阶段聚合为单值,再套用 B.2 数值运算符:
- **聚合方式**:任一月满足 / 所有月满足 / 至少 M 个月满足 / 平均值 / 最大值 / 最小值
### B.5.2 枚举 / 字符串型 List(如 mscGroupList、mscCodeList)
在"时间窗口"阶段选择匹配策略:
- 任一月等于 X
- 所有月等于 X
- 至少 M 个月等于 X
### B.5.3 推荐关系 List(referralRelation)
- 列表长度(推荐人数)→ 套用 B.2 数值运算符
- 是否包含指定客户号 → 精确匹配,比较值为客户号或客户号列表
### B.5.4 月度 / 年度推荐人数 List
- 可聚合后套用 B.2(同 B.5.1)
- 也可指定月份 / 年份单点匹配