-- ===============================================================================
-- TABLE ENTSOE ACTUAL LOAD 15MIN
-- ===============================================================================
-- Description: Consommation électrique réelle toutes les 15 minutes
-- Source: ENTSOE Transparency Platform - API RESTful
-- Document Type: A65 (Actual Total Load)
-- ===============================================================================

CREATE TABLE IF NOT EXISTS `dm_entsoe_actual_load` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    
    -- Identification temporelle
    `datetime_utc` DATETIME NOT NULL COMMENT 'Date/heure UTC',
    `datetime_local` DATETIME NOT NULL COMMENT 'Date/heure locale (CET/CEST)',
    `delivery_date` DATE NOT NULL COMMENT 'Date de livraison',
    `delivery_hour` TINYINT(2) NOT NULL COMMENT 'Heure (0-23)',
    `delivery_minute` TINYINT(2) NOT NULL COMMENT 'Minute (0, 15, 30, 45)',
    `position` TINYINT UNSIGNED NULL COMMENT 'Position dans la série (gère changement heure)',
    
    -- Zone géographique
    `bidding_zone` VARCHAR(20) NOT NULL COMMENT 'Code zone ENTSOE (ex: 10YFR-RTE------C)',
    `bidding_zone_name` VARCHAR(50) NOT NULL COMMENT 'Nom zone (France, Germany...)',
    `area_code` VARCHAR(5) NOT NULL COMMENT 'Code court (FR, DE, BE, IT, ES...)',
    
    -- Consommation (Load)
    `actual_load` DECIMAL(12,2) NULL COMMENT 'Consommation réelle (MW)',
    `unit` VARCHAR(10) DEFAULT 'MW' COMMENT 'Unité de mesure',
    
    -- Métadonnées ENTSOE
    `resolution` VARCHAR(10) DEFAULT 'PT15M' COMMENT 'Résolution temporelle',
    `document_type` VARCHAR(50) DEFAULT 'A65' COMMENT 'Type document ENTSOE (A65=Actual Total Load)',
    `process_type` VARCHAR(50) DEFAULT 'A16' COMMENT 'Type processus (A16=Realised)',
    
    -- Métadonnées scraping
    `api_response_time` DATETIME NULL COMMENT 'Timestamp réponse API',
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `source_url` TEXT NULL,
    
    PRIMARY KEY (`id`),
    
    -- Clé unique : zone + datetime + position
    UNIQUE KEY `uk_zone_datetime_position` (`bidding_zone`, `datetime_utc`, `position`),
    
    -- Index pour performances
    KEY `idx_datetime_utc` (`datetime_utc`),
    KEY `idx_delivery_date` (`delivery_date`),
    KEY `idx_area_code` (`area_code`),
    KEY `idx_zone_date` (`bidding_zone`, `delivery_date`),
    KEY `idx_created_at` (`created_at`)
    
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Consommation électrique réelle ENTSOE toutes les 15 minutes';

-- ===============================================================================
-- INDEX SUPPLÉMENTAIRES POUR ANALYSES
-- ===============================================================================

-- Index composite pour requêtes par heure
CREATE INDEX idx_area_datetime ON dm_entsoe_actual_load(area_code, datetime_utc);

-- Index pour agrégations journalières
CREATE INDEX idx_area_date ON dm_entsoe_actual_load(area_code, delivery_date);
