-- ============================================================
-- 04_init_data.sql
-- 初始化数据：任务模板 + 指标字典 + 门店主数据
-- ============================================================

-- 任务模板
INSERT INTO analytics.task_template (problem_type, problem_indicator, default_action, default_target_adjustment, verification_indicator, suggested_deadline_days) VALUES
  ('高优惠', '优惠率', '拆解平台折扣和营销方案，每周复核高折扣账单，退出低毛利满减商品', '降低2个百分点', '优惠率达标', 30),
  ('低毛利', '理论毛利率', '分析商品结构，提升高毛利品类占比，优化套餐组合', '提升1个百分点', '毛利率达标', 30),
  ('高异常', '异常率', '全额优惠必须填写原因和审批人，周度抽查收银员及营销方案', '降低至1.5%以下', '异常率达标', 30),
  ('低复购', '会员复购率', '执行消费后第3天和第7天触达，使用会员价和复购券', '提升5个百分点', '复购率达标', 30),
  ('低客单', '平均客单价', '按午晚市设计主食加小吃、凉菜、饮料的组合销售', '提升1元', '客单价达标', 30),
  ('标杆输出', '经验输出', '总结核心SKU结构、会员运营、平台价格纪律等可推广经验', '输出至少1个标准化经验模块', '经验文档完成', 30),
  ('数据修复', '数据口径修复', '核实成本单位与门店映射关系，修正盘点数据口径', '成本口径校验通过', '口径校验通过', 15)
ON CONFLICT (problem_type) DO NOTHING;

-- 指标字典
INSERT INTO analytics.indicator_dictionary (indicator_name, business_definition, formula, data_source, update_frequency, owner, scope, yellow_threshold, red_threshold, version_date) VALUES
  ('实收', '门店实际收到的金额，扣除优惠后的净收入', 'sum(received_total)', 'bill_fact / c114', '日', '财务部', '门店/公司', NULL, NULL, '2026-04-01'),
  ('客单价', '平均每笔账单的实收金额', 'sum(received_total) / count(*)', 'bill_fact', '日', '运营部', '门店/公司', 30, 28, '2026-04-01'),
  ('优惠率', '优惠总额占消费总额的比例', 'sum(discount_total) / sum(consumption) * 100', 'bill_fact / c068 / c009', '日', '运营部', '门店/公司', 22, 25, '2026-04-01'),
  ('理论毛利率', '理论利润占实收的比例', 'sum(theoretical_profit) / sum(received_total) * 100', 'bill_fact / c181 / c114', '日', '财务部', '门店/公司', 70, 68, '2026-04-01'),
  ('实际成本率', '实际倒挤成本占实收的比例', 'actual_food_cost / received * 100', 'inventory_cost_records + bill_fact', '月', '财务部', '门店', 30, 35, '2026-04-01'),
  ('平台加权成本率', '三平台折扣+佣金占平台实收+折扣+佣金的比例', '(discount + commission) / (received + discount + commission) * 100', 'bill_fact', '月', '运营部', '门店/公司', 35, 38, '2026-04-01'),
  ('复购率', '跨日消费会员占全部识别会员的比例', 'count(DISTINCT member_id FILTER(WHERE cross_day)) / count(DISTINCT member_id) * 100', 'bill_fact', '月', '会员部', '门店/公司', 30, 25, '2026-04-01'),
  ('异常率', '异常账单数占总账单数的比例', 'count(anomaly_bills) / count(all_bills) * 100', 'v_anomaly_bills / bill_fact', '日', '运营部', '门店', 1.5, 3, '2026-04-01'),
  ('库存天数', '库存金额 / 日均成本', 'inventory_amount / (monthly_cost / 30)', 'inventory_cost_records', '月', '供应链', '门店/成本单位', 7, 10, '2026-04-01'),
  ('任务完成率', '已验收任务数占总任务数的比例', 'count(verified_tasks) / count(total_tasks) * 100', 'store_task', '月', '运营部', '门店/公司', 80, 60, '2026-04-01')
ON CONFLICT (indicator_name) DO NOTHING;

-- 门店主数据（从现有视图提取）
INSERT INTO analytics.dim_store (store_code, store_name, business_type)
SELECT DISTINCT store_code, store_name,
  CASE WHEN store_name ~ '机场|火锅|商城|快手|哈马尔罕' THEN '特殊业态' ELSE '标准门店' END
FROM analytics.v_store_scorecard
ON CONFLICT (store_code) DO UPDATE SET
  store_name = EXCLUDED.store_name,
  business_type = EXCLUDED.business_type;
