-- ============================================
-- 沉睡回店日汇总物化表（降级方案，优先使用集合 SQL + 临时表）
-- ============================================
-- 当生产库数据量继续增长、动态 SQL 仍超 SLA 时可启用。
-- 本脚本仅文档用途，不在开发环境自动执行。

CREATE TABLE IF NOT EXISTS lq_sleep_return_daily_visit (
  F_Id VARCHAR(50) NOT NULL COMMENT '主键',
  MemberId VARCHAR(50) NOT NULL COMMENT '会员ID',
  VisitDate DATE NOT NULL COMMENT '自然日到店日',
  ReturnTime DATETIME NOT NULL COMMENT '当天首次耗卡时间',
  StoreId VARCHAR(50) NULL COMMENT '回店门店ID',
  StoreName VARCHAR(200) NULL COMMENT '回店门店名称',
  DayConsumeAmount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '当天消耗金额',
  PrevVisitDate DATE NULL COMMENT '严格早于 VisitDate 的上一自然日到店日',
  PrevReturnTime DATETIME NULL COMMENT '上一到店日首次耗卡时间',
  F_IsEffective TINYINT NOT NULL DEFAULT 1 COMMENT '1有效 0作废',
  F_CreateTime DATETIME NOT NULL COMMENT '创建时间',
  F_UpdateTime DATETIME NULL COMMENT '更新时间',
  PRIMARY KEY (F_Id),
  UNIQUE KEY uk_sr_daily_member_date (MemberId, VisitDate),
  KEY idx_sr_daily_visit_date (VisitDate, F_IsEffective),
  KEY idx_sr_daily_store (StoreId, VisitDate, F_IsEffective),
  KEY idx_sr_daily_member (MemberId, F_IsEffective, VisitDate)
) COMMENT='沉睡回店-会员每日有效耗卡物化';

-- 刷新策略（应用层实现，不在此 DDL 执行）：
-- 1. 耗卡新增/修改/作废（lq_xh_hyhk）后，按受影响会员增量重算 VisitDate 及后续 PrevVisitDate 链；
-- 2. 每日凌晨定时全量校验（可选）；
-- 3. sys_config.sleepReturnDays 变更时不改表，查询时按阈值动态判定 IsSleepReturn。
