客户维度深度分析
概述
深度客户分析技能,从销售明细和客户列表中提取客户价值、识别流失风险和增长机会,输出交互式 HTML 报告。
适用场景
- Excel 上传分析:用户上传销售明细 Excel + 客户列表 Excel
- MCP 连接器数据分析:通过 MCP 服务直接拉取销售明细和客户列表数据,无需手动上传 Excel
MCP 连接器
当用户未提供本地文件或明确要求通过连接器获取数据时,使用 MCP 服务拉取数据。
- MCP 地址:
https://dev-hdsaas.facehand.cn/gateway/mcpservice/mcp - 认证方式:API Key(由用户在对话时提供)
- 数据获取:通过 MCP 工具调用获取销售明细和客户列表,转为 pandas DataFrame 后进入统一分析流程
MCP 数据获取流程
- 确认用户已提供 API Key(如未提供,主动询问)
- 使用 MCP 地址连接服务,列出可用工具
- 默认数据规则(重要):若用户未指定获取什么数据,统一默认获取商品销售明细统计——调用
get_sales_detail工具(订单级明细穿透,返回含单据信息、客户信息、商品信息、价格金额、成本利润的完整销售明细),按日期区间拉取后进入分析流程。仅在用户明确指定其他数据(如客户列表、库存、品类汇总等)时才调用对应工具。 - 调用 MCP 工具拉取销售明细数据(默认
get_sales_detail) - 调用 MCP 工具拉取客户列表数据(如服务支持,且用户明确需要时)
- 将返回数据转为 DataFrame,传入
scripts/main.py的分析流程(与 Excel 数据同路径)
分析方法
1. SABC 客户分层
按销售额累加占比分层(阈值可自定义,默认 60/80/95):
| 分层 | 累加占比 | 经营策略 | |------|----------|----------| | S 类 | 0-60% | 深度绑定,资源倾斜 | | A 类 | 60-80% | 升级培育,向 S 类转化 | | B 类 | 80-95% | 激活复购,提升客单价 | | C 类 | 95-100% | 标准化服务,筛选高潜 |
2. 客户生命周期
按末购天数分类(阈值可自定义,默认 30/90/180/365 天):
| 状态 | 末购天数 | 行动 | |------|----------|------| | 活跃 | ≤30 天 | 深度绑定,交叉销售 | | 低活 | 30-90 天 | 定向触达,优惠唤醒 | | 流失预警 | 90-180 天 | 紧急干预,1v1 挽回 | | 高危流失 | 180-365 天 | 定期回访,品牌维护 | | 已流失 | >365 天 | 保持曝光,等待回流 |
3. 潜力客户识别(5 种类型)
| 类型 | 判定条件 | 策略 | |------|----------|------| | 新客高增长型 | 首购≤6月 + 销售额≥P50 + 毛利率≥P50 | 资源倾斜,快速扩品 | | 高频低客单型 | 订单数≥P75 + 客单价≤P25 + 毛利率≥P50 | 组合推荐,提升客单价 | | 降频需激活型 | 末购>30天 + 客单价≥P50 + 销售额≥P50 | 定向活动,重新激活 | | 高毛利低销量型 | 毛利率≥P75 + 销售额≤P50 + 订单≥2 | 爆品引流,以点带面 | | 品类单一型 | 品类数=1 + 销售额≥P50 + 非新客 | 关联推荐,品类渗透 |
4. 老客增品推荐
同组构建优先级:客户分类 > 销售区域 > SABC 分层 推荐条件:同组中 ≥1/3 客户买过但该客户未购的商品,按覆盖率降序 推荐列表包含字段:客户名称、推荐商品、商品毛利率、同组购买率、预计增收、推荐理由
使用流程
方式 A — Excel 上传
- 用户上传销售明细 Excel/CSV(必须含客户名称、优惠后金额)
- 用户上传客户列表 Excel/CSV(可选)
- Skill 自动解析、分析、渲染
- 输出自包含 HTML 交互报告
方式 B — MCP 连接器
- 用户提供 API Key
- Skill 通过 MCP 地址拉取销售明细和客户列表数据
- 数据进入统一分析流程
- 输出自包含 HTML 交互报告
输出报告结构
- 顶部:数据范围(全量明细最小~最大日期)+ KPI 卡片 + SABC 环形图 + 生命周期漏斗
- SABC 分层图和生命周期漏斗图标题旁有 ⚙ 齿轮图标,点击可打开设置面板调整分层/漏斗计算阈值
- 设置面板修改阈值后,前端即时重算分层/漏斗结果,无需重新分析
- 顶部时间筛选:仅过滤下方客户列表(规则见「时间区间口径」),不重算 KPI/分层/漏斗
- 中部:AI 经营建议面板(3 个 Tab:分层策略 / 生命周期策略 / 潜力客户策略;每个潜力策略卡片带类型名 badge,如「新客高增长型」)
- 底部:客户分层明细 + 老客增品推荐(Tab 切换;表格按每页 100 条分页,页码按钮动态生成,总数与筛选数实时显示)
- 抽屉:点击客户行 → 详情 + 个性化 AI 建议 + 增品推荐 + 真实月度销售额趋势
- 导出:点击「导出 Excel」按钮,生成单个 .xlsx 文件,包含客户分层明细和老客增品推荐两个页签
客户详情抽屉计算规则(点击客户行)
| 指标 | 计算规则 | 口径 | |------|----------|------| | 首次购买 | 该客户最早一笔交易的录单时间/过账时间 | 全量数据 | | 最近购买 | 该客户最晚一笔交易的录单时间/过账时间 | 全量数据 | | 末购天数 | 数据截止日 − 最近购买日;数据截止日 = 全量数据最大日期(非当前系统日期) | 全量数据 | | 销售额趋势 | 按「录单时间/过账时间」按月聚合的真实销售额(优惠后金额),缺月补 0,X 轴月份跟随顶部筛选区间 | 全量聚合 | | 末购天数着色 | 绿 ≤ 低活阈值、橙 ≤ 流失预警阈值、红 > 流失预警阈值,与生命周期设置面板阈值联动 | — | | 无日期降级 | 数据源缺日期字段时:末购天数显示「—(数据缺日期)」、趋势图提示无分月数据 | — |
首次购买/最近购买/末购天数/累计指标均基于全量数据,不随顶部时间筛选变化;趋势图展示范围跟随筛选区间,但数值为全量聚合的真实月度销售额,非估算/模拟。
时间区间口径(顶部数据范围与筛选)
- 数据范围:顶部「数据范围:起始 ~ 截止」显示全量销售明细的最小~最大日期,由
get_date_range()计算(优先「录单时间」,缺失时回退「过账时间」;两者皆无时回退到数据截止日 = 全量最大日期)。 - 业务日期口径:统一优先使用「录单时间」作为业务日期(掌天下等系统批量过账时「过账时间」常为同一时间戳,录单时间更接近真实业务日期);「录单时间」缺失时回退「过账时间」,两者皆无时该行不参与日期相关计算;日期相关的数据范围、生命周期、趋势均以此为准。回退到「过账时间」时会在 warnings 中提示。
- 筛选规则:点击「筛选客户」后,仅按「最近一次购买日期落在所选区间内」过滤下方客户列表;KPI 卡片、SABC 分层、生命周期漏斗、潜力识别、增品推荐、AI 建议均基于全量数据,不随筛选重算(前端更新「区间内有交易客户数(全量 N 位)」作参考)。
- 日期基准统一:末购天数、首购距今(潜力识别)、生命周期分类统一以「数据截止日 = 全量最大日期」为基准,不使用当前系统日期,保证历史数据口径一致。
字段降级策略
| 缺失字段 | 降级处理 | |----------|----------| | 成本金额 | 毛利 = 销售额,毛利率 = 100% | | 单据编号 | 订单数 = 行数估算 | | 商品名称 | 增品推荐不可用 | | 商品分类 | 品类分析降级 | | 客户分类/销售区域 | 同组构建降级到 SABC 分层 |
技术架构
数据源 → normalizer.py(字段归一化) → analyzer.py(计算引擎) → template.html(渲染)
scripts/normalizer.py:Excel 解析、字段检测与别名映射、缺失降级scripts/analyzer.py:SABC、生命周期、潜力、增品、AI 建议scripts/main.py:主入口,协调三阶段流程scripts/template.html:锁定样式的数据驱动 HTML 模板
执行流程
当用户触发此 Skill 时,严格按照以下步骤执行:
Step 1 — 确认数据来源
支持两种数据获取方式,优先询问用户选择哪种:
方式 A:Excel 上传
- 确认用户提供的销售明细和客户列表文件路径
- 如用户未指定路径,主动询问文件位置
方式 B:MCP 连接器
- 确认用户已提供 API Key(如未提供,主动询问)
- 通过 MCP 地址
https://dev-hdsaas.facehand.cn/gateway/mcpservice/mcp连接服务 - 默认获取商品销售明细统计(用户未指定数据时):调用
get_sales_detail按日期区间拉取订单级明细;用户明确指定其他数据时才调用对应工具 - 将返回数据保存为临时文件或直接传入分析流程
Step 2 — 安装依赖(如需要)
- 检查 pandas、openpyxl 是否已安装
- 如缺失,使用运行时虚拟环境安装:
pip install pandas openpyxl xlsxwriter
Step 3 — 运行分析
- 执行
scripts/main.py,传入数据(文件路径或 MCP 返回数据):# Excel 方式 python scripts/main.py "销售明细.xlsx" "客户列表.xlsx" # MCP 方式:将拉取的数据保存为临时文件后传入 python scripts/main.py "mcp_sales_temp.xlsx" "mcp_customers_temp.xlsx" - main.py 将输出 JSON 摘要(含 success、output_path、summary)
- 如果 success 为 false,向用户报告错误信息
Step 4 — 呈现报告
- 读取输出的 HTML 文件路径
- 使用
present_files将 HTML 报告展示给用户
Step 5 — 引导使用
- 告知用户报告中的关键交互:
- ⚙ 齿轮图标可调整 SABC 分层和生命周期阈值
- 点击客户行可查看详情抽屉
- Tab 切换客户分层明细 / 老客增品推荐
- 「导出 Excel」按钮导出双页签 .xlsx 文件
注意事项
- 依赖项:Python 3.8+、pandas、openpyxl、xlsxwriter
- 数据要求:销售明细必须包含「客户名称」和「优惠后金额」字段
- 文件格式:支持 .xlsx / .xls / .csv
- 数据量:10 万行以内数据处理时间约 30-60 秒
- 不包含敏感信息:所有脚本仅做本地数据处理,不上传任何数据
- 报告为自包含 HTML:无需网络即可查看图表(ECharts CDN 有本地降级)
- 掌天下适配:支持掌天下导出的字段命名,normalizer.py 自动映射
- MCP 连接器:通过
https://dev-hdsaas.facehand.cn/gateway/mcpservice/mcp获取数据时,需用户提供 API Key;MCP 返回数据字段需与 normalizer.py 字段映射对齐,如字段名不一致需在 normalizer.py 中补充别名映射
微信扫一扫