Commit Graph

35 Commits

Author SHA1 Message Date
김보곤
97b5f66077 refactor:AI 설정 페이지 탭 제거, 한 페이지에 전체 표시
AI 설정 + 스토리지 설정을 섹션별로 나누어 한 페이지에 표시
각 섹션에 개별 추가 버튼 배치

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 08:01:50 +09:00
김보곤
4ed902e846 feat:AI 토큰 단가 설정 UI 및 DB 조회 연동
- AiPricingConfig 모델 추가 (캐시 적용 단가/환율 조회)
- AiTokenUsageController에 pricingList/pricingUpdate 메서드 추가
- AI 토큰 사용량 페이지에 설정 버튼 + 모달 UI 추가
- AiTokenHelper 하드코딩 단가를 DB 조회로 변경
- pricing 라우트 추가 (GET/PUT)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:33:56 +09:00
김보곤
2dd6568680 fix:AI 음성녹음 전체건수를 검색입력창 옆으로 이동
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:29:03 +09:00
김보곤
351aa3b1c9 fix:AI 음성녹음 검색 아이콘/텍스트 겹침 수정
- 입력 패딩 pl-9→pl-10, 너비 w-44→w-48로 조정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:17:09 +09:00
김보곤
3016b73fb8 fix:AI 음성녹음 검색 아이콘/placeholder 위치 우측 조정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:15:51 +09:00
김보곤
2d8c29e687 fix:AI 음성녹음 버튼/검색/필터를 한 행에 정렬
- 헤더, 검색, 필터, 새녹음, 파일업로드 버튼을 한 줄로 통합
- 통계 카운트를 헤더 옆으로 이동

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:12:29 +09:00
김보곤
6b7214bce7 fix:AI 음성녹음 레이아웃 전체 너비로 확장
- max-w-4xl mx-auto 제거하여 콘텐츠 영역 전체 너비 사용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:09:48 +09:00
김보곤
841a0ac652 fix:Web Speech API 실시간 음성인식 품질 개선
- 세션 간 텍스트 누적 보존 (accumulatedTextRef 추가)
- 침묵으로 인한 자동 재시작 시 이전 텍스트 유실 방지
- 일시정지→재개 시 텍스트 보존
- 재시작 300ms 지연으로 급속 루프 방지
- stop() 후 이벤트 핸들러 제거로 중복 처리 방지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:06:28 +09:00
김보곤
1040f4ecaa feat:AI토큰사용량 테이블에 녹음시간 열 추가
- 모델 열 뒤에 녹음시간 컬럼 추가
- STT(google-speech-to-text) 항목에서 prompt_tokens(초)를 '분 초' 형식으로 표시
- 다른 항목은 빈칸 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:46:58 +09:00
김보곤
67c605f5ae feat:AI토큰사용량 테이블에 카테고리 열 추가
- 호출메뉴 앞에 카테고리 컬럼 추가
- menu_name에서 카테고리 자동 파생 (AI음성녹음, 회의록, 명함OCR, 사업자등록증OCR)
- 주황색 뱃지로 시각 구분

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:35:42 +09:00
김보곤
6d02cc5e5e feat:상세모달에 브라우저 내장 오디오 플레이어 추가
- DetailModal에 <audio> 태그 기반 재생기 추가 (다운로드 없이 바로 재생)
- 다운로드 엔드포인트에 ?inline=1 파라미터 지원 (스트리밍 재생용)
- Content-Length, Accept-Ranges 헤더 추가
- 플레이어 옆 다운로드 버튼 배치

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:24:59 +09:00
김보곤
5818c7e93e fix:전체 Lucide 아이콘 호환성 수정 (24개 파일)
- Lucide 0.563.0 API 변경 대응: lucide.icons[name] → PascalCase 개별 export
- kebab-case → PascalCase 자동 변환 로직 적용
- 리네임된 아이콘 별칭 매핑 (check-circle→CircleCheck 등)
- 구버전 lucide.icons 객체 폴백 유지
- 적용 범위: finance/*(19), system/*(2), sales/interviews(1), ai-token-usage(1), holidays(1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:12:40 +09:00
김보곤
6eb60fa22d fix:Lucide 아이콘 호환성 수정 및 액션버튼 항상 표시
- Lucide 0.563.0 API 변경 대응 (icons 객체 → 개별 PascalCase export)
- 아이콘 이름 변환: kebab-case → PascalCase, 구버전 호환 유지
- 리네임된 아이콘 별칭 처리 (check-circle→CircleCheck 등)
- 액션버튼(결과보기/다운로드/삭제) opacity-0 제거하여 항상 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:03:47 +09:00
김보곤
e8f07bad63 feat:AI 음성녹음 삭제 확인 모달 및 다운로드 버튼 추가
- DeleteConfirmModal 컴포넌트 추가 (confirm 대체)
- RecordingCard에 음성파일 다운로드 버튼 추가
- 삭제 중 로딩 상태 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:52:57 +09:00
김보곤
af344bcc60 feat:AI 음성녹음 실시간 음성인식 및 카테고리 선택기 추가
- Web Speech API로 녹음 중 실시간 텍스트 표시
- 인터뷰 카테고리/템플릿 선택 드롭다운 추가
- 녹음/파일업로드 시 interview_template_id 전달

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:15:46 +09:00
김보곤
031bcf8a4c refactor:AI 음성녹음 UI 전면 재설계
- Canvas 기반 실시간 파형 시각화 (Web Audio API)
- 원형 녹음 버튼 (보라→빨강→녹색 상태 전환)
- 저장 진행률 오버레이 (프로그레스바 + 애니메이션)
- 카드형 목록 (호버 액션, 상태 아이콘)
- 탭 기반 상세 모달 (AI 분석 / 녹취록 원문)
- 파일 업로드 드래그&드롭 개선
- 검색/필터 UI 개선
- 전체 IIFE 스코프 격리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:06:17 +09:00
김보곤
31dc453f68 fix:AI 음성녹음 React 스코프 충돌 수정
- 전역 Toast 등 컴포넌트명 충돌 방지를 위해 IIFE로 감싸기

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 12:58:24 +09:00
김보곤
5fe6afd9c4 feat:AI 음성녹음 기능 추가
- AiVoiceRecording 모델 (상태 상수, 접근자)
- AiVoiceRecordingService (GCS 업로드, STT, Gemini 분석 파이프라인)
- AiVoiceRecordingController (CRUD, 녹음 처리, 상태 폴링)
- React 블레이드 뷰 (녹음 UI, 파일 업로드, 목록, 상세 모달)
- 라우트 추가 (system/ai-voice-recording)
- 메뉴 시더에 AI 음성녹음 항목 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 12:52:37 +09:00
김보곤
55f604ce6f feat:AI 토큰 사용량 관리 화면 추가
- AiTokenUsageController (index, list) 생성
- AiTokenUsage 모델 생성
- React 기반 토큰 사용량 조회 페이지 (필터, 통계, 페이지네이션)
- 라우트 추가 (system/ai-token-usage)
- AiTokenUsageMenuSeeder 메뉴 시더 생성

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 09:57:25 +09:00
김보곤
9cb014204e fix:휴일 삭제 버튼 텍스트 '해당연도 삭제'로 변경 2026-02-06 09:26:51 +09:00
김보곤
e64be112e1 fix:휴일 년도별 삭제 POST 방식으로 변경
- DELETE /year/{year} → POST /destroy-year 변경
- JavaScript fetch도 POST + JSON body 방식으로 변경

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:23:17 +09:00
김보곤
aea62e3f1c debug:휴일 삭제 URL 디버깅 로그 추가 2026-02-06 09:15:10 +09:00
김보곤
91e3ec8cf1 feat:휴일관리 중복 방지 및 년도별 삭제 기능 추가
- store/bulkStore 메소드에 중복 휴일 등록 방지 로직 추가
- 년도별 일괄 삭제 기능 (destroyByYear) 추가
- 휴일관리 UI에 년도 전체 삭제 버튼 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:10:07 +09:00
김보곤
e68a4c9cad feat:달력 휴일 관리 기능 추가
- 달력/목록 뷰 전환, 단일/기간/대량 등록 지원
- 공휴일/회사지정/대체휴일/임시휴일 유형 관리
- 시스템 관리 메뉴에 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 19:59:35 +09:00
a559fa2303 feat:시스템 알림 AI 분석용 복사 버튼 추가
- StatAlert 모델에 ai_analysis_summary accessor 추가
- 알림 상세 아코디언에 'AI 분석용 복사' 버튼 추가
- 클립보드 복사 시 심각도/도메인/유형/메시지 등 포맷팅

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:20:47 +09:00
9cd902af2b feat: 시스템 알림 관리 페이지 (Phase 5)
- sam_stat DB 연결 추가 (config/database.php)
- StatAlert 모델 생성 (sam_stat 연결, 읽기+상태변경)
- SystemAlertController 생성 (목록/읽음/해결/전체읽음)
- 시스템 알림 Blade 페이지 (필터/페이지네이션/HTMX)
- /system/alerts 라우트 등록

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 08:33:33 +09:00
pro
bf1e3ff5b7 feat: Vertex AI 연결 테스트 기능 추가
- testGeminiVertexAi() 메서드 추가
- getVertexAiAccessToken() OAuth 토큰 획득 메서드 추가
- 모달에서 Vertex AI 파라미터 전송하도록 수정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:37:33 +09:00
pro
5f0b221750 fix:AI 설정 페이지 레이아웃 톤앤매너 통일
- max-w-4xl mx-auto 제거 → space-y-6 (전체 너비, 왼쪽 정렬)
- 다른 관리자 페이지와 동일한 레이아웃 패턴 적용
- 탭 네비게이션 중복 마진 제거

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:32:14 +09:00
pro
0d5045d535 fix:AI 설정 페이지 탭 전환 UI 수정
- x-cloak 스타일 추가: Alpine.js 초기화 전 탭 콘텐츠 숨김
- 초기 로드 시 두 탭이 동시에 보이던 문제 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:29:50 +09:00
pro
50becbdd28 feat:AI 설정 페이지에 GCS 스토리지 설정 통합
- AI 설정과 스토리지 설정을 탭으로 구분
- GCS 버킷 이름, 서비스 계정 (JSON 직접입력/파일경로) 설정 가능
- GCS 연결 테스트 기능 추가
- GoogleCloudStorageService가 DB 설정 우선 사용 (fallback: 레거시 파일)
- AiConfig 모델에 gcs provider 및 관련 메서드 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:22:12 +09:00
pro
7b7cebaefd fix:AI 설정 Vertex AI 저장 오류 및 모달 동작 개선
- api_key NOT NULL 제약 해결 (Vertex AI 모드에서 플레이스홀더 값 사용)
- 모달 백그라운드 클릭 시 닫히지 않도록 변경

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 08:14:06 +09:00
pro
d824b45fc0 feat:AI 설정에 Vertex AI 서비스 계정 인증 방식 추가
- AiConfig 모델에 Vertex AI 헬퍼 메소드 추가
- AI 설정 UI에 인증 방식 선택 (API 키 / Vertex AI)
- Vertex AI 선택 시 프로젝트 ID, 리전, 서비스 계정 경로 입력
- BusinessCardOcrService가 DB 설정 기반으로 동작
- Google AI Studio와 Vertex AI 모두 지원

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 08:08:30 +09:00
pro
57e8e5d131 fix:AI 설정 모달 JSON 파싱 오류 수정 및 기술문서 추가
- data attribute 방식으로 JSON 전달 변경
- hidden 클래스 CSS 명시적 정의
- 페이지 로드 시 모달 강제 닫기
- showToast 함수 추가
- 명함추출로직.md 기술문서 작성

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 23:30:40 +09:00
pro
b819bc02a5 fix:AI 설정 모달 JavaScript 수정
- 함수들을 window 객체에 명시적으로 할당
- 이벤트 리스너를 DOMContentLoaded 안에서 등록
- IIFE 패턴으로 스코프 분리
2026-01-27 23:11:14 +09:00
pro
a834beaa10 feat:명함 OCR 시스템 구현
- AiConfig 모델: AI API 설정 관리
- BusinessCardOcrService: Gemini Vision API 호출
- BusinessCardOcrController: OCR API 엔드포인트
- AiConfigController: AI 설정 CRUD
- create.blade.php: 드래그앤드롭 명함 인식 UI
- AI 설정 관리 페이지 추가
2026-01-27 23:00:52 +09:00