feat: [equipment] 사진 멀티 업로드(GCS) + 엑셀 Import 기능 추가

- EquipmentPhotoService: GCS 기반 사진 업로드/삭제/조회 (최대 10장)
- EquipmentImportService: 엑셀 파싱 → 설비 일괄 등록 (한글 헤더 자동 매핑)
- API: 사진 업로드/목록/삭제, Import 미리보기/실행 엔드포인트
- 뷰: create/edit에 드래그앤드롭 사진 업로드, show에 갤러리 표시
- import.blade.php: 3단계 Import UI (파일선택 → 미리보기 → 결과)
- phpoffice/phpspreadsheet 패키지 추가
This commit is contained in:
김보곤
2026-02-25 20:15:06 +09:00
parent a3668354d9
commit 7f1327bfea
16 changed files with 1462 additions and 13 deletions

View File

@@ -987,6 +987,15 @@
Route::post('/repairs', [\App\Http\Controllers\Api\Admin\EquipmentRepairController::class, 'store'])->name('repairs.store');
Route::put('/repairs/{id}', [\App\Http\Controllers\Api\Admin\EquipmentRepairController::class, 'update'])->whereNumber('id')->name('repairs.update');
Route::delete('/repairs/{id}', [\App\Http\Controllers\Api\Admin\EquipmentRepairController::class, 'destroy'])->whereNumber('id')->name('repairs.destroy');
// 사진 관리
Route::post('/{id}/photos', [\App\Http\Controllers\Api\Admin\EquipmentController::class, 'uploadPhotos'])->whereNumber('id')->name('photos.upload');
Route::get('/{id}/photos', [\App\Http\Controllers\Api\Admin\EquipmentController::class, 'photos'])->whereNumber('id')->name('photos.index');
Route::delete('/{id}/photos/{fileId}', [\App\Http\Controllers\Api\Admin\EquipmentController::class, 'deletePhoto'])->whereNumber('id')->whereNumber('fileId')->name('photos.destroy');
// 엑셀 Import
Route::post('/import/preview', [\App\Http\Controllers\Api\Admin\EquipmentController::class, 'importPreview'])->name('import.preview');
Route::post('/import', [\App\Http\Controllers\Api\Admin\EquipmentController::class, 'importExecute'])->name('import.execute');
});
Route::middleware(['web', 'auth'])->prefix('meeting-logs')->name('api.admin.meeting-logs.')->group(function () {