From 5e4a9c929160c7f38e7328b7af72ffe531ddfc87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 15 Feb 2026 11:04:58 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=9D=B4=EB=A0=A5=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=EC=8B=9C=20=EB=A1=9C=EC=BB=AC=20=EC=98=81=EC=83=81=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EB=8F=84=20=ED=95=A8=EA=BB=98=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DB 레코드만 삭제하던 것을 storage/app/video_gen/{id}/ 디렉토리도 삭제 - 클립, 나레이션, BGM, 최종 영상 등 모든 작업 파일 정리 Co-Authored-By: Claude Opus 4.6 --- app/Http/Controllers/Video/Veo3Controller.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Video/Veo3Controller.php b/app/Http/Controllers/Video/Veo3Controller.php index 2679ad94..ec398278 100644 --- a/app/Http/Controllers/Video/Veo3Controller.php +++ b/app/Http/Controllers/Video/Veo3Controller.php @@ -231,9 +231,27 @@ public function destroy(Request $request): JsonResponse 'ids.*' => 'integer', ]); - $deleted = VideoGeneration::where('user_id', auth()->id()) + $videos = VideoGeneration::where('user_id', auth()->id()) ->whereIn('id', $request->input('ids')) - ->delete(); + ->get(); + + $deleted = 0; + foreach ($videos as $video) { + // 로컬 작업 디렉토리 삭제 (클립, 나레이션, 최종 영상 등) + $workDir = storage_path("app/video_gen/{$video->id}"); + if (is_dir($workDir)) { + $files = glob("{$workDir}/*"); + foreach ($files as $file) { + if (is_file($file)) { + @unlink($file); + } + } + @rmdir($workDir); + } + + $video->delete(); + $deleted++; + } return response()->json([ 'success' => true,