49 lines
1.8 KiB
SQL
49 lines
1.8 KiB
SQL
-- ============================================================
|
|
-- 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'
|
|
);
|