-- Data referensi peran & izin (FSD 4, 4.1, 10.6). Dapat dikonfigurasi ulang oleh owner di fase berikutnya.

INSERT INTO roles (id, code, name, description) VALUES
 (1, 'owner',     'Owner',          'Konfigurasi rumah, pengguna, perangkat, hak akses, dan aturan.'),
 (2, 'family',    'Anggota Keluarga','Menggunakan kontrol yang diberikan dan menerima notifikasi.'),
 (3, 'garda',     'Security/Garda', 'Menangani alarm; akses kamera/pintu hanya event-scoped.'),
 (4, 'installer', 'Installer',      'Pairing dan uji perangkat; akses sementara dan dapat dicabut.'),
 (5, 'sysadmin',  'System Admin',   'Mengelola layanan & integrasi; tidak otomatis membuka pintu/video.'),
 (6, 'viewer',    'Auditor/Viewer', 'Melihat status atau log yang diizinkan, tanpa kontrol.');

INSERT INTO permissions (code, name, is_sensitive) VALUES
 ('property.manage',    'Kelola properti & struktur lokasi', FALSE),
 ('floorplan.view',     'Lihat denah',                        FALSE),
 ('floorplan.edit',     'Ubah denah & penempatan',            FALSE),
 ('device.view',        'Lihat perangkat',                    FALSE),
 ('device.manage',      'Kelola inventaris perangkat',        FALSE),
 ('device.control',     'Kontrol perangkat',                  FALSE),
 ('controller.manage',  'Kelola controller/gateway',          FALSE),
 ('door.unlock',        'Buka kunci pintu',                   TRUE),
 ('gate.open',          'Buka pagar',                         TRUE),
 ('camera.live_view',   'Live view kamera',                   FALSE),
 ('camera.playback',    'Playback rekaman',                   FALSE),
 ('recording.export',   'Ekspor rekaman',                     TRUE),
 ('alarm.acknowledge',  'Acknowledge alarm',                  FALSE),
 ('alarm.arm',          'Ubah mode keamanan',                 TRUE),
 ('user.manage',        'Kelola anggota & peran',             TRUE),
 ('integration.manage', 'Kelola integrasi (Garda)',           TRUE),
 ('audit.view',         'Lihat audit log',                    FALSE);

-- Owner: semua izin
INSERT INTO role_permissions (role_id, perm_code) SELECT 1, code FROM permissions;
-- Family
INSERT INTO role_permissions (role_id, perm_code) VALUES
 (2,'floorplan.view'),(2,'device.view'),(2,'device.control'),(2,'camera.live_view'),
 (2,'alarm.acknowledge'),(2,'alarm.arm');
-- Garda (akses kamera/pintu diberikan per event di fase 5)
INSERT INTO role_permissions (role_id, perm_code) VALUES
 (3,'floorplan.view'),(3,'device.view'),(3,'alarm.acknowledge');
-- Installer
INSERT INTO role_permissions (role_id, perm_code) VALUES
 (4,'floorplan.view'),(4,'floorplan.edit'),(4,'device.view'),(4,'device.manage'),
 (4,'device.control'),(4,'controller.manage');
-- System Admin (pemisahan tugas: tanpa door.unlock / gate.open / camera.*)
INSERT INTO role_permissions (role_id, perm_code) VALUES
 (5,'floorplan.view'),(5,'device.view'),(5,'controller.manage'),(5,'integration.manage'),(5,'audit.view');
-- Viewer
INSERT INTO role_permissions (role_id, perm_code) VALUES
 (6,'floorplan.view'),(6,'device.view'),(6,'audit.view');
