81 lines
3.8 KiB
SQL
81 lines
3.8 KiB
SQL
-- ==============================================================================
|
|
-- Initial Schema Migration Dump
|
|
-- Generated: 2026-04-14
|
|
-- Description: 현재 Supabase DB에 존재하는 전체 테이블 구조 요약 (의존성 순서)
|
|
-- ==============================================================================
|
|
|
|
-- ------------------------------------------------------------------------------
|
|
-- 1. COMPANIES (업체 및 고객사 정보)
|
|
-- ------------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS public.companies (
|
|
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
name TEXT NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- ------------------------------------------------------------------------------
|
|
-- 2. PLANTS (발전소 기본 정보)
|
|
-- ------------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS public.plants (
|
|
id TEXT PRIMARY KEY,
|
|
company_id BIGINT REFERENCES public.companies(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
type TEXT,
|
|
capacity DOUBLE PRECISION DEFAULT 100.0,
|
|
initial_cumulative_kwh DOUBLE PRECISION DEFAULT 0.0,
|
|
constructed_at DATE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
COMMENT ON COLUMN public.plants.initial_cumulative_kwh IS '시스템 도입 이전의 누적 발전량 (기초 자산)';
|
|
|
|
-- ------------------------------------------------------------------------------
|
|
-- 3. SOLAR_LOGS (실시간/시간 단위 발전 로그)
|
|
-- ------------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS public.solar_logs (
|
|
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
plant_id TEXT REFERENCES public.plants(id) ON DELETE CASCADE,
|
|
current_kw DOUBLE PRECISION,
|
|
today_kwh DOUBLE PRECISION,
|
|
status TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- ------------------------------------------------------------------------------
|
|
-- 4. DAILY_STATS (일일 발전 통계 요약)
|
|
-- ------------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS public.daily_stats (
|
|
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
plant_id TEXT REFERENCES public.plants(id) ON DELETE CASCADE,
|
|
date DATE NOT NULL,
|
|
total_generation DOUBLE PRECISION DEFAULT 0.0,
|
|
peak_kw DOUBLE PRECISION DEFAULT 0.0,
|
|
generation_hours DOUBLE PRECISION DEFAULT 0.0,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
|
|
UNIQUE(plant_id, date) -- 크롤러에서 UPSERT시 사용되는 제약조건
|
|
);
|
|
|
|
COMMENT ON TABLE public.daily_stats IS '일일 발전 통계 요약 테이블';
|
|
COMMENT ON COLUMN public.daily_stats.total_generation IS '당일 총 발전량 (kWh)';
|
|
COMMENT ON COLUMN public.daily_stats.peak_kw IS '당일 최고 출력 (kW)';
|
|
COMMENT ON COLUMN public.daily_stats.generation_hours IS '발전 시간 = 발전량 / 설비용량';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_daily_stats_plant_id ON public.daily_stats(plant_id);
|
|
CREATE INDEX IF NOT EXISTS idx_daily_stats_date ON public.daily_stats(date);
|
|
CREATE INDEX IF NOT EXISTS idx_daily_stats_plant_date ON public.daily_stats(plant_id, date);
|
|
|
|
-- ------------------------------------------------------------------------------
|
|
-- 5. MONTHLY_STATS (월간 발전 통계 요약)
|
|
-- ------------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS public.monthly_stats (
|
|
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
plant_id TEXT REFERENCES public.plants(id) ON DELETE CASCADE,
|
|
month TEXT NOT NULL,
|
|
total_generation DOUBLE PRECISION DEFAULT 0.0,
|
|
currnet_last_date TEXT,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()),
|
|
|
|
UNIQUE(plant_id, month) -- 크롤러에서 UPSERT시 사용되는 제약조건
|
|
);
|