-- ============================================================ -- Migration: 기존 회원의 first_video_created_at 백필 -- Date: 2026-07-27 -- Description: Meta FirstVideoCreated 전환 이벤트 오발화 방지 -- -- [문제] -- first_video_created_at은 신규 컬럼이라 기존 회원 전원이 NULL이다. -- FirstVideoCreated 발화 조건은 "completed 영상 존재 + 컬럼이 NULL"이므로, -- 배포 후 기존 회원이 영상을 하나 더 만들면 그것이 51번째 영상이어도 -- "첫 영상 생성"으로 발화되어 핵심 전환 이벤트가 오염된다. -- (CompleteRegistration은 is_new_user 게이트 + 24시간 가드가 있어 해당 없음) -- -- [조치] -- 이미 completed 영상을 보유한 회원은 그 최초 영상의 생성 시각으로 -- 컬럼을 채워 "이미 발화 완료" 상태로 만든다. -- -- [실행 시점] -- 반드시 백엔드 배포 전에 실행할 것. -- (ALTER TABLE 마이그레이션 2건을 먼저 적용한 뒤 실행) -- -- 관련 코드: app/video/api/routers/v1/tracking.py -- ============================================================ -- 백필 대상 건수 사전 확인 (실행 전 참고용) -- SELECT COUNT(*) FROM `user` u -- WHERE u.first_video_created_at IS NULL -- AND EXISTS ( -- SELECT 1 FROM video v -- JOIN project p ON v.project_id = p.id -- WHERE p.user_uuid = u.user_uuid AND v.status = 'completed' -- ); UPDATE `user` u SET u.first_video_created_at = ( SELECT MIN(v.created_at) FROM video v JOIN project p ON v.project_id = p.id WHERE p.user_uuid = u.user_uuid AND v.status = 'completed' ) WHERE u.first_video_created_at IS NULL AND EXISTS ( SELECT 1 FROM video v JOIN project p ON v.project_id = p.id WHERE p.user_uuid = u.user_uuid AND v.status = 'completed' );