mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 00:51:59 +00:00
83cd5da72e
- tests/fixtures/acceptance/retail_trends.py(python -m tests.fixtures.acceptance.retail_trends <db> [--today],数据源名 retail_trends,不动 retail.py):华东线下客单价降到七成带来的销售额下降(主要来自华东);三成线下订单转到线上造成的退款率辛普森(各渠道都降、整体升,结构为主);订单数的常规波动;取消单激增;线上销售额连涨十周以上;线上销售额的变化来自订单数;西南一家小店的退款率看着高但样本太少;本周没过完(和上周不可比,周一时本周还没有数据、那一题期望算不了)。订单数按店按周定好、金额在窄区间随机、退款按渠道比例挑,各效应不靠运气 - tests/fixtures/eval/analysis_suite.json:八道题,问法用使用者的说法(上周销售额为什么下降?退款率为什么上升了?上周订单数下降算不算异常?……),各配一个贡献或判定期望,订单数、取消单两题另配一个不必需的「一个数」 - 测试:同一个今天逐字节相同;四个不同的今天(周三、周日、周六、跨年)上用 app.analysis.run 按题集的期望 SQL 核对八个效应;周一那一题照实算不了;走接口导入题集、逐题试算,分析期望都算得出、判定和埋的效应一致;真运行的算期望(作答前后对得上、阈值按设置快照、参数对不上照实说)、读作答运行里的分析结论和引用、重评老结果、从头到尾评一题(助手剧本搭查库 → 分析卡 → 报告,对且可追溯、逐题 E1 等价已证明)
210 lines
8.8 KiB
JSON
210 lines
8.8 KiB
JSON
{
|
|
"format": "agentlab-eval-suite",
|
|
"version": 1,
|
|
"exported_at": "2026-10-21T00:00:00+00:00",
|
|
"suite": {
|
|
"name": "零售分析题集",
|
|
"description": "配 tests/fixtures/acceptance/retail_trends.py 的虚构零售库(数据源名 retail_trends):上周销售额下降主要来自华东、退款率的结构变化(辛普森)、订单数的常规波动、取消单激增、线上销售额持续上升、线上销售额的变化来自订单数、小样本门店的退款率、本周和上周不可比。期望的来源、判定都由平台的分析方法在期望 SQL 的结果上算,不靠人填。用于分析能力的回归和真实模型验收;店名、金额都是虚构的",
|
|
"timezone": "Asia/Shanghai",
|
|
"budget": {}
|
|
},
|
|
"cases": [
|
|
{
|
|
"seq": 1,
|
|
"kind": "ask",
|
|
"question": "上周销售额为什么下降?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "贡献", "按地区拆"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT s.region AS 地区, date(o.order_date, 'weekday 0', '-6 days') AS 周, ROUND(SUM(o.amount), 2) AS 销售额 FROM orders o JOIN stores s ON s.id = o.store_id WHERE o.status = 'paid' AND o.order_date BETWEEN date('{{ schedule.last_week_start }}', '-7 days') AND '{{ schedule.last_week_end }}' GROUP BY 地区, 周 ORDER BY 地区, 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "source",
|
|
"kind": "contribution",
|
|
"mode": "additive",
|
|
"params": {"by": ["地区"], "period": "周", "measure": "销售额", "label": "销售额"},
|
|
"top_n": 1,
|
|
"label": "上周销售额的下降主要来自哪个地区"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 2,
|
|
"kind": "ask",
|
|
"question": "退款率为什么上升了?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "贡献", "结构变化"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT channel AS 渠道, date(order_date, 'weekday 0', '-6 days') AS 周, SUM(status = 'refunded') AS 退款单数, COUNT(*) AS 订单数 FROM orders WHERE status <> 'cancelled' AND order_date BETWEEN date('{{ schedule.last_week_start }}', '-7 days') AND '{{ schedule.last_week_end }}' GROUP BY 渠道, 周 ORDER BY 渠道, 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "mix",
|
|
"kind": "contribution",
|
|
"mode": "ratio",
|
|
"params": {"by": ["渠道"], "period": "周", "numerator": "退款单数", "denominator": "订单数", "label": "退款率"},
|
|
"top_n": 1,
|
|
"label": "上周退款率的上升来自结构变化还是各渠道自身"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 3,
|
|
"kind": "ask",
|
|
"question": "上周订单数下降算不算异常?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "判定", "常规波动"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT date(order_date, 'weekday 0', '-6 days') AS 周, COUNT(*) AS 订单数 FROM orders WHERE status <> 'cancelled' AND order_date BETWEEN date('{{ schedule.this_week_start }}', '-175 days') AND '{{ schedule.last_week_end }}' GROUP BY 周 ORDER BY 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "band",
|
|
"kind": "verdict",
|
|
"op": "baseline",
|
|
"params": {"period": "周", "measure": "订单数", "label": "订单数"},
|
|
"label": "上周订单数的变化在不在常规波动范围内"
|
|
},
|
|
{
|
|
"id": "orders",
|
|
"kind": "scalar",
|
|
"column": "订单数",
|
|
"row": 24,
|
|
"required": false,
|
|
"label": "上周的订单数"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 4,
|
|
"kind": "ask",
|
|
"question": "上周取消的订单是不是突然变多了?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "判定", "异常"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT date(order_date, 'weekday 0', '-6 days') AS 周, COUNT(*) AS 取消单数 FROM orders WHERE status = 'cancelled' AND order_date BETWEEN date('{{ schedule.this_week_start }}', '-175 days') AND '{{ schedule.last_week_end }}' GROUP BY 周 ORDER BY 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "spike",
|
|
"kind": "verdict",
|
|
"op": "baseline",
|
|
"params": {"period": "周", "measure": "取消单数", "label": "取消单数"},
|
|
"label": "上周取消单数是不是明显超出常规波动"
|
|
},
|
|
{
|
|
"id": "cancelled",
|
|
"kind": "scalar",
|
|
"column": "取消单数",
|
|
"row": 24,
|
|
"required": false,
|
|
"label": "上周的取消单数"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 5,
|
|
"kind": "ask",
|
|
"question": "线上销售额最近是什么走势?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "判定", "趋势"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT date(order_date, 'weekday 0', '-6 days') AS 周, ROUND(SUM(amount), 2) AS 线上销售额 FROM orders WHERE status = 'paid' AND channel = '线上' AND order_date BETWEEN date('{{ schedule.this_week_start }}', '-84 days') AND '{{ schedule.last_week_end }}' GROUP BY 周 ORDER BY 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "trend",
|
|
"kind": "verdict",
|
|
"op": "trend",
|
|
"params": {"period": "周", "measure": "线上销售额", "label": "线上销售额"},
|
|
"label": "最近 12 周线上销售额的走势"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 6,
|
|
"kind": "ask",
|
|
"question": "上周线上销售额涨了,是订单多了还是客单价高了?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "贡献", "因子"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT date(order_date, 'weekday 0', '-6 days') AS 周, SUM(amount) AS 线上销售额, COUNT(*) AS 订单数, SUM(amount) * 1.0 / COUNT(*) AS 客单价 FROM orders WHERE status = 'paid' AND channel = '线上' AND order_date BETWEEN date('{{ schedule.last_week_start }}', '-7 days') AND '{{ schedule.last_week_end }}' GROUP BY 周 ORDER BY 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "factor",
|
|
"kind": "contribution",
|
|
"mode": "factor",
|
|
"params": {"period": "周", "product": "线上销售额", "factors": ["订单数", "客单价"], "label": "线上销售额"},
|
|
"top_n": 1,
|
|
"label": "上周线上销售额的变化主要来自订单数还是客单价"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 7,
|
|
"kind": "ask",
|
|
"question": "最近四周,西南店的退款率是不是比华东高?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "判定", "小样本"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT s.region AS 地区, SUM(o.status = 'refunded') AS 退款单数, COUNT(*) AS 订单数 FROM orders o JOIN stores s ON s.id = o.store_id WHERE o.status <> 'cancelled' AND s.region IN ('西南', '华东') AND o.order_date BETWEEN date('{{ schedule.last_week_start }}', '-21 days') AND '{{ schedule.last_week_end }}' GROUP BY 地区 ORDER BY 地区"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "differ",
|
|
"kind": "verdict",
|
|
"op": "differ",
|
|
"mode": "rate",
|
|
"params": {"by": ["地区"], "pairs": [["西南", "华东"]], "numerator": "退款单数", "denominator": "订单数", "label": "退款率"},
|
|
"label": "西南和华东退款率的差异站不站得住"
|
|
}
|
|
],
|
|
"enabled": true
|
|
},
|
|
{
|
|
"seq": 8,
|
|
"kind": "ask",
|
|
"question": "这周和上周比卖得怎么样?",
|
|
"datasources": ["retail_trends"],
|
|
"tags": ["分析", "判定", "可比性"],
|
|
"gold": {
|
|
"kind": "sql",
|
|
"datasource": "retail_trends",
|
|
"sql": "SELECT date(order_date, 'weekday 0', '-6 days') AS 周, COUNT(*) AS 订单数, ROUND(SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END), 2) AS 销售额 FROM orders WHERE status <> 'cancelled' AND order_date >= '{{ schedule.last_week_start }}' GROUP BY 周 ORDER BY 周"
|
|
},
|
|
"expectations": [
|
|
{
|
|
"id": "comparable",
|
|
"kind": "verdict",
|
|
"op": "comparable",
|
|
"params": {"period": "周", "base": "{{ schedule.last_week_start }}", "target": "{{ schedule.this_week_start }}", "measure": "订单数"},
|
|
"label": "本周和上周能不能直接比"
|
|
}
|
|
],
|
|
"enabled": true
|
|
}
|
|
]
|
|
}
|