-- =====================================================================================
-- Schema: 打卡/签到增强配置表
-- 位置：docs/sql/10_schema/marketing/ak_marketing_checkin_configs_v1.sql
-- 说明：管理打卡开关、模式、提醒及基础奖励（积分/经验），按商家隔离。
-- =====================================================================================

CREATE TABLE IF NOT EXISTS public.ak_marketing_checkin_configs (
    id TEXT PRIMARY KEY DEFAULT 'checkin_config',
    merchant_id UUID NOT NULL UNIQUE REFERENCES public.ak_users(id) ON DELETE CASCADE,
    
    is_open BOOLEAN DEFAULT true,                -- 签到开关
    mode TEXT DEFAULT 'none',                    -- 签到模式: none(无限制), week(周循环), month(月循环)
    notice_enabled BOOLEAN DEFAULT false,        -- 签到提醒开关
    
    integral_reward INTEGER DEFAULT 10,          -- 每日签到赠送积分
    exp_reward INTEGER DEFAULT 1,                -- 每日签到赠送经验
    
    updated_at TIMESTAMPTZ DEFAULT now(),
    updated_by UUID REFERENCES auth.users(id)
);

-- 启用 RLS
ALTER TABLE public.ak_marketing_checkin_configs ENABLE ROW LEVEL SECURITY;

-- 权限策略：商家仅能管理自己的打卡配置
CREATE POLICY "Merchants manage their own checkin configs"
ON public.ak_marketing_checkin_configs FOR ALL 
TO authenticated
USING (merchant_id = auth.uid())
WITH CHECK (merchant_id = auth.uid());

-- 允许所有认证用户查看（用于前台展示）
CREATE POLICY "Anyone can view checkin config"
ON public.ak_marketing_checkin_configs FOR SELECT 
TO authenticated
USING (true);

-- 插入初始化数据（为每个管理员/商家初始化一条）
-- 实际应在商家创建时触发，此处先预留
