-- Database Structure and Sample Data for ISBB Work Climate Measurement
-- Based on Permenaker No.5 Tahun 2018

-- ------------------------------------------------------------------------------
-- Master Tables - ISBB Specific
-- ------------------------------------------------------------------------------

-- Master Kategori Beban Kerja (Work Load Categories)
CREATE TABLE IF NOT EXISTS master_kategori_beban_kerja (
    id_kategori INT PRIMARY KEY,
    nama_kategori VARCHAR(50) NOT NULL,
    keterangan TEXT,
    kisaran_energi VARCHAR(50),
    contoh_aktivitas TEXT,
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Master Alokasi Kerja-Istirahat (Work-Rest Allocation)
CREATE TABLE IF NOT EXISTS master_alokasi_kerja_istirahat (
    id_alokasi INT PRIMARY KEY,
    nama_alokasi VARCHAR(50) NOT NULL,
    persentase_kerja VARCHAR(20) NOT NULL,
    persentase_istirahat VARCHAR(20) NOT NULL,
    keterangan TEXT,
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Master Baku Mutu ISBB (WBGT Standard Values)
CREATE TABLE IF NOT EXISTS master_bakumutu_isbb (
    id_bakumutu_isbb INT PRIMARY KEY,
    id_regulasi INT NOT NULL,
    id_kategori INT NOT NULL,
    id_alokasi INT NOT NULL,
    nilai_baku_mutu DECIMAL(5, 2) NOT NULL,
    keterangan TEXT,
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_regulasi) REFERENCES master_regulasi(id_regulasi),
    FOREIGN KEY (id_kategori) REFERENCES master_kategori_beban_kerja(id_kategori),
    FOREIGN KEY (id_alokasi) REFERENCES master_alokasi_kerja_istirahat(id_alokasi)
);

-- ------------------------------------------------------------------------------
-- Transaction Tables - ISBB Specific
-- ------------------------------------------------------------------------------

-- Hasil Pengukuran ISBB (WBGT Measurement Results)
CREATE TABLE IF NOT EXISTS trx_hasil_ukur_isbb (
    id_hasil_ukur_isbb INT PRIMARY KEY,
    id_sampling_plan INT NOT NULL,
    kode_laporan VARCHAR(50) NOT NULL,
    tanggal_sampling DATE NOT NULL,
    waktu_mulai TIME,
    waktu_selesai TIME,
    kondisi_cuaca VARCHAR(100),
    petugas_sampling VARCHAR(100),
    status_laporan VARCHAR(20) DEFAULT 'DRAFT',
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_sampling_plan) REFERENCES trx_sampling_plan_iklim(id_sampling_plan)
);

-- Detail Hasil Pengukuran ISBB (WBGT Measurement Detail)
CREATE TABLE IF NOT EXISTS trx_hasil_ukur_isbb_detail (
    id_hasil_ukur_isbb_detail INT PRIMARY KEY,
    id_hasil_ukur_isbb INT NOT NULL,
    kode_titik VARCHAR(20) NOT NULL,
    nama_lokasi VARCHAR(255) NOT NULL,
    jenis_pekerjaan VARCHAR(255) NOT NULL,
    id_kategori INT NOT NULL,
    id_alokasi INT NOT NULL,
    suhu_basah DECIMAL(5, 2) NOT NULL,  -- natural wet bulb (Tnw)
    suhu_bola DECIMAL(5, 2) NOT NULL,   -- globe temperature (Tg)
    suhu_kering DECIMAL(5, 2) NOT NULL, -- dry bulb (Ta)
    nilai_isbb DECIMAL(5, 2) NOT NULL,  -- calculated WBGT value
    id_bakumutu_isbb INT NOT NULL,
    status_kesesuaian VARCHAR(20),
    rekomendasi TEXT,
    lokasi_pengukuran VARCHAR(100),
    tinggi_pengukuran DECIMAL(4, 2),
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_hasil_ukur_isbb) REFERENCES trx_hasil_ukur_isbb(id_hasil_ukur_isbb),
    FOREIGN KEY (id_kategori) REFERENCES master_kategori_beban_kerja(id_kategori),
    FOREIGN KEY (id_alokasi) REFERENCES master_alokasi_kerja_istirahat(id_alokasi),
    FOREIGN KEY (id_bakumutu_isbb) REFERENCES master_bakumutu_isbb(id_bakumutu_isbb)
);

-- Rekomendasi Pengendalian (Control Recommendations)
CREATE TABLE IF NOT EXISTS trx_rekomendasi_pengendalian_isbb (
    id_rekomendasi INT PRIMARY KEY,
    id_hasil_ukur_isbb_detail INT NOT NULL,
    jenis_pengendalian VARCHAR(50) NOT NULL,
    deskripsi_pengendalian TEXT NOT NULL,
    prioritas INT,
    estimasi_biaya DECIMAL(12, 2),
    perkiraan_efektivitas TEXT,
    status_implementasi VARCHAR(20) DEFAULT 'PLANNED',
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_hasil_ukur_isbb_detail) REFERENCES trx_hasil_ukur_isbb_detail(id_hasil_ukur_isbb_detail)
);

-- ------------------------------------------------------------------------------
-- Sample Data Insertion - Master Tables
-- ------------------------------------------------------------------------------

-- Insert Data Master Kategori Beban Kerja
INSERT INTO master_kategori_beban_kerja (id_kategori, nama_kategori, keterangan, kisaran_energi, contoh_aktivitas, status, user_input)
VALUES 
(1, 'Ringan', 'Beban kerja ringan dengan pengeluaran energi minimal', '100-200 Kcal/jam', 'Pekerjaan administratif, kontrol ruangan, pekerjaan perakitan ringan, mengemudi', TRUE, 'admin'),
(2, 'Sedang', 'Beban kerja sedang dengan aktivitas fisik moderat', '200-350 Kcal/jam', 'Berjalan normal, mengangkat beban sedang, mendorong atau menarik, perakitan / perbaikan mesin', TRUE, 'admin'),
(3, 'Berat', 'Beban kerja berat dengan aktivitas fisik intens', '350-500 Kcal/jam', 'Berjalan cepat/naik tangga, mengangkat beban berat, pekerjaan konstruksi, penggalian, penambangan', TRUE, 'admin');

-- Insert Data Master Alokasi Kerja-Istirahat
INSERT INTO master_alokasi_kerja_istirahat (id_alokasi, nama_alokasi, persentase_kerja, persentase_istirahat, keterangan, status, user_input)
VALUES 
(1, '75-100% Kerja', '75-100%', '0-25%', 'Alokasi 75-100% waktu untuk bekerja, 0-25% untuk istirahat dalam satu jam', TRUE, 'admin'),
(2, '50-75% Kerja', '50-75%', '25-50%', 'Alokasi 50-75% waktu untuk bekerja, 25-50% untuk istirahat dalam satu jam', TRUE, 'admin'),
(3, '25-50% Kerja', '25-50%', '50-75%', 'Alokasi 25-50% waktu untuk bekerja, 50-75% untuk istirahat dalam satu jam', TRUE, 'admin'),
(4, '0-25% Kerja', '0-25%', '75-100%', 'Alokasi 0-25% waktu untuk bekerja, 75-100% untuk istirahat dalam satu jam', TRUE, 'admin');

-- Insert Data Master Baku Mutu ISBB
INSERT INTO master_bakumutu_isbb (id_bakumutu_isbb, id_regulasi, id_kategori, id_alokasi, nilai_baku_mutu, keterangan, status, user_input)
VALUES 
-- Kategori Ringan
(1, 2, 1, 1, 31.0, 'Nilai ISBB maksimum untuk beban kerja ringan dengan alokasi kerja 75-100%', TRUE, 'admin'),
(2, 2, 1, 2, 31.0, 'Nilai ISBB maksimum untuk beban kerja ringan dengan alokasi kerja 50-75%', TRUE, 'admin'),
(3, 2, 1, 3, 32.0, 'Nilai ISBB maksimum untuk beban kerja ringan dengan alokasi kerja 25-50%', TRUE, 'admin'),
(4, 2, 1, 4, 32.2, 'Nilai ISBB maksimum untuk beban kerja ringan dengan alokasi kerja 0-25%', TRUE, 'admin'),

-- Kategori Sedang
(5, 2, 2, 1, 28.0, 'Nilai ISBB maksimum untuk beban kerja sedang dengan alokasi kerja 75-100%', TRUE, 'admin'),
(6, 2, 2, 2, 29.0, 'Nilai ISBB maksimum untuk beban kerja sedang dengan alokasi kerja 50-75%', TRUE, 'admin'),
(7, 2, 2, 3, 30.0, 'Nilai ISBB maksimum untuk beban kerja sedang dengan alokasi kerja 25-50%', TRUE, 'admin'),
(8, 2, 2, 4, 31.1, 'Nilai ISBB maksimum untuk beban kerja sedang dengan alokasi kerja 0-25%', TRUE, 'admin'),

-- Kategori Berat
(9, 2, 3, 1, NULL, 'Untuk beban kerja berat tidak direkomendasikan alokasi kerja 75-100%', TRUE, 'admin'),
(10, 2, 3, 2, 27.5, 'Nilai ISBB maksimum untuk beban kerja berat dengan alokasi kerja 50-75%', TRUE, 'admin'),
(11, 2, 3, 3, 29.0, 'Nilai ISBB maksimum untuk beban kerja berat dengan alokasi kerja 25-50%', TRUE, 'admin'),
(12, 2, 3, 4, 30.0, 'Nilai ISBB maksimum untuk beban kerja berat dengan alokasi kerja 0-25%', TRUE, 'admin');

-- ------------------------------------------------------------------------------
-- Sample Data Insertion - Transaction Tables
-- ------------------------------------------------------------------------------

-- Contoh Data Sampling Plan (Referensi dari tabel yang sudah ada)
INSERT INTO trx_sampling_plan_iklim (id_sampling_plan, kode_sampling_plan, nama_project, id_client, tanggal_rencana_sampling, lokasi_sampling, jumlah_titik, status_approval, catatan, tanggal_input, user_input)
VALUES 
(2, 'SP-ISBB-2024-001', 'Pengukuran ISBB di PT. Indonesia Steel Manufacturing', 102, '2024-05-12', 'PT. Indonesia Steel Manufacturing, Jl. Industri Baja No. 75, Cikarang, Bekasi', 5, 'APPROVED', 'Pengukuran ISBB untuk area furnace, casting, rolling mill, welding, dan control room', '2024-05-01 10:30:00', 'supervisor');

-- Contoh Data Hasil Pengukuran ISBB
INSERT INTO trx_hasil_ukur_isbb (id_hasil_ukur_isbb, id_sampling_plan, kode_laporan, tanggal_sampling, waktu_mulai, waktu_selesai, kondisi_cuaca, petugas_sampling, status_laporan, catatan, tanggal_input, user_input)
VALUES 
(1, 2, 'LHU/ISBB/05/2024/001', '2024-05-12', '10:00:00', '14:30:00', 'Cuaca cerah, suhu luar 33°C', 'Ahmad Kusuma, Budi Santoso', 'FINAL', 'Pengukuran berjalan dengan baik', '2024-05-12 16:45:00', 'analyst');

-- Contoh Data Detail Hasil Pengukuran ISBB
INSERT INTO trx_hasil_ukur_isbb_detail (id_hasil_ukur_isbb_detail, id_hasil_ukur_isbb, kode_titik, nama_lokasi, jenis_pekerjaan, id_kategori, id_alokasi, suhu_basah, suhu_bola, suhu_kering, nilai_isbb, id_bakumutu_isbb, status_kesesuaian, rekomendasi, lokasi_pengukuran, tinggi_pengukuran, catatan, tanggal_input, user_input)
VALUES 
-- Furnace Operation Area
(1, 1, 'T1', 'Furnace Operation Area', 'Furnace monitoring and control', 2, 1, 27.8, 35.6, 32.5, 29.7, 5, 'NOT_COMPLY', 'Tingkatkan ventilasi, kurangi waktu paparan, atau ubah alokasi kerja', 'Dekat panel kontrol operator', 1.1, 'Pengukuran dilakukan saat furnace beroperasi normal', '2024-05-12 16:50:00', 'analyst'),

-- Cold Rolling Mill
(2, 1, 'T2', 'Cold Rolling Mill', 'Machine operation and material handling', 2, 1, 25.2, 31.5, 30.1, 26.8, 5, 'COMPLY', '', 'Area operator mesin rolling', 1.1, 'Pengukuran dilakukan saat proses rolling berjalan normal', '2024-05-12 17:00:00', 'analyst'),

-- Steel Casting Section
(3, 1, 'T3', 'Steel Casting Section', 'Heavy manual casting tasks', 3, 2, 28.4, 36.8, 33.2, 30.2, 10, 'NOT_COMPLY', 'Pasang pelindung panas tambahan, ubah alokasi kerja menjadi 25% kerja', 'Area penuangan logam', 1.1, 'Suhu sangat tinggi di sekitar area penuangan', '2024-05-12 17:15:00', 'analyst'),

-- Welding Section
(4, 1, 'T4', 'Welding Section', 'Manual welding tasks', 2, 2, 24.6, 31.0, 29.5, 26.1, 6, 'COMPLY', '', 'Area pengelasan manual', 1.1, 'Pengukuran dilakukan pada jarak 1.5 meter dari titik pengelasan', '2024-05-12 17:30:00', 'analyst'),

-- Production Control Room
(5, 1, 'T5', 'Production Control Room', 'Monitoring and administrative tasks', 1, 1, 23.8, 29.2, 28.6, 25.2, 1, 'COMPLY', '', 'Ruang kontrol produksi', 1.1, 'Ruangan ber-AC, kondisi stabil', '2024-05-12 17:45:00', 'analyst');

-- Contoh Data Rekomendasi Pengendalian
INSERT INTO trx_rekomendasi_pengendalian_isbb (id_rekomendasi, id_hasil_ukur_isbb_detail, jenis_pengendalian, deskripsi_pengendalian, prioritas, estimasi_biaya, perkiraan_efektivitas, status_implementasi, tanggal_input, user_input)
VALUES 
-- Rekomendasi untuk Furnace Area
(1, 1, 'Pengendalian Teknik', 'Pemasangan local exhaust ventilation tambahan di area furnace', 1, 25000000.00, 'Diperkirakan dapat menurunkan ISBB 1.5-2°C', 'PLANNED', '2024-05-13 09:00:00', 'analyst'),
(2, 1, 'Pengendalian Administratif', 'Mengubah alokasi kerja menjadi 50% kerja, 50% istirahat', 1, 0.00, 'Memenuhi baku mutu untuk kategori kerja sedang', 'PLANNED', '2024-05-13 09:05:00', 'analyst'),
(3, 1, 'APD', 'Menyediakan cooling vest bagi operator furnace', 2, 5000000.00, 'Mengurangi beban panas pada pekerja', 'PLANNED', '2024-05-13 09:10:00', 'analyst'),

-- Rekomendasi untuk Steel Casting Section
(4, 3, 'Pengendalian Teknik', 'Pemasangan heat shield tambahan di sekitar area penuangan', 1, 18000000.00, 'Diperkirakan dapat menurunkan ISBB 1-1.5°C', 'PLANNED', '2024-05-13 09:15:00', 'analyst'),
(5, 3, 'Pengendalian Teknik', 'Pemasangan spot cooling di area kerja manual', 1, 12000000.00, 'Diperkirakan dapat menurunkan ISBB 1-2°C', 'PLANNED', '2024-05-13 09:20:00', 'analyst'),
(6, 3, 'Pengendalian Administratif', 'Rotasi kerja dan mengubah alokasi menjadi 25% kerja, 75% istirahat', 1, 0.00, 'Memenuhi baku mutu untuk kategori kerja berat', 'PLANNED', '2024-05-13 09:25:00', 'analyst'),
(7, 3, 'APD', 'Menyediakan pakaian pelindung reflektif panas', 2, 7500000.00, 'Mengurangi beban panas radiasi pada pekerja', 'PLANNED', '2024-05-13 09:30:00', 'analyst'); 