| name | customer-profile |
| description | 客户画像查询与修改。根据客户姓名查询AUM、风险偏好、资产配置及近期变动等画像数据,支持查询、手动修改和智能更新画像。智能更新基于拜访记录自动生成新画像,更新前需确认。触发词:客户画像、查询客户、获取画像、修改画像、更新画像、智能更新画像。 |
客户画像(查询/修改/智能更新)
概述
根据客户姓名查询客户画像数据,支持查询、手动修改和智能更新三种模式。数据统一存储在 references/mock_profiles.json,无本地缓存或输出文件。
输入
- 客户经理姓名(必填):从
user_profile.json 或信息录入文件获取
- 客户姓名(必填):从信息录入文件的顶层
customer 字段获取,或由用户直接提供
数据源
客户画像数据存储在 references/mock_profiles.json,按经理分组,查询和修改均直接操作该文件。
数据结构示例:
{
"鲍经理": {
"张三": { "customer_name": "张三", ... },
"李四": { "customer_name": "李四", ... }
},
"李经理": {
"赵六": { "customer_name": "赵六", ... }
}
}
查询时先按经理定位,再按客户姓名查找。客户不存在则直接报错,不返回默认画像。
⛔ 隐私保护规则
严禁暴露其他经理的客户信息。 每个经理只能查看和修改自己名下的客户画像数据。
- 当客户不在当前经理名下时,不得透露该客户归属于哪位经理
- 不得列出其他经理名下的客户姓名
- 错误提示只能说明「未找到该客户」,并引导查询当前经理名下的客户列表
- 返回的
available_customers 字段仅包含当前经理名下的客户,绝不能包含其他经理的客户
🔍 模式一:查询画像(query)
触发
用户表达「查画像」「获取画像」「客户画像」时进入。
API调用
python3 scripts/mock_cfs_api.py \
--manager "<经理>" \
--customer "<客户姓名>" \
--mode query
返回结果包含 error 字段时,说明客户不存在。此时 available_customers 会返回当前经理名下的所有客户列表。
客户不存在时的回复格式:
❌ 未找到客户「XX」
您名下的客户:客户A、客户B、客户C
需要查询您名下某位客户的画像吗?
⚠️ 严禁在回复中透露该客户归属于哪位其他经理,严禁列出其他经理名下的客户。
展示格式
🔍 查询客户「客户XX」画像...
✅ 客户画像:
| 客户等级 | 高净值客户 |
| AUM | 800万+ |
| 风险偏好 | 稳健 |
| 近期变动 | 短期理财即将到期 |
📋 Demo数据,正式版对接CFS。
✏️ 模式二:手动修改画像(update)
触发
用户表达「修改画像」「改一下客户信息」时进入。用于客户画像数据发生变化,需要直接手动修改指定字段的场景。
交互流程
- 用户指定要修改的字段和新值
- 调用API修改画像数据(客户不存在时与查询模式同理,不暴露其他经理信息)
- 展示修改结果(旧值 → 新值)
API调用
python3 scripts/mock_cfs_api.py \
--manager "<经理>" \
--customer "<客户姓名>" \
--mode update \
--updates '{"aum":"900万+","recent_changes":"短期理财已到期"}'
--updates 参数为JSON格式,支持修改任意字段,如 aum、risk_preference、recent_changes、asset_allocation、tags 等。
修改结果
有变化:
✏️ 修改客户「客户XX」画像...
✅ 画像已修改:
| 字段 | 原值 | 新值 |
|------|------|------|
| AUM | 800万+ | 900万+ |
| 近期变动 | 短期理财即将到期 | 短期理财已到期 |
📋 Demo数据,正式版对接CFS。
无变化:
✏️ 修改客户「客户XX」画像...
✅ 画像数据无变化
🔄 模式三:智能更新画像(smart_update)
触发
用户表达「更新画像」「刷新画像」「智能更新画像」时进入。用于拜访完成后,根据拜访记录和现有画像自动生成新画像,更新前需用户确认。
与手动修改的区别
| 对比项 | 手动修改(update) | 智能更新(smart_update) |
|---|
| 触发词 | 「修改画像」「改一下」 | 「更新画像」「刷新画像」 |
| 数据来源 | 用户手动指定字段和值 | AI根据拜访记录+现有画像自动生成 |
| 更新范围 | 仅修改指定字段 | 全量分析,多字段联动更新 |
| 确认机制 | 直接修改 | 预览变更→用户确认→执行更新 |
交互流程
- 读取拜访记录文件(
visit_input_{经理}_{客户}.json)和拜访纪要
- 读取当前客户画像
- AI分析拜访内容,智能推断画像更新内容,重点关注以下字段:
- recent_changes:根据本次拜访沟通内容更新近期变动
- tags:根据客户反馈和意向更新标签(新增意向标签、移除过期标签)
- holding_products:如有新增产品认购,更新持有产品列表
- asset_allocation:如资产配置发生变化,更新配置比例
- risk_preference / risk_tolerance:如客户风险偏好有明显变化,更新风险属性
- aum:如AUM规模有明显变化,更新资产规模
- 调用API预览变更(不加
--confirm)
- 展示变更对比,请用户确认
- 用户确认后,调用API执行更新(加
--confirm)
智能推断规则
recent_changes 更新规则:
- 根据拜访纪要中的「客户需求与动态摸排」和「本次拜访成效」提炼最新变动
- 保留与本次拜访不相关的历史变动信息
- 新变动信息前置,历史信息后置
- 避免信息冗余,合并同类变动
tags 更新规则:
- 根据客户反馈新增意向标签(如「配置意向」「产品认购」)
- 移除已过时的标签(如「闲置资金」→ 客户已配置后移除)
- 保留与本次拜访无关的标签
- 标签总数控制在3-6个
holding_products 更新规则:
- 仅在客户明确认购新产品时新增
- 产品到期或赎回时移除
- 不确定时不修改
asset_allocation 更新规则:
- 仅在客户资产配置发生实质性变化时更新
- 比例变化需有明确依据(如客户已认购/赎回产品)
- 不确定时保持原值
risk_preference / risk_tolerance 更新规则:
- 仅在客户明确表达风险偏好变化时更新
- 变化需有充分依据(如「客户表示愿意尝试更高风险产品」)
- 不确定时保持原值
API调用
第一步:预览变更
python3 scripts/mock_cfs_api.py \
--manager "<经理>" \
--customer "<客户姓名>" \
--mode smart_update \
--updates '<AI生成的更新JSON>'
返回 status: "preview" 表示预览模式,未实际更新。changed 字段展示所有变更字段的旧值和新值。
第二步:确认更新
python3 scripts/mock_cfs_api.py \
--manager "<经理>" \
--customer "<客户姓名>" \
--mode smart_update \
--updates '<同上更新JSON>' \
--confirm
返回 status: "updated" 表示已实际更新。
展示与确认
预览变更展示:
🔄 智能更新客户「客户XX」画像...
根据拜访记录分析,以下字段建议更新:
| 字段 | 原值 | 新值 |
|------|------|------|
| 近期变动 | 短期理财即将到期,部分活期闲置 | 短期理财已到期,部分资金已配置固收+产品,仍有部分闲置待配置 |
| 客户标签 | 存量盘活、稳健型、固收偏好、闲置资金、低利率敏感 | 存量盘活、稳健型、固收偏好、配置意向、低利率敏感 |
| 持有产品 | XX稳健理财90天、XX固收+组合、XX货币基金 | XX固收+组合、XX稳健理财180天、XX货币基金 |
📝 变更说明:
- 近期变动:客户短期理财已到期,部分资金已配置固收+产品
- 客户标签:「闲置资金」→「配置意向」(客户已有明确配置意向)
- 持有产品:XX稳健理财90天到期移除,新增XX稳健理财180天
确认更新画像?(回复「确认」更新,或指定要调整的字段)
用户确认后:
✅ 客户画像已更新:
| 字段 | 原值 | 新值 |
|------|------|------|
| 近期变动 | 短期理财即将到期,部分活期闲置 | 短期理财已到期,部分资金已配置固收+产品,仍有部分闲置待配置 |
| 客户标签 | 存量盘活、稳健型、固收偏好、闲置资金、低利率敏感 | 存量盘活、稳健型、固收偏好、配置意向、低利率敏感 |
| 持有产品 | XX稳健理财90天、XX固收+组合、XX货币基金 | XX固收+组合、XX稳健理财180天、XX货币基金 |
📋 Demo数据,正式版对接CFS。
无变化时:
🔄 智能更新客户「客户XX」画像...
✅ 画像数据无需更新,当前画像已是最新状态。
用户调整
用户确认前,可以要求调整特定字段:
- 「标签不要改」→ 从 updates 中移除 tags 字段
- 「近期变动改成XX」→ 修改 recent_changes 的值
- 「持有产品不要动」→ 从 updates 中移除 holding_products 字段
调整后重新预览,再次确认。
画像字段说明
| 字段 | 说明 | 智能更新优先级 |
|---|
| customer_name | 客户姓名 | 不更新 |
| customer_level | 客户等级(如高净值客户) | 低(仅在明显升级/降级时) |
| card_type | 卡类型(如白金卡) | 低(仅在等级变更时联动) |
| aum | 管理资产规模 | 中(大额变动时) |
| risk_preference | 风险偏好 | 低(需明确证据) |
| risk_tolerance | 风险承受能力 | 低(需明确证据) |
| asset_allocation | 资产配置分布 | 中(配置实质性变化时) |
| recent_changes | 近期变动 | 高(每次拜访后必评估) |
| holding_products | 持有产品列表 | 中(认购/赎回时) |
| tags | 客户标签 | 高(每次拜访后必评估) |
与其他skill的接口
- 输入:客户经理姓名 + 客户姓名(来自
user_profile.json)
- 输入(智能更新):拜访记录 + 拜访纪要 + 现有画像数据
- 输出:画像数据(供
visit-note 读取并填入纪要模板的 {customer_profile} 区域)