✨ feat(slik): implementasi sistem import SLIK dengan optimasi memory & timeout handling
- Menambahkan `SlikController.php` dengan method CRUD dan import data SLIK, termasuk logging detail & error handling - Menambahkan `SlikImport.php` dengan Laravel Excel (ToCollection, WithChunkReading, WithBatchInserts, dll.) - Optimasi memory dengan chunk processing (50 baris/chunk) dan batch insert (50 record/batch) - Penanganan timeout menggunakan `set_time_limit` & memory limit configurable via config - Implementasi queue processing untuk file besar (>5MB) dengan progress tracking - Validasi file upload & data baris, skip header dari baris ke-5, serta rollback jika error - Garbage collection otomatis setiap 25 baris, unset variabel tidak terpakai, dan logging usage memory - Error handling komprehensif dengan try-catch, rollback transaksi, hapus file temp, dan logging stack trace - Semua parameter (batch size, chunk size, memory limit, timeout, GC, queue threshold) configurable via config - Diuji pada file besar (>50MB), memory stabil, timeout handling berfungsi, rollback aman, dan progress tracking valid - Catatan: pastikan queue worker berjalan, monitor log progress, sesuaikan config server, dan backup DB sebelum import
This commit is contained in:
@@ -816,5 +816,24 @@ Breadcrumbs::for('bucok.show', function (BreadcrumbTrail $trail, $bucok) {
|
||||
$trail->push('Detail Bucok #' . $bucok->nomor_tiket);
|
||||
});
|
||||
|
||||
// Breadcrumb untuk SLIK
|
||||
Breadcrumbs::for('slik', function (BreadcrumbTrail $trail) {
|
||||
$trail->push('Data SLIK', route('slik.index'));
|
||||
});
|
||||
|
||||
Breadcrumbs::for('slik.index', function (BreadcrumbTrail $trail) {
|
||||
$trail->parent('slik');
|
||||
});
|
||||
|
||||
Breadcrumbs::for('slik.show', function (BreadcrumbTrail $trail, $slik) {
|
||||
$trail->parent('slik');
|
||||
$trail->push('Detail SLIK #' . $slik->id);
|
||||
});
|
||||
|
||||
Breadcrumbs::for('slik.import-form', function (BreadcrumbTrail $trail) {
|
||||
$trail->parent('slik');
|
||||
$trail->push('Import Data SLIK');
|
||||
});
|
||||
|
||||
// add andy
|
||||
require __DIR__ . '/breadcrumbs_registrasi.php';
|
||||
|
||||
@@ -6,6 +6,7 @@ use Modules\Lpj\Http\Controllers\SLAController;
|
||||
use Modules\Lpj\Http\Controllers\KJPPController;
|
||||
use Modules\Lpj\Http\Controllers\MemoController;
|
||||
use Modules\Lpj\Http\Controllers\BucokController;
|
||||
use Modules\Lpj\Http\Controllers\SlikController;
|
||||
use Modules\Lpj\Http\Controllers\TeamsController;
|
||||
use Modules\Lpj\Http\Controllers\RegionController;
|
||||
use Modules\Lpj\Http\Controllers\ResumeController;
|
||||
@@ -801,6 +802,18 @@ Route::middleware(['auth'])->group(function () {
|
||||
Route::post('/import', [BucokController::class, 'import'])->name('import');
|
||||
Route::get('/export', [BucokController::class, 'export'])->name('export');
|
||||
});
|
||||
|
||||
// Route untuk SLIK
|
||||
Route::prefix('slik')->name('slik.')->group(function () {
|
||||
Route::get('/', [SlikController::class, 'index'])->name('index');
|
||||
Route::get('/datatables', [SlikController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('/{id}', [SlikController::class, 'show'])->name('show');
|
||||
Route::post('/import', [SlikController::class, 'import'])->name('import');
|
||||
Route::get('/import-form', [SlikController::class, 'importForm'])->name('import-form');
|
||||
Route::get('/download-template', [SlikController::class, 'downloadTemplate'])->name('download-template');
|
||||
Route::get('/export', [SlikController::class, 'export'])->name('export');
|
||||
Route::post('/truncate', [SlikController::class, 'truncate'])->name('truncate');
|
||||
});
|
||||
});
|
||||
|
||||
require __DIR__ . '/registrasi.php';
|
||||
|
||||
Reference in New Issue
Block a user