From 780492d9b483474b758b7319ffd80406e2fc9a62 Mon Sep 17 00:00:00 2001 From: jouel88 Date: Tue, 7 Apr 2026 11:57:57 +0700 Subject: [PATCH] logo name --- app/Exports/LaporanLemburExport.php | 4 +- app/Exports/LaporanPresensiExport.php | 4 +- .../Controllers/FaceApprovalController.php | 7 ++- app/Http/Controllers/PegawaiController.php | 4 +- app/Models/SuratIzin.php | 2 +- database/seeders/MasterDataSeeder.php | 4 +- public/logo.png | Bin 0 -> 26129 bytes python_scripts/extract_frames.py | 17 ++++--- resources/views/auth/login.blade.php | 6 +-- resources/views/face-approval/index.blade.php | 45 +++++++++++------- resources/views/laporan/pdf.blade.php | 4 +- resources/views/layouts/sidebar.blade.php | 7 +-- schema_dump.json | Bin 0 -> 1284 bytes 13 files changed, 59 insertions(+), 45 deletions(-) create mode 100644 public/logo.png create mode 100644 schema_dump.json diff --git a/app/Exports/LaporanLemburExport.php b/app/Exports/LaporanLemburExport.php index 8312d060..b2146dc4 100644 --- a/app/Exports/LaporanLemburExport.php +++ b/app/Exports/LaporanLemburExport.php @@ -48,7 +48,7 @@ public function headings(): array return [ ['LAPORAN REKAPITULASI LEMBUR PEGAWAI'], - ['MPG HRIS Enterprise System'], + ['HRIS MP Enterprise System'], ['Periode: ' . $namaBulan . ' ' . $this->tahun], ['Dicetak: ' . Carbon::now()->translatedFormat('d F Y, H:i') . ' WIB'], [], @@ -215,7 +215,7 @@ public function registerEvents(): array ]); $noteRow = $summaryRow + 2; - $sheet->setCellValue("A{$noteRow}", '* Laporan dibuat otomatis oleh sistem MPG HRIS. Data bersumber dari catatan lembur yang telah disetujui.'); + $sheet->setCellValue("A{$noteRow}", '* Laporan dibuat otomatis oleh sistem HRIS MP. Data bersumber dari catatan lembur yang telah disetujui.'); $sheet->getStyle("A{$noteRow}")->getFont()->setItalic(true)->setSize(8)->getColor()->setRGB('94A3B8'); $sheet->mergeCells("A{$noteRow}:I{$noteRow}"); }, diff --git a/app/Exports/LaporanPresensiExport.php b/app/Exports/LaporanPresensiExport.php index 330e8ef2..6c65fdc2 100644 --- a/app/Exports/LaporanPresensiExport.php +++ b/app/Exports/LaporanPresensiExport.php @@ -46,7 +46,7 @@ public function headings(): array return [ ['LAPORAN REKAPITULASI PRESENSI PEGAWAI'], - ['MPG HRIS Enterprise System'], + ['HRIS MP Enterprise System'], ['Periode: ' . $namaBulan . ' ' . $this->tahun], ['Dicetak: ' . Carbon::now()->translatedFormat('d F Y, H:i') . ' WIB'], [], @@ -239,7 +239,7 @@ public function registerEvents(): array // Catatan kaki $noteRow = $summaryRow + 2; - $sheet->setCellValue("A{$noteRow}", '* Laporan dibuat otomatis oleh sistem MPG HRIS. Data bersumber dari catatan presensi dan lembur bulan berjalan.'); + $sheet->setCellValue("A{$noteRow}", '* Laporan dibuat otomatis oleh sistem HRIS MP. Data bersumber dari catatan presensi dan lembur bulan berjalan.'); $sheet->getStyle("A{$noteRow}")->getFont()->setItalic(true)->setSize(8)->getColor()->setRGB('94A3B8'); $sheet->mergeCells("A{$noteRow}:K{$noteRow}"); }, diff --git a/app/Http/Controllers/FaceApprovalController.php b/app/Http/Controllers/FaceApprovalController.php index 1462a1bc..dda50b31 100644 --- a/app/Http/Controllers/FaceApprovalController.php +++ b/app/Http/Controllers/FaceApprovalController.php @@ -47,7 +47,7 @@ public function index(Request $request) if (Storage::disk('local')->exists($datasetPath)) { $files = Storage::disk('local')->files($datasetPath); foreach ($files as $file) { - if (preg_match('/frame_\d+\.jpg$/', $file)) { + if (preg_match('/\/frame_\d+\.jpg$/', $file)) { $frameList[] = $file; } } @@ -153,9 +153,12 @@ public function reset($id) public function showFrame($userId, $frameIndex) { + $rawFilePath = "face_datasets/{$userId}/raw_frame_{$frameIndex}.jpg"; $filePath = "face_datasets/{$userId}/frame_{$frameIndex}.jpg"; - if (Storage::disk('local')->exists($filePath)) { + if (Storage::disk('local')->exists($rawFilePath)) { + return response()->file(Storage::disk('local')->path($rawFilePath)); + } elseif (Storage::disk('local')->exists($filePath)) { return response()->file(Storage::disk('local')->path($filePath)); } diff --git a/app/Http/Controllers/PegawaiController.php b/app/Http/Controllers/PegawaiController.php index b72c1546..e511a4e3 100644 --- a/app/Http/Controllers/PegawaiController.php +++ b/app/Http/Controllers/PegawaiController.php @@ -107,8 +107,8 @@ private function generateIdKaryawan($tglBergabung, $idDivisi, $idJabatan) $nomorUrut = str_pad($nextNumber, 3, '0', STR_PAD_LEFT); - // Format: MPG-202603-ITST-001 - return "MPG-{$yearMonth}-{$kodeTengah}-{$nomorUrut}"; + // Format: MP-202603-ITST-001 + return "MP-{$yearMonth}-{$kodeTengah}-{$nomorUrut}"; } public function store(StorePegawaiRequest $request) diff --git a/app/Models/SuratIzin.php b/app/Models/SuratIzin.php index 5e1157dd..2eb8ceb2 100644 --- a/app/Models/SuratIzin.php +++ b/app/Models/SuratIzin.php @@ -62,7 +62,7 @@ protected static function booted() if (empty($model->nomor_surat)) { $count = static::whereYear('created_at', date('Y'))->count() + 1; - $model->nomor_surat = sprintf('%03d/MPG/IZN/%s', $count, date('Y')); + $model->nomor_surat = sprintf('%03d/MP/IZN/%s', $count, date('Y')); } }); } diff --git a/database/seeders/MasterDataSeeder.php b/database/seeders/MasterDataSeeder.php index 6e63f9dd..a4019d56 100644 --- a/database/seeders/MasterDataSeeder.php +++ b/database/seeders/MasterDataSeeder.php @@ -51,7 +51,7 @@ public function run() $hrd = User::updateOrCreate( ['email' => 'hrd@mpg.co.id'], [ - 'nik' => 'MPG-202401-HRMG-001', + 'nik' => 'MP-202401-HRMG-001', 'nama_lengkap' => 'HRD Manager', 'password' => Hash::make('Mpg123!'), 'status_aktif' => 1, @@ -69,7 +69,7 @@ public function run() $pegawai = User::updateOrCreate( ['email' => 'budi@mpg.co.id'], [ - 'nik' => 'MPG-202401-HRST-001', + 'nik' => 'MP-202401-HRST-001', 'nama_lengkap' => 'Budi Santoso', 'password' => Hash::make('Mpg123!'), 'status_aktif' => 1, diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b513006cdf4d17dc477106ae562e8d7804b00269 GIT binary patch literal 26129 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 tpz|}GOTR|V;)6?_Y*U7w<{X2{UD}NZ + - Login Administrator - Absensi Digital + Login Administrator - HRIS MP @vite(['resources/css/app.css', 'resources/js/app.js']) @@ -97,7 +97,7 @@ class="absolute inset-0 h-full w-full object-cover"
-
+

Sign in

Masuk menggunakan akun administrator Anda. diff --git a/resources/views/face-approval/index.blade.php b/resources/views/face-approval/index.blade.php index 9d80841d..07e734f1 100644 --- a/resources/views/face-approval/index.blade.php +++ b/resources/views/face-approval/index.blade.php @@ -141,25 +141,36 @@ class="!mb-0" /> @if($faceStatus !== 'unregistered')

- @php - $poses = ['depan' => 'Depan', 'kanan' => 'Kanan', 'kiri' => 'Kiri', 'bawah' => 'Bawah']; - @endphp - @foreach($poses as $poseKey => $poseLabel) - @if(isset($user->face_photos[$poseKey])) -
- face_frames) && $user->face_frame_count > 0) + @php + // Ambil 4 frame representatif (atau kurang jika tidak sampai 4) + $frameCount = $user->face_frame_count; + $step = max(1, floor($frameCount / 4)); + $selectedFrames = []; + + for ($i = 0; $i < $frameCount; $i += $step) { + if (count($selectedFrames) < 4) { + // Extract "01" dari "face_datasets/1/frame_01.jpg" + if (preg_match('/frame_(\d+)\.jpg$/', $user->face_frames[$i], $matches)) { + $selectedFrames[] = $matches[1]; + } + } + } + @endphp + + @foreach($selectedFrames as $index => $frameIdx) +
+ - {{ $poseLabel }} + Fr {{ $frameIdx }}
- @else -
- - - - {{ $poseLabel }} -
- @endif - @endforeach + @endforeach + @else +
+ + Memproses... +
+ @endif
@else
Belum ada foto
diff --git a/resources/views/laporan/pdf.blade.php b/resources/views/laporan/pdf.blade.php index 1aac0815..a77f4c16 100644 --- a/resources/views/laporan/pdf.blade.php +++ b/resources/views/laporan/pdf.blade.php @@ -191,7 +191,7 @@ {{-- KOP SURAT --}}
-
MPG HRIS Enterprise System
+
HRIS MP Enterprise System
Human Resource Information System
@@ -337,7 +337,7 @@ {{-- FOOTER --}}