返回 Skill 列表
extension
分类: 数据与分析需要 API Key

指掌天下客户分析

上传你的销售明细和客户列表(Excel/CSV)或通过指掌天下MCP连接销售数据,自动生成一份可交互的 HTML 经营分析报告。从"谁是最重要的客户"到"流失风险有多严重",从"哪些客户最有潜力"到"该给谁推荐什么商品",一眼看清、一键导出。 深度适配指掌天下超级进销存等 ERP 系统导出的数据格式,也支持任意 Excel/CSV 数据源。

person作者: user_77d366fahubcommunity

客户维度深度分析

概述

深度客户分析技能,从销售明细和客户列表中提取客户价值、识别流失风险和增长机会,输出交互式 HTML 报告。

适用场景

  1. Excel 上传分析:用户上传销售明细 Excel + 客户列表 Excel
  2. MCP 连接器数据分析:通过 MCP 服务直接拉取销售明细和客户列表数据,无需手动上传 Excel

MCP 连接器

当用户未提供本地文件或明确要求通过连接器获取数据时,使用 MCP 服务拉取数据。

  • MCP 地址https://dev-hdsaas.facehand.cn/gateway/mcpservice/mcp
  • 认证方式:API Key(由用户在对话时提供)
  • 数据获取:通过 MCP 工具调用获取销售明细和客户列表,转为 pandas DataFrame 后进入统一分析流程

MCP 数据获取流程

  1. 确认用户已提供 API Key(如未提供,主动询问)
  2. 使用 MCP 地址连接服务,列出可用工具
  3. 默认数据规则(重要):若用户未指定获取什么数据,统一默认获取商品销售明细统计——调用 get_sales_detail 工具(订单级明细穿透,返回含单据信息、客户信息、商品信息、价格金额、成本利润的完整销售明细),按日期区间拉取后进入分析流程。仅在用户明确指定其他数据(如客户列表、库存、品类汇总等)时才调用对应工具。
  4. 调用 MCP 工具拉取销售明细数据(默认 get_sales_detail
  5. 调用 MCP 工具拉取客户列表数据(如服务支持,且用户明确需要时)
  6. 将返回数据转为 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 上传

  1. 用户上传销售明细 Excel/CSV(必须含客户名称、优惠后金额)
  2. 用户上传客户列表 Excel/CSV(可选)
  3. Skill 自动解析、分析、渲染
  4. 输出自包含 HTML 交互报告

方式 B — MCP 连接器

  1. 用户提供 API Key
  2. Skill 通过 MCP 地址拉取销售明细和客户列表数据
  3. 数据进入统一分析流程
  4. 输出自包含 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 中补充别名映射