{ "_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_.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 } ] }