-- 20260420_ai_trigger_jobs_and_app2_prewarm.sql
-- 注册 AI 事件触发器 + App2 财务洞察 cron 预热任务
--
-- 背景：Phase 0.1~0.3 AI 模块收尾。dispatcher 已注册 5 个 handler 到
-- trigger_scheduler._JOB_REGISTRY（通过 main.py lifespan 调用），
-- 但 biz.trigger_jobs 缺对应数据行，fire_event 查不到事件绑定而失效。
--
-- 本脚本插入：
--   4 条 event 类型记录：ai_consumption_settled / ai_note_created /
--                        ai_task_assigned / ai_dws_completed
--   1 条 cron 类型记录：ai_dws_prewarm （每日 08:30 给所有 site 触发 App2 × 8 维度）
--
-- 幂等：job_name UNIQUE 约束 + ON CONFLICT DO NOTHING。
--
-- 验证 SQL（执行后）：
--   1. SELECT count(*) FROM biz.trigger_jobs WHERE job_type LIKE 'ai_%';
--      应为 5
--   2. SELECT job_name, trigger_condition, trigger_config FROM biz.trigger_jobs
--        WHERE trigger_condition = 'event' AND trigger_config->>'event_name' LIKE 'ai_%';
--      应为 4 条，event_name 与 job_name 一致
--   3. SELECT job_name, trigger_config->>'cron_expression' FROM biz.trigger_jobs
--        WHERE job_type = 'ai_dws_prewarm';
--      应为 "30 8 * * *"
--
-- 回滚：
--   DELETE FROM biz.trigger_jobs WHERE job_name IN (
--     'ai_consumption_settled', 'ai_note_created',
--     'ai_task_assigned', 'ai_dws_completed', 'ai_dws_prewarm'
--   );

BEGIN;

-- ── 4 条 event 类型触发器 ──────────────────────────────

INSERT INTO biz.trigger_jobs
    (job_type, job_name, trigger_condition, trigger_config, status, description)
VALUES
    (
        'ai_consumption_settled',
        'ai_consumption_settled',
        'event',
        '{"event_name": "ai_consumption_settled"}'::jsonb,
        'enabled',
        'AI 消费事件链：App3 → App8 → App7（+ App4 → App5 含助教）'
    ),
    (
        'ai_note_created',
        'ai_note_created',
        'event',
        '{"event_name": "ai_note_created"}'::jsonb,
        'enabled',
        'AI 备注事件链：App6 → App8'
    ),
    (
        'ai_task_assigned',
        'ai_task_assigned',
        'event',
        '{"event_name": "ai_task_assigned"}'::jsonb,
        'enabled',
        'AI 任务分配事件链：App4 → App5'
    ),
    (
        'ai_dws_completed',
        'ai_dws_completed',
        'event',
        '{"event_name": "ai_dws_completed"}'::jsonb,
        'enabled',
        'AI DWS 完成事件：App2 财务洞察 × 8 时间维度预生成'
    )
ON CONFLICT (job_name) DO NOTHING;

-- ── 1 条 cron 类型触发器 ───────────────────────────────

-- 每日 08:30 对所有 active 门店逐个触发 ai_dws_completed 事件，
-- 作为 etl-completed 端点之外的兜底机制。
INSERT INTO biz.trigger_jobs
    (job_type, job_name, trigger_condition, trigger_config, status, description)
VALUES
    (
        'ai_dws_prewarm',
        'ai_dws_prewarm_0830',
        'cron',
        '{"cron_expression": "30 8 * * *"}'::jsonb,
        'enabled',
        'App2 财务洞察每日预热：08:30 对所有门店触发 ai_dws_completed × 8 维度'
    )
ON CONFLICT (job_name) DO NOTHING;

COMMIT;
