원클릭으로
feature-import-excel
Workflow untuk menambahkan fitur import data melalui file Excel pada modul CRUD existing.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Workflow untuk menambahkan fitur import data melalui file Excel pada modul CRUD existing.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Workflow untuk fitur non-standar seperti Dashboard, Settings, User Management, atau Halaman Khusus.
Panduan refactor khusus Backend (Laravel)
Panduan refactor E2E test per modul menggunakan shared test factories, termasuk pertimbangan refactoring frontend/backend agar testing konsisten.
Panduan refactor khusus Frontend (React SPA)
Panduan membuat unit test, feature test, dan e2e test sesuai pola codebase.
Panduan membuat migration, seeder, dan factory sesuai standar Laravel.
| name | Feature Import Excel |
| description | Workflow untuk menambahkan fitur import data melalui file Excel pada modul CRUD existing. |
Skill ini digunakan untuk menambahkan fitur Import (biasanya via .xlsx, .xls, .csv) pada modul CRUD yang sudah ada. Arsitektur fitur import ini mengadopsi pola yang digunakan pada modul Employee dan Supplier.
Sebelum membuat file, pelajari modul target:
department_id mereferensikan tabel departments. Di excel, user akan mengisi Nama Department, bukan ID.Fitur import membutuhkan 4 komponen utama di backend:
app/Imports/{Module}Import.php)Gunakan library Maatwebsite\Excel.
ToCollection, WithHeadingRow, SkipsEmptyRows.__construct() menggunakan pluck('id', 'name') untuk mencegah query N+1 di dalam looping import.importedCount, skippedCount, dan detail errors (array assoc dengan keys row, field, message).app/Actions/{Modules}/Import{Modules}Action.php)Class logika yang meng-orkestrasikan proses import.
UploadedFile.Excel::import(new {Module}Import, $file).imported, skipped, errors) yang diambil dari class Importer.app/Http/Requests/{Modules}/Import{Module}Request.php)Memvalidasi file upload.
'file' => 'required|file|mimes:xlsx,xls,csv,txt|max:10240' (Max 10MB).{Module}Controller.php. Tambahkan method:
use App\Actions\{Modules}\Import{Modules}Action;
use App\Http\Requests\{Modules}\Import{Module}Request;
use Illuminate\Http\JsonResponse;
public function import(Import{Module}Request $request): JsonResponse
{
$summary = (new Import{Modules}Action())->execute($request->file('file'));
return response()->json($summary);
}
Gunakan import di header file. Jangan tulis FQCN seperti \App\Actions\... atau \Illuminate\... langsung di body method.routes/api/{module}.php. Tambahkan route POST:
Route::post('{slug}/import', [Controller::class, 'import'])
->name('{slug}.import')
->middleware('permission:{slug}.create,true');
Import{Module}Dialog.tsx (atau re-use generic ImportDialog.tsx jika ada).
.xlsx kosong yang hanya berisi Heading sesuai format Import, diletakkan pada folder /public/templates/ (misal /templates/import_{module}.xlsx), atau di-generate on the fly di backend/frontend (jika diminta spesifik).{module}/index.tsx.useMutation) dengan endpoint /api/{slug}/import.tests/Feature/{Modules}/{Module}ImportTest.php)->group('{slug}') wajib ada di level atas (pest file).422 jika bukan file valid.Sanctum, Storage, Excel, Carbon, dan model terkait di header file. Hindari FQCN seperti \Laravel\Sanctum\Sanctum::actingAs(...) atau \Illuminate\Support\Facades\Storage::fake(...) di body test.tests/e2e/{slug}/{module}.spec.ts)