sofhiaazzhr's picture
[NOTICKET] test: planner eval cases for trend-chart aggregation + column disambiguation
5edfc00
Raw
History Blame
10 kB
{
"_about": "Golden planner dataset (E-planner eval — runs against the LIVE planner LLM, PlannerService.plan). Each case is a question + `expect` = a set of IR/plan ASSERTIONS (rule-compliance scoring, NOT exact IR match — many IRs are valid, we only pin the properties that matter). Grounded in `PA Data Dummy.xlsx` via eval/planner/catalog_fixture.py. `id` is a stable per-case handle so timestamped runs (results/planner_result_<ts>.json) diff case-by-case. `carried_over`=true marks behavior believed CORRECT today (regression guard); the rest target the 3 known planner bugs. Balanced ID/EN because users code-switch.",
"_expect_keys": {
"has_tool": "some task tool_call uses this tool name",
"no_tool": "no task uses this tool",
"any_tool": "at least one of these tool names is present (e.g. an aggregation step)",
"selects_col": "some retrieve_data select references this column NAME (by column_id, not the alias — catches wrong-column-hidden-behind-alias)",
"not_selects_col": "NO select references this column NAME (e.g. must not chart Plan_PA_Percent when the user asked for PA_Percent)",
"select_agg": "some retrieve_data IR select has an agg with this fn (count/sum/avg/min/max/count_distinct)",
"group_by": "true = some IR has a non-empty group_by; false = NO IR has group_by (raw-row guard)",
"chart_aggregated": "true = the chart's data is aggregated (group_by in the IR OR any analyze_* step present), not raw per-record rows",
"group_by_col": "some IR group_by contains this column NAME",
"filter_op": "some IR filter uses this op",
"no_filter_op": "NO IR filter uses this op",
"has_filter": "true = at least one IR has a filter",
"order_dir": "some IR order_by uses this dir (asc/desc)",
"limit": "some IR has exactly this limit",
"infeasible": "true = plan has no tasks / an infeasible_reason (measure not in catalog)"
},
"cases": [
{
"id": "count_zero_pa",
"category": "count",
"lang": "en",
"question": "how many records have PA_Percent = 0?",
"expect": {"select_agg": "count", "has_filter": true, "group_by": false},
"carried_over": true
},
{
"id": "count_mttr_gt20_id",
"category": "count",
"lang": "id",
"question": "berapa banyak record dengan MTTR di atas 20?",
"expect": {"select_agg": "count", "has_filter": true},
"carried_over": true
},
{
"id": "count_section_hauler",
"category": "count",
"lang": "en",
"question": "how many rows are in section OB HAULER?",
"expect": {"select_agg": "count", "has_filter": true},
"carried_over": true
},
{
"id": "rank_units_worst_pa_id",
"category": "ranking",
"lang": "id",
"question": "5 unit dengan PA terburuk?",
"expect": {"group_by": true, "group_by_col": "Equipment_Number", "select_agg": "avg", "order_dir": "asc", "limit": 5},
"carried_over": false
},
{
"id": "rank_models_top_mttr_id",
"category": "ranking",
"lang": "id",
"question": "top 3 model dengan MTTR tertinggi?",
"expect": {"group_by": true, "group_by_col": "Model_Unit", "select_agg": "avg", "order_dir": "desc", "limit": 3},
"carried_over": true
},
{
"id": "rank_sections_lowest_pa_en",
"category": "ranking",
"lang": "en",
"question": "which section has the lowest average PA?",
"expect": {"group_by": true, "group_by_col": "Section", "select_agg": "avg"},
"carried_over": true
},
{
"id": "rank_units_most_breakdown_id",
"category": "ranking",
"lang": "id",
"question": "unit mana yang paling sering breakdown?",
"expect": {"group_by": true, "group_by_col": "Equipment_Number", "order_dir": "desc"},
"carried_over": false
},
{
"id": "rank_units_worst_pa_en",
"category": "ranking",
"lang": "en",
"question": "list the 10 worst units by availability",
"expect": {"group_by": true, "group_by_col": "Equipment_Number", "select_agg": "avg", "order_dir": "asc", "limit": 10},
"carried_over": false
},
{
"id": "fuzzy_model_777_id",
"category": "fuzzy_filter",
"lang": "id",
"question": "berapa banyak model 777?",
"expect": {"select_agg": "count", "no_filter_op": "in"},
"carried_over": false
},
{
"id": "fuzzy_model_hd785_id",
"category": "fuzzy_filter",
"lang": "id",
"question": "berapa banyak unit HD785?",
"expect": {"select_agg": "count", "no_filter_op": "in"},
"carried_over": true
},
{
"id": "fuzzy_model_ex_en",
"category": "fuzzy_filter",
"lang": "en",
"question": "how many EX excavator units are there?",
"expect": {"no_filter_op": "in"},
"carried_over": false
},
{
"id": "agg_pa_per_section_id",
"category": "aggregate",
"lang": "id",
"question": "berapa rata-rata PA per section?",
"expect": {"group_by": true, "group_by_col": "Section", "select_agg": "avg"},
"carried_over": true
},
{
"id": "agg_mttr_per_model_en",
"category": "aggregate",
"lang": "en",
"question": "what is the average MTTR per model unit?",
"expect": {"group_by": true, "group_by_col": "Model_Unit", "select_agg": "avg"},
"carried_over": true
},
{
"id": "agg_downhour_per_group_id",
"category": "aggregate",
"lang": "id",
"question": "total down hour per equipment group?",
"expect": {"group_by": true, "group_by_col": "Equipment_Group_ID", "select_agg": "sum"},
"carried_over": true
},
{
"id": "desc_mttr_stats_id",
"category": "descriptive",
"lang": "id",
"question": "berikan ringkasan statistik MTTR",
"expect": {"has_tool": "analyze_descriptive"},
"carried_over": true
},
{
"id": "desc_pa_stats_en",
"category": "descriptive",
"lang": "en",
"question": "give me the summary statistics for PA_Percent",
"expect": {"has_tool": "analyze_descriptive"},
"carried_over": true
},
{
"id": "corr_mttr_pa_id",
"category": "correlation",
"lang": "id",
"question": "apakah ada korelasi antara MTTR dan PA?",
"expect": {"has_tool": "analyze_correlation"},
"carried_over": true
},
{
"id": "corr_freq_pa_en",
"category": "correlation",
"lang": "en",
"question": "is breakdown frequency correlated with availability?",
"expect": {"has_tool": "analyze_correlation"},
"carried_over": true
},
{
"id": "trend_pa_daily_id",
"category": "trend",
"lang": "id",
"question": "bagaimana trend PA harian?",
"expect": {"has_tool": "analyze_trend"},
"carried_over": true
},
{
"id": "trend_downhour_en",
"category": "trend",
"lang": "en",
"question": "show the trend of total down hours over time",
"expect": {"has_tool": "analyze_trend"},
"carried_over": true
},
{
"id": "merge_worst_pa_and_mttr_id",
"category": "merge",
"lang": "id",
"question": "model mana yang PA-nya paling buruk sekaligus MTTR-nya paling tinggi?",
"expect": {"group_by": true, "group_by_col": "Model_Unit"},
"carried_over": true
},
{
"id": "raw_rows_low_pa_id",
"category": "counter_raw_rows",
"lang": "id",
"question": "tampilkan 10 record dengan PA di bawah 50",
"expect": {"group_by": false, "has_filter": true, "limit": 10},
"carried_over": true
},
{
"id": "raw_rows_head_en",
"category": "counter_raw_rows",
"lang": "en",
"question": "show me the first 5 rows of the data",
"expect": {"group_by": false},
"carried_over": true
},
{
"id": "exact_model_777d_id",
"category": "counter_exact_filter",
"lang": "id",
"question": "berapa banyak record untuk model 777D?",
"expect": {"select_agg": "count", "has_filter": true},
"carried_over": true
},
{
"id": "exact_section_loader_en",
"category": "counter_exact_filter",
"lang": "en",
"question": "how many records are in the OB LOADER section?",
"expect": {"select_agg": "count", "has_filter": true},
"carried_over": true
},
{
"id": "disambig_trend_pa_id",
"category": "column_disambiguation",
"lang": "id",
"question": "bagaimana trend PA?",
"expect": {"selects_col": "PA_Percent", "not_selects_col": "Plan_PA_Percent"},
"carried_over": false
},
{
"id": "disambig_avg_pa_en",
"category": "column_disambiguation",
"lang": "en",
"question": "what is the average PA per section?",
"expect": {"selects_col": "PA_Percent", "not_selects_col": "Plan_PA_Percent"},
"carried_over": false
},
{
"id": "chart_trend_pa_id",
"category": "chart",
"lang": "id",
"question": "bagaimana visualisasi trend PA?",
"expect": {"has_tool": "render_chart", "chart_aggregated": true, "selects_col": "PA_Percent", "not_selects_col": "Plan_PA_Percent"},
"carried_over": false
},
{
"id": "chart_avg_pa_by_section_en",
"category": "chart",
"lang": "en",
"question": "show me a bar chart of average PA per section",
"expect": {"has_tool": "render_chart", "group_by": true, "selects_col": "PA_Percent"},
"carried_over": false
},
{
"id": "infeasible_churn_id",
"category": "infeasible",
"lang": "id",
"question": "berapa churn rate pelanggan?",
"expect": {"infeasible": true},
"carried_over": true
},
{
"id": "infeasible_profit_en",
"category": "infeasible",
"lang": "en",
"question": "what is the monthly profit margin?",
"expect": {"infeasible": true},
"carried_over": true
}
]
}