终端数据分析
快速开始
用户上传终端销售 Excel 文件后,本 skill 自动完成:数据校验 → 字段识别 → 多维分析 → HTML报告 → 图片输出。
所有工具文件(Python脚本、模板、样式)与 SKILL.md 在同一目录下,直接按文件名引用。
执行流程
步骤1:自动安装依赖
每个脚本内置 ensure_deps() 函数,首次运行时自动检测并安装缺失依赖(pandas、openpyxl)。优先使用清华镜像源,失败自动回退默认源。用户无需手动安装任何依赖。
# 直接调用脚本,依赖自动处理
python process_sales_data.py <用户上传的文件路径>
步骤2:数据校验与字段识别
脚本自动识别以下维度字段(有什么分析什么,不预设):
| 字段类型 | 关键词匹配 | |:---|:---| | 品牌 | 品牌、brand | | 机型 | 机型、model、型号 | | 地区 | 省份、地市、地区、城市 | | 营业厅/门店 | 营业厅、门店 | | 客户 | 客户 | | 串码 | 串码、IMEI、串号 | | 日期 | 日期、date、时间 | | 金额 | 售价、金额、价格 |
步骤3:确认分析维度
根据识别出的字段,向用户列出将执行的分析维度,等待用户确认后再执行。
步骤4:生成HTML报告
AI 直接生成完整 HTML 文件(不依赖外部模板文件),使用以下规范:
报告结构:
<!-- 标题区 -->
<h1>{{由数据内容决定的标题}}</h1>
<p>数据周期:XX | 生成时间:XX</p>
<!-- KPI卡片行(4列) -->
销售总量 | 销售总额 | 活跃门店 | 环比增长
<!-- 维度区块(有字段才渲染,无字段整块跳过) -->
地区销售概览 / 品牌销售排行 / 热销机型TOP10
占位符说明(AI生成HTML时按实际数据填充):
{{REPORT_TITLE}}→ 报告标题,根据数据来源命名{{REGION_TITLE}}→ 地区区块标题(如:9地市销售概览、各省销售对比){{REGION_COL}}→ 地区列名(地市/省份/城市){{BRAND_TITLE}}→ 品牌区块标题{{MODEL_TITLE}}→ 机型区块标题{{KPI1_LABEL}}~{{KPI4_VALUE}}→ KPI 卡片标签与数值
样式规范(内嵌CSS,红色系热力图):
/* 容器 */
.report-container { width: 1200px; margin: 0 auto; padding: 16px; }
/* KPI卡片 */
.kpi-card { padding: 10px; background: #fef2f2; border-left: 3px solid #dc2626; }
.kpi-label { font-size: 12px; color: #666; }
.kpi-value { font-size: 18px; font-weight: bold; color: #dc2626; }
/* 区块标题 */
.section-title { background: #dc2626; color: #fff; padding: 6px 10px; font-size: 14px; }
/* 热力图配色(销量高→深红,低→浅色) */
.heat-up-1 { background: #fff5f5; }
.heat-up-2 { background: #fed1d1; }
.heat-up-3 { background: #fca5a5; }
.heat-up-4 { background: #f87171; color: #fff; }
.heat-up-5 { background: #dc2626; color: #fff; }
.heat-flat { background: #fafafa; }
.heat-down-1 { background: #fefefe; }
.heat-down-2 { background: #f5f5f5; }
.heat-down-3 { background: #e5e5e5; }
.heat-down-4 { background: #d4d4d4; }
/* 表格 */
table { width: 100%; border-collapse: collapse; font-size: 12px; }
th, td { padding: 5px 8px; border: 1px solid #e5e5e5; text-align: center; }
th { background: #fef2f2; font-weight: bold; }
布局规范:
- 紧凑布局,单元格内边距 4-6px,减少留白
- 主标题 18-20px 加粗;副标题 14-16px;正文 12-14px
- 并列项标题字数对齐(如:销售数量/销售金额 保持4字)
- 内容尽量单屏展示
步骤5:输出图片
HTML 报告生成后,用以下方式转为 PNG:
python html_to_image.py <生成的HTML文件路径>
HTML 和 PNG 均保存到桌面,命名规范:{报告类型}_{YYYYMMDD}.html
核心原则
- 不预设任何具体名称:报告标题、地区名称全部由实际数据决定,不硬编码"吉林联通""9地市"等
- 不编造数据:用户数据中没有的字段,不能出现在分析结果中
- 按需渲染区块:数据中没有某维度字段时,对应区块整块跳过
- 先确认再执行:所有分析动作开始前需用户确认
依赖说明
基础依赖(自动安装):
pandas+openpyxl— 数据读取与分析,每个脚本启动时自动检测并安装
HTML转图片(可选):
pip install playwright && playwright install chromium
无此依赖时,脚本跳过图片输出并给出提示,不影响数据分析核心功能。
数据源支持
- 营业厅销售串码报表:字段含营业厅、串码、机型、品牌、售价等
- 2B省分销售明细报表:字段含客户名称、串码、机型、合约金额等
- 其他自定义格式:按实际字段自适应分析,不依赖固定格式
内置脚本说明
| 脚本文件 | 功能描述 |
|:---|:---|
| process_sales_data.py | 销售数据自适应分析(含 ensure_deps 自动安装依赖) |
| process_inventory.py | 库存查询(省/市仓库、机型筛选、物资编码映射) |
| compliance_check.py | 合规检查(销售数据 vs 合规规则比对) |
| html_to_image.py | HTML转PNG(playwright 优先,wkhtmltoimage 备用) |
内置资源文件
| 资源文件 | 用途 |
|:---|:---|
| report_template.html | HTML报告模板(全占位符,无硬编码) |
| style_guide.md | 视觉规范文档(配色/字体/布局) |
| heatmap_palette.json | 热力图色阶定义 |
| data_source_spec.md | 数据源字段规范 |
| report_examples.md | 报告示例与占位符对照表 |
热力图色阶(内嵌参考)
{
"heat_up": ["#fff5f5","#fed1d1","#fca5a5","#f87171","#dc2626"],
"heat_flat": "#fafafa",
"heat_down": ["#fefefe","#f5f5f5","#e5e5e5","#d4d4d4"]
}
规则:将数值按五档分段(0-20%, 20-40%, 40-60%, 60-80%, 80-100%),映射到对应色阶。下降数据同理反向映射。
Scan to join WeChat group