341 lines
9.5 KiB
TypeScript
341 lines
9.5 KiB
TypeScript
import { User, Group, Role, Permission, RolePermission } from '../types';
|
|
|
|
export const initialGroups: Group[] = [
|
|
{ id: 'group-1', name: 'Operasional Jawa Barat' },
|
|
{ id: 'group-2', name: 'Operasional Sumatra' },
|
|
{ id: 'group-3', name: 'Manajemen Pusat' },
|
|
{ id: 'group-4', name: 'Tim Kesehatan Hewan' },
|
|
{ id: 'group-5', name: 'Administrator Sistem' },
|
|
];
|
|
|
|
export const initialRoles: Role[] = [
|
|
{
|
|
id: 'role-1',
|
|
name: 'Administrator',
|
|
description: 'Akses penuh ke semua fitur dan pengaturan sistem.',
|
|
},
|
|
{
|
|
id: 'role-2',
|
|
name: 'Manajer Kandang',
|
|
description: 'Akses ke dashboard, laporan, dan manajemen untuk kandang tertentu.',
|
|
},
|
|
{
|
|
id: 'role-3',
|
|
name: 'Operator',
|
|
description: 'Akses terbatas untuk melihat data dan menangani notifikasi harian.',
|
|
},
|
|
{
|
|
id: 'role-4',
|
|
name: 'Dokter Hewan',
|
|
description: 'Akses ke data kesehatan, perilaku, dan mortalitas.',
|
|
},
|
|
{
|
|
id: 'role-5',
|
|
name: 'Hanya Lihat',
|
|
description: 'Akses hanya untuk melihat semua dashboard tanpa bisa mengubah apapun.',
|
|
},
|
|
];
|
|
|
|
export const initialUsers: User[] = [
|
|
{
|
|
id: 'user-1',
|
|
name: 'Admin Sistem',
|
|
email: 'admin@cp.co.id',
|
|
groupId: 'group-5',
|
|
roleId: 'role-1',
|
|
},
|
|
{
|
|
id: 'user-2',
|
|
name: 'Budi Hartono',
|
|
email: 'budi.h@cp.co.id',
|
|
groupId: 'group-1',
|
|
roleId: 'role-2',
|
|
},
|
|
{
|
|
id: 'user-3',
|
|
name: 'Siti Aminah',
|
|
email: 'siti.a@cp.co.id',
|
|
groupId: 'group-1',
|
|
roleId: 'role-3',
|
|
},
|
|
{
|
|
id: 'user-4',
|
|
name: 'Dr. Retno Wulandari',
|
|
email: 'retno.w@cp.co.id',
|
|
groupId: 'group-4',
|
|
roleId: 'role-4',
|
|
},
|
|
{
|
|
id: 'user-5',
|
|
name: 'Agus Susanto',
|
|
email: 'agus.s@cp.co.id',
|
|
groupId: 'group-2',
|
|
roleId: 'role-3',
|
|
},
|
|
{
|
|
id: 'user-6',
|
|
name: 'Direksi',
|
|
email: 'direksi@cp.co.id',
|
|
groupId: 'group-3',
|
|
roleId: 'role-5',
|
|
},
|
|
{
|
|
id: 'user-7',
|
|
name: 'Dr. Budi Santoso',
|
|
email: 'budi.s@cp.co.id',
|
|
groupId: 'group-4',
|
|
roleId: 'role-4',
|
|
},
|
|
];
|
|
|
|
export const allPermissions: Permission[] = [
|
|
// Dashboard
|
|
{
|
|
id: 'p-dash-view',
|
|
category: 'Dashboard Utama',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard utama.',
|
|
},
|
|
{
|
|
id: 'p-dash-report',
|
|
category: 'Dashboard Utama',
|
|
action: 'Buat Laporan AI',
|
|
description: 'Dapat membuat ringkasan laporan AI.',
|
|
},
|
|
// Chicken Counting
|
|
{
|
|
id: 'p-cc-view',
|
|
category: 'Hitung Ayam',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard penghitungan ayam.',
|
|
},
|
|
// Feed Sack Counting
|
|
{
|
|
id: 'p-fsc-view',
|
|
category: 'Hitung Karung',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard penghitungan karung pakan.',
|
|
},
|
|
// Behavior Analysis
|
|
{
|
|
id: 'p-ba-view',
|
|
category: 'Analisis Perilaku',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard analisis perilaku.',
|
|
},
|
|
// Weight Monitoring
|
|
{
|
|
id: 'p-wm-view',
|
|
category: 'Berat Ayam',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard pemantauan berat.',
|
|
},
|
|
{
|
|
id: 'p-ws-view',
|
|
category: 'Berat Ayam',
|
|
action: 'Lihat Standar',
|
|
description: 'Dapat melihat tabel standar bobot ayam.',
|
|
},
|
|
// Manual Weighing
|
|
{
|
|
id: 'p-mw-view',
|
|
category: 'Pencatatan Manual',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat data pencatatan timbangan manual.',
|
|
},
|
|
// Location Management
|
|
{
|
|
id: 'p-loc-view',
|
|
category: 'Manajemen Struktur',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat struktur peternakan.',
|
|
},
|
|
{
|
|
id: 'p-loc-manage',
|
|
category: 'Manajemen Struktur',
|
|
action: 'Kelola',
|
|
description: 'Dapat menambah, mengedit, dan menghapus lokasi, kandang, lantai.',
|
|
},
|
|
// IoT Device
|
|
{
|
|
id: 'p-iot-view',
|
|
category: 'Perangkat IoT',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat daftar perangkat IoT.',
|
|
},
|
|
{
|
|
id: 'p-iot-manage',
|
|
category: 'Perangkat IoT',
|
|
action: 'Kelola',
|
|
description: 'Dapat menambah, mengedit, dan menghapus perangkat IoT.',
|
|
},
|
|
// Network
|
|
{
|
|
id: 'p-net-view',
|
|
category: 'Manajemen Jaringan',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard jaringan.',
|
|
},
|
|
// Batch
|
|
{
|
|
id: 'p-batch-view',
|
|
category: 'Proses Batch',
|
|
action: 'Lihat',
|
|
description: 'Dapat memonitor proses batch.',
|
|
},
|
|
// Camera
|
|
{
|
|
id: 'p-cam-view',
|
|
category: 'Manajemen Kamera',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat daftar kamera.',
|
|
},
|
|
{
|
|
id: 'p-cam-manage',
|
|
category: 'Manajemen Kamera',
|
|
action: 'Kelola',
|
|
description: 'Dapat menambah, mengedit, dan menghapus kamera.',
|
|
},
|
|
// Access Management
|
|
{
|
|
id: 'p-access-view',
|
|
category: 'Manajemen Akses',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat pengguna, grup, dan peran.',
|
|
},
|
|
{
|
|
id: 'p-access-manage-users',
|
|
category: 'Manajemen Akses',
|
|
action: 'Kelola Pengguna',
|
|
description: 'Dapat menambah, mengedit, dan menghapus pengguna.',
|
|
},
|
|
{
|
|
id: 'p-access-manage-roles',
|
|
category: 'Manajemen Akses',
|
|
action: 'Kelola Peran',
|
|
description: 'Dapat mengedit hak akses untuk setiap peran.',
|
|
},
|
|
// New View Permissions
|
|
{
|
|
id: 'p-fw-view',
|
|
category: 'Pemborosan Pakan',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard pemborosan pakan.',
|
|
},
|
|
{
|
|
id: 'p-fs-view',
|
|
category: 'Penjadwalan Pakan',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard penjadwalan pakan.',
|
|
},
|
|
{
|
|
id: 'p-mcw-view',
|
|
category: 'Perbandingan Berat',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard perbandingan berat antar kandang.',
|
|
},
|
|
// ERP Integration
|
|
{
|
|
id: 'p-erp-view',
|
|
category: 'Integrasi ERP',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dashboard integrasi ERP.',
|
|
},
|
|
// Documentation
|
|
{
|
|
id: 'p-docs-view',
|
|
category: 'Dokumentasi',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dokumentasi proyek (SRS, PRD, TODO).',
|
|
},
|
|
// Vet Visit
|
|
{
|
|
id: 'p-vet-view',
|
|
category: 'Kunjungan Dokter Hewan',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dasbor kunjungan dokter hewan.',
|
|
},
|
|
{
|
|
id: 'p-vet-manage',
|
|
category: 'Kunjungan Dokter Hewan',
|
|
action: 'Kelola',
|
|
description: 'Dapat menjadwalkan dan mengedit catatan kunjungan.',
|
|
},
|
|
// OCR Processing
|
|
{
|
|
id: 'p-ocr-view',
|
|
category: 'Pemrosesan OCR',
|
|
action: 'Lihat',
|
|
description: 'Dapat melihat dasbor pemrosesan dokumen.',
|
|
},
|
|
{
|
|
id: 'p-ocr-manage',
|
|
category: 'Pemrosesan OCR',
|
|
action: 'Kelola',
|
|
description: 'Dapat mengunggah dan memvalidasi dokumen.',
|
|
},
|
|
];
|
|
|
|
export const initialRolePermissions: RolePermission[] = [
|
|
// Administrator has all permissions
|
|
...allPermissions.map((p) => ({ roleId: 'role-1', permissionId: p.id })),
|
|
// Manajer Kandang
|
|
{ roleId: 'role-2', permissionId: 'p-dash-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-dash-report' },
|
|
{ roleId: 'role-2', permissionId: 'p-cc-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-fsc-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-ba-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-wm-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-ws-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-loc-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-iot-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-cam-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-fw-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-fs-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-mcw-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-erp-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-vet-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-vet-manage' },
|
|
{ roleId: 'role-2', permissionId: 'p-ocr-view' },
|
|
{ roleId: 'role-2', permissionId: 'p-ocr-manage' },
|
|
{ roleId: 'role-2', permissionId: 'p-mw-view' },
|
|
// Operator
|
|
{ roleId: 'role-3', permissionId: 'p-dash-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-cc-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-fsc-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-ba-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-wm-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-ws-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-fw-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-fs-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-vet-view' },
|
|
{ roleId: 'role-3', permissionId: 'p-ocr-view' },
|
|
// Dokter Hewan
|
|
{ roleId: 'role-4', permissionId: 'p-dash-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-ba-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-wm-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-ws-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-mcw-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-vet-view' },
|
|
{ roleId: 'role-4', permissionId: 'p-vet-manage' },
|
|
{ roleId: 'role-4', permissionId: 'p-mw-view' },
|
|
// Hanya Lihat
|
|
{ roleId: 'role-5', permissionId: 'p-dash-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-cc-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-fsc-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-ba-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-wm-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-ws-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-loc-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-iot-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-net-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-batch-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-cam-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-fw-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-fs-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-mcw-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-vet-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-ocr-view' },
|
|
{ roleId: 'role-5', permissionId: 'p-mw-view' },
|
|
];
|