| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- -- ============================================================
- -- 需水量预测 + 调度推荐 DDL
- -- ============================================================
-
- -- 1. 历史需水量数据表
- CREATE TABLE IF NOT EXISTS bi_historical_water_demand (
- id BIGSERIAL PRIMARY KEY,
- area_code VARCHAR(32) NOT NULL, -- 区域编码
- area_name VARCHAR(64), -- 区域名称
- record_date DATE NOT NULL, -- 日期
- volume DECIMAL(12,2), -- 需水量(m³)
- max_temp DECIMAL(5,1), -- 最高温度(℃)
- min_temp DECIMAL(5,1), -- 最低温度(℃)
- weather VARCHAR(16), -- 天气: sunny/cloudy/rainy/snowy
- rainfall DECIMAL(8,1), -- 降雨量(mm)
- is_holiday BOOLEAN DEFAULT FALSE, -- 是否节假日
- day_of_week INTEGER, -- 星期几(1=周一,7=周日)
- data_source VARCHAR(16) DEFAULT 'METER', -- 数据来源: METER/ESTIMATED/SIMULATED
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- COMMENT ON TABLE bi_historical_water_demand IS '历史需水量数据';
- CREATE INDEX IF NOT EXISTS idx_hwd_area_date ON bi_historical_water_demand(area_code, record_date);
-
- -- 2. 需水量预测记录表
- CREATE TABLE IF NOT EXISTS bi_water_demand_forecast (
- id BIGSERIAL PRIMARY KEY,
- area_code VARCHAR(32) NOT NULL, -- 区域编码
- area_name VARCHAR(64), -- 区域名称
- forecast_date DATE NOT NULL, -- 预测日期
- forecast_volume DECIMAL(12,2), -- 预测水量(m³)
- actual_volume DECIMAL(12,2), -- 实际水量(用于评估)
- model_type VARCHAR(32) NOT NULL, -- 模型类型: MOVING_AVERAGE/EXPONENTIAL_SMOOTHING/SEASONAL_DECOMPOSITION
- model_params TEXT, -- 模型参数JSON
- mae DECIMAL(10,2), -- 平均绝对误差
- rmse DECIMAL(10,2), -- 均方根误差
- mape DECIMAL(8,2), -- 平均绝对百分比误差(%)
- confidence DECIMAL(5,4), -- 置信度(0-1)
- lower_bound DECIMAL(12,2), -- 置信区间下限
- upper_bound DECIMAL(12,2), -- 置信区间上限
- generate_time TIMESTAMP, -- 预测生成时间
- remark VARCHAR(255),
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- COMMENT ON TABLE bi_water_demand_forecast IS '需水量预测记录';
- CREATE INDEX IF NOT EXISTS idx_forecast_area_date ON bi_water_demand_forecast(area_code, forecast_date);
- CREATE INDEX IF NOT EXISTS idx_forecast_model ON bi_water_demand_forecast(model_type);
-
- -- 3. 调度推荐方案表
- CREATE TABLE IF NOT EXISTS bi_scheduling_recommendation (
- id BIGSERIAL PRIMARY KEY,
- forecast_id BIGINT, -- 关联预测ID
- scheme_name VARCHAR(128) NOT NULL, -- 方案名称
- scheme_type VARCHAR(16) NOT NULL, -- 方案类型: NORMAL/PEAK_SHIFT/EMERGENCY
- description TEXT, -- 方案描述
- pump_combination TEXT, -- 泵站组合JSON
- estimated_saving DECIMAL(12,2), -- 预计节水量(m³)
- estimated_energy_saving DECIMAL(12,2), -- 预计节能(kWh)
- score DECIMAL(6,1), -- 方案评分(0-100)
- execute_start TIMESTAMP, -- 执行时间窗口-开始
- execute_end TIMESTAMP, -- 执行时间窗口-结束
- risk_level VARCHAR(8), -- 风险等级: LOW/MEDIUM/HIGH
- status VARCHAR(16) DEFAULT 'PENDING', -- 状态: PENDING/ACCEPTED/EXECUTING/COMPLETED/REJECTED
- remark VARCHAR(255),
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- COMMENT ON TABLE bi_scheduling_recommendation IS '调度推荐方案';
- CREATE INDEX IF NOT EXISTS idx_scheduling_forecast ON bi_scheduling_recommendation(forecast_id);
- CREATE INDEX IF NOT EXISTS idx_scheduling_status ON bi_scheduling_recommendation(status);
|