Files
sori.studio/db/migrations/059_post_analytics_traffic_daily.sql
zenn ef9efd7af5 관리자 통계 대시보드 개선 및 v1.9.6 반영
통계 추이 차트 공통화, 유입 스택 막대, 집계 시작일 고정, traffic API 오류 수정, deploy 문서 정리를 포함한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 13:42:23 +09:00

38 lines
1.2 KiB
SQL

CREATE TABLE IF NOT EXISTS post_analytics_traffic_daily (
day DATE NOT NULL,
post_id UUID NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
source_group TEXT NOT NULL,
source_name TEXT NOT NULL,
device_type TEXT NOT NULL,
os_name TEXT NOT NULL,
keyword TEXT NOT NULL DEFAULT '',
page_views INTEGER NOT NULL DEFAULT 0,
visitors INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (day, post_id, source_group, source_name, device_type, os_name, keyword)
);
CREATE INDEX IF NOT EXISTS post_analytics_traffic_daily_post_day_idx
ON post_analytics_traffic_daily (post_id, day DESC);
CREATE INDEX IF NOT EXISTS post_analytics_traffic_daily_source_idx
ON post_analytics_traffic_daily (source_group, source_name);
ALTER TABLE analytics_daily_visitors
DROP CONSTRAINT IF EXISTS analytics_daily_visitors_scope_check;
ALTER TABLE analytics_daily_visitors
ADD CONSTRAINT analytics_daily_visitors_scope_check CHECK (scope IN ('site', 'post', 'page', 'traffic', 'post_traffic'));
CREATE UNIQUE INDEX IF NOT EXISTS analytics_daily_visitors_post_traffic_uidx
ON analytics_daily_visitors (
day,
post_id,
visitor_hash,
source_group,
source_name,
device_type,
os_name,
keyword
)
WHERE scope = 'post_traffic';