feat(lab): SAM AI 음성 어시스턴트 레거시 마이그레이션
레거시 5130.sam.kr/ai_sam의 Google Gemini Live API 음성 어시스턴트를 MNG 프로젝트로 이전 (React → Pure JS + Blade) 변경 내용: - GeminiController: API 키 제공 엔드포인트 추가 - sam-ai-live.js: LiveManager, AudioVisualizer ES 모듈 - sam-ai-menu.blade.php: 전면 재작성 (Tailwind UI) - 환경변수: GEMINI_API_KEY, GEMINI_PROJECT_ID 추가 기능: - 실시간 음성 입출력 (WebAudio API) - UI 도구: navigateToPage, searchDocuments - 오디오 시각화 (Canvas API) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
49
app/Http/Controllers/Api/GeminiController.php
Normal file
49
app/Http/Controllers/Api/GeminiController.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/**
|
||||
* Gemini API Controller
|
||||
*
|
||||
* Google Gemini Live API 연동을 위한 API 키 제공 컨트롤러
|
||||
* SAM AI 음성 어시스턴트에서 사용
|
||||
*/
|
||||
class GeminiController extends Controller
|
||||
{
|
||||
/**
|
||||
* Gemini API 키 조회
|
||||
*
|
||||
* 인증된 사용자에게만 API 키를 제공합니다.
|
||||
* .env 파일의 GEMINI_API_KEY 환경변수를 사용합니다.
|
||||
*/
|
||||
public function getApiKey(Request $request): JsonResponse
|
||||
{
|
||||
// 환경변수에서 API 키 조회
|
||||
$apiKey = config('services.gemini.api_key');
|
||||
|
||||
if (empty($apiKey)) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'error' => 'Gemini API 키가 설정되지 않았습니다. .env 파일에 GEMINI_API_KEY를 설정해주세요.',
|
||||
], 500);
|
||||
}
|
||||
|
||||
// API 키 유효성 검사 (최소 길이)
|
||||
if (strlen($apiKey) < 20) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'error' => '유효하지 않은 Gemini API 키입니다.',
|
||||
], 500);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'apiKey' => $apiKey,
|
||||
'projectId' => config('services.gemini.project_id', 'codebridge-chatbot'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user