From d02c142f65dfdbefe632d698e048398f6d3047d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 8 Mar 2026 12:57:29 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[rd]=20=EC=82=AC=EC=9A=B4=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=EA=B3=A0/=EB=82=98=EB=A0=88=EC=9D=B4=EC=85=98=20AI=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=20=EC=82=AC=EC=9A=A9=EB=9F=89=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RdController: 사운드로고-AI생성, 사운드로고-TTS 토큰 기록 - CmSongController: 나레이션-가사생성, 나레이션-TTS 토큰 기록 - AI 토큰 사용량 UI에 사운드로고/나레이션 카테고리 분류 추가 --- app/Http/Controllers/Rd/CmSongController.php | 9 +++++++++ app/Http/Controllers/RdController.php | 9 +++++++++ resources/views/system/ai-token-usage/index.blade.php | 2 ++ 3 files changed, 20 insertions(+) diff --git a/app/Http/Controllers/Rd/CmSongController.php b/app/Http/Controllers/Rd/CmSongController.php index 1a76f726..f6987b32 100644 --- a/app/Http/Controllers/Rd/CmSongController.php +++ b/app/Http/Controllers/Rd/CmSongController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Rd; +use App\Helpers\AiTokenHelper; use App\Http\Controllers\Controller; use App\Models\Rd\CmSong; use Illuminate\Http\JsonResponse; @@ -114,6 +115,10 @@ public function generateLyrics(Request $request): JsonResponse } $data = $response->json(); + + // 토큰 사용량 기록 + AiTokenHelper::saveGeminiUsage($data, 'gemini-2.5-flash', '나레이션-가사생성'); + $text = $data['candidates'][0]['content']['parts'][0]['text'] ?? ''; return response()->json([ @@ -165,6 +170,10 @@ public function generateAudio(Request $request): JsonResponse } $data = $response->json(); + + // 토큰 사용량 기록 + AiTokenHelper::saveGeminiUsage($data, 'gemini-2.5-flash-preview-tts', '나레이션-TTS'); + $inlineData = $data['candidates'][0]['content']['parts'][0]['inlineData'] ?? null; if (! $inlineData || empty($inlineData['data'])) { diff --git a/app/Http/Controllers/RdController.php b/app/Http/Controllers/RdController.php index 4418a935..65a542da 100644 --- a/app/Http/Controllers/RdController.php +++ b/app/Http/Controllers/RdController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Helpers\AiTokenHelper; use App\Models\HR\Employee; use App\Models\Rd\AiQuotation; use App\Models\Tenants\Department; @@ -438,6 +439,10 @@ public function soundLogoGenerate(Request $request): JsonResponse } $data = $response->json(); + + // 토큰 사용량 기록 + AiTokenHelper::saveGeminiUsage($data, $model, '사운드로고-AI생성'); + $text = $data['candidates'][0]['content']['parts'][0]['text'] ?? ''; // JSON 파싱 (코드블록 제거) @@ -510,6 +515,10 @@ public function soundLogoTts(Request $request): JsonResponse } $data = $response->json(); + + // 토큰 사용량 기록 + AiTokenHelper::saveGeminiUsage($data, 'gemini-2.5-flash-preview-tts', '사운드로고-TTS'); + $inlineData = $data['candidates'][0]['content']['parts'][0]['inlineData'] ?? null; if (! $inlineData || empty($inlineData['data'])) { diff --git a/resources/views/system/ai-token-usage/index.blade.php b/resources/views/system/ai-token-usage/index.blade.php index 5164053f..dc9d40d4 100644 --- a/resources/views/system/ai-token-usage/index.blade.php +++ b/resources/views/system/ai-token-usage/index.blade.php @@ -230,6 +230,8 @@ if (menuName.startsWith('회의록')) return '회의록'; if (menuName.includes('명함')) return '명함OCR'; if (menuName.includes('사업자등록증')) return '사업자등록증OCR'; + if (menuName.startsWith('사운드로고')) return '사운드로고'; + if (menuName.startsWith('나레이션')) return '나레이션'; return menuName; };