Commit Graph

47 Commits

Author SHA1 Message Date
김보곤
322442aef6 fix: [roadmap] 개발서버 문서 경로 설정 가능하도록 개선
- config/roadmap.php 추가 (ROADMAP_DOCS_BASE 환경변수)
- RoadmapController에서 config 기반 경로 사용
- 로컬: base_path('../docs') 기본값 유지
- 서버: .env에서 ROADMAP_DOCS_BASE 설정
2026-03-04 13:21:56 +09:00
김보곤
099d08e49e chore: [ai] Gemini 모델 gemini-2.0-flash → gemini-2.5-flash 마이그레이션
- config/services.php fallback 기본값 변경
- AiConfig DEFAULT_MODELS 상수 + getActiveGemini() fallback 변경
- NotionService fallback 변경
- AI 설정 관리 UI placeholder/기본값 변경
- Google Cloud AI 가이드 서비스 현황 모델명 변경
- 환경변수 관리 아카데미 예시 변경
2026-03-03 08:09:28 +09:00
김보곤
2edce0d282 feat: [hr] 사원등록 기능 확장
- 기본정보에 주민등록번호 필드 추가
- 급여이체정보 섹션 추가 (이체은행, 예금주, 계좌번호)
- 부양가족 정보 섹션 추가 (동적 행 추가/삭제)
- 첨부파일 업로드/다운로드/삭제 기능 추가
- 은행 목록 config/banks.php 설정 파일 생성
- show 페이지 주민등록번호 뒷자리 마스킹 처리
2026-02-26 20:21:24 +09:00
02e8b36a7a fix: [sync] config:cache 환경에서 동기화 API 401 오류 수정
menu_sync_api_key를 config/app.php에 등록하여 config:cache 후에도
env() 값이 정상 반환되도록 수정. 컨트롤러에서 env() 직접 호출 제거.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 17:58:39 +09:00
김보곤
9a7c548246 style: Pint 포맷팅 적용 2026-02-25 11:45:01 +09:00
김보곤
2ae07d40af feat: [esign] 전자계약 이메일 발신주소를 CONTACT_MAIL_FROM_ADDRESS로 분리
- EsignRequestMail, EsignOtpMail, EsignCompletedMail에 from 주소 명시
- config/mail.php에 contact_from_address 설정 추가
- .env의 CONTACT_MAIL_FROM_ADDRESS(contact@codebridge-x.com) 사용
2026-02-24 09:21:52 +09:00
김보곤
0d567e8b88 refactor: [storage] tenant 저장소 경로를 shared-storage에서 storage/app/tenants로 변경
- tenant disk root: /var/www/shared-storage/tenants → storage_path('app/tenants')
- symlink 경로도 동일하게 변경
- react git pull 시 shared-storage 삭제 문제 해결
2026-02-23 21:32:34 +09:00
김보곤
52b26c7216 refactor: [ai-config] 모든 API 키를 DB(ai_configs)에서 .env로 전환
- AiConfig::getActiveGemini() → config('services.gemini') 기반
- AiConfig::getActiveGcs() → config('services.google') 기반
- AiConfig::getActiveClaude() → config('services.claude') 기반
- AiConfig::getActiveNotion() → config('services.notion') 기반
- GoogleCloudStorageService: DB 우선 로직 제거, .env만 사용
- 8개 서비스 파일은 수정 없이 동작 (AiConfig 인터페이스 유지)
2026-02-23 09:55:07 +09:00
김보곤
1b73fd1cf2 refactor: [notion] API 키를 DB(ai_configs)에서 .env로 전환
- NotionService: AiConfig::getActiveNotion() → config('services.notion')
- config/services.php에 notion 섹션 추가
- .env에 NOTION_API_KEY, NOTION_VERSION 추가
2026-02-23 09:48:40 +09:00
김보곤
e6f1d6ba46 feat: [dashboard] 주간 날씨 위젯 추가
- 기상청 공공데이터포털 API 연동 (단기+중기 7일 예보)
- WeatherService: 3시간 캐시, SKY/PTY 아이콘 매핑
- HTMX 비동기 로딩 + 스켈레톤 UI
- 오늘 카드 파란색 강조, 요일/날짜/아이콘/기온 표시
2026-02-21 13:10:54 +09:00
김보곤
1cf48f7c53 refactor: [barobill] chandj 레거시 DB 커넥션 및 동기화 기능 제거
- config/database.php에서 chandj 커넥션 정의 제거
- BarobillConfigController에서 syncCompanies(), getCompanies() 메서드 제거
- api.php에서 barobill/companies 동기화 라우트 제거
- 로컬/서버 .env에서 CHANDJ_DB_* 환경변수 제거
2026-02-21 10:47:51 +09:00
김보곤
bbedb67817 fix:Queue retry_after 90초→1860초 (영상생성 Job 타임아웃 방지)
영상 생성 Job이 10~20분 소요되는데 retry_after=90초로 설정되어
DB 큐 드라이버가 Job을 "멈춤"으로 판단하여 재시도 → tries 초과 실패
retry_after를 Job timeout(1800초)보다 크게 설정하여 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:22:47 +09:00
김보곤
6ab93aedd2 feat:YouTube Shorts AI 자동 생성 시스템 구현 (Veo 3.1 + Gemini)
- GeminiScriptService: 트렌딩 제목/시나리오 생성
- VeoVideoService: Veo 3.1 영상 클립 생성
- TtsService: Google TTS 나레이션 생성
- BgmService: 분위기별 BGM 선택
- VideoAssemblyService: FFmpeg 영상 합성
- VideoGenerationJob: 백그라운드 처리
- Veo3Controller: API 엔드포인트
- React 프론트엔드 (5단계 위저드)
- GoogleCloudService.getAccessToken() public 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:46:28 +09:00
김보곤
79ed88fd10 fix:STT V2 기본 리전을 싱가포르(asia-southeast1)로 변경
Chirp 2 지원 리전: us-central1, europe-west4, asia-southeast1
서울(asia-northeast3)은 Chirp 2 미지원

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 21:04:13 +09:00
김보곤
4c360b3834 fix:STT V2 기본 리전을 서울(asia-northeast3)로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 21:03:25 +09:00
김보곤
7f1f7165a5 feat:최고 품질 음성 녹음 시스템 구축 (STT V2 + Chirp 2 + Web Audio)
- 프론트엔드: Web Audio API 전처리 파이프라인 (GainNode + DynamicsCompressor + AnalyserNode)
- 프론트엔드: VU 미터 실시간 레벨 표시 + 마이크 감도 슬라이더 (0.5x~3.0x)
- 프론트엔드: getUserMedia constraints 강화 + MediaRecorder 128kbps Opus
- 백엔드: Google STT V2 API + Chirp 2 모델 batchRecognize 메서드 추가
- 백엔드: V2→V1 자동 폴백 래퍼 (speechToTextWithDiarizationAuto)
- 백엔드: Speech Adaptation 도메인 용어 힌트 (블라인드/스크린 등 22개)
- 백엔드: V2 SentencePiece 토큰 자동 감지 분기 처리
- 설정: config/services.php에 google.location 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 21:01:37 +09:00
김보곤
12c6175470 refactor:용어 변경 - 가입비 → 개발비
영업 관련 코드 및 문서 전체에서 "가입비"를 "개발비"로 변경
- 컨트롤러, 서비스, 모델
- 뷰 템플릿 (blade 파일)
- 가이드북 문서 (마크다운)
- 설정 파일

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:20:09 +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
d0db5b3aa0 fix: app_releases 스토리지 경로를 API 공유 경로로 수정
- /var/www/shared-storage/releases → /var/www/api/storage/app/releases
- Docker 볼륨 마운트와 일치하도록 수정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 21:06:14 +09:00
78e67eb928 feat: 앱 버전 관리 페이지 구현
- AppVersion 모델, Service, Controller
- 버전 등록 폼 (APK 업로드, 강제 업데이트 설정)
- 버전 목록 테이블 (활성 토글, 다운로드 수, 삭제)
- /app-versions 라우트 추가
- app_releases 스토리지 디스크 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:53:09 +09:00
290af99a98 feat(MNG): FCM 채널명 동기화 및 config 일원화 (7채널)
- push_urgent → push_vendor_register (거래처등록)
- push_payment → push_approval_request (결재요청)
- push_income 신규 추가 (입금)
- config/fcm.php 전체 7개 채널 등록
- FcmController validation 및 Blade select 옵션 반영

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:07:45 +09:00
pro
c7a49fa8ae fix:계약 체결(Step 6) 체크포인트 3개를 1개로 통합 2026-01-29 16:49:00 +09:00
pro
6b54e19a42 feat:GCS 환경변수(.env) 기반 설정 지원
- config/gcs.php 추가: 환경변수 기반 설정
- GoogleCloudStorageService 우선순위 변경:
  1. DB 설정 (UI 오버라이드용)
  2. 환경변수 (.env) - 기본
  3. 레거시 파일 (fallback)
- .env.example에 GCS 설정 추가
- 서버 배포 시 .env만 설정하면 DB 설정 불필요

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:39:49 +09:00
pro
2f381b2285 feat:레거시 영업관리 시스템 MNG 마이그레이션
- 영업/매니저 시나리오 모달 구현 (6단계 체크리스트)
- 상담 기록 기능 (텍스트, 음성, 첨부파일)
- 음성 녹음 + Speech-to-Text 변환
- 첨부파일 Drag & Drop 업로드
- 매니저 지정 드롭다운

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 21:45:11 +09:00
김보곤
87379f3665 Merge develop and fix conflicts in routes/web.php (AI config and Categories) 2026-01-28 13:57:34 +09:00
29949d66eb feat:카테고리 관리 기능 추가
- CategoryController: 카테고리 관리 페이지
- CategoryApiController: 테넌트별 카테고리 CRUD API
- GlobalCategoryApiController: 글로벌 카테고리 관리 API
- Category, GlobalCategory 모델 추가
- 카테고리 관리 뷰 (index, partials)
- config/categories.php 설정 파일

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 12:50:15 +09:00
pro
5d33c3595a fix:tenant 디스크 public URL 접근 설정
- tenant 디스크에 url 설정 추가
- public/tenant-storage 심볼릭 링크 추가
- visibility를 public으로 변경

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 08:53:36 +09:00
pro
d212956f25 feat:바로빌 CERT_KEY 테스트/운영 모드 분리
- BAROBILL_CERT_KEY_TEST: 테스트 환경용
- BAROBILL_CERT_KEY_PROD: 운영 환경용
- BAROBILL_TEST_MODE에 따라 자동 선택

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 10:50:46 +09:00
pro
861192a606 feat:바로빌 회원사관리 멀티테넌트 지원
- 전체 테넌트 보기 토글 추가 (바로빌본사용)
- 테이블에 테넌트 컬럼 표시 (전체 모드에서)
- 회원사 등록 시 테넌트 선택 기능 추가
- 통계 API에도 전체 테넌트 모드 적용
- 컨트롤러에서 tenant_id 직접 지정 지원

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 18:58:39 +09:00
pro
bddac80b75 fix:바로빌 동기화 chandj DB 연결 추가 2026-01-22 16:44:18 +09:00
358c987cc1 feat(comment): 게시글 댓글 CRUD 기능 추가
- 댓글 라우트 추가 (store, update, destroy)
- PostService에 댓글 관리 메서드 추가
- PostController에 댓글 컨트롤러 메서드 추가
- 게시글 상세 페이지에 댓글 섹션 UI 추가 (AlpineJS)
- 계층형 댓글 지원 (부모/대댓글)
- BoardComment 모델 추가
- HTMLPurifier 패키지 및 설정 추가
- 게시글 목록에 첨부파일/댓글 수 표시

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:58:06 +09:00
00a4920b7a feat: Global Menu 계층 이동 기능 추가 및 Role 삭제 오류 수정
Global Menu indent/outdent 기능:
- GlobalMenuController에 move() 메서드 추가
- MenuService에 moveGlobalMenu(), isGlobalDescendant(), reorderGlobalSiblings(), compactGlobalSiblings() 추가
- global-index.blade.php에 드래그 계층 이동 JavaScript 추가
- routes/api.php에 POST /move 라우트 추가

Role 삭제 500 에러 수정:
- config/auth.php에 api guard 추가 (Spatie Permission getModelForGuard 오류 해결)
- RoleService에서 불필요한 users()->detach() 제거 (FK CASCADE 처리)
- RoleController에서 HTMX 요청 시 View 직접 반환 (JSON 파싱 에러 해결)
- index.blade.php에서 불필요한 afterSwap 핸들러 제거

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 22:43:48 +09:00
6525bfd715 feat: MNG → DEV 자동 로그인 기능 구현
- LoginToken 모델 생성 (토큰 생성 및 URL 생성)
- UserController에 loginToken API 메서드 추가
- DEV_APP_URL 환경설정 추가 (config/services.php)
- 사용자 목록에 "DEV 접속" 버튼 추가
- openDevSite JavaScript 함수 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 13:43:13 +09:00
c073b82633 feat: FCM 관리자 페이지 추가
- FCM 토큰 관리 페이지 (목록, 활성화/비활성화, 삭제)
- 테스트 발송 페이지 (대상 필터, 미리보기, 발송)
- 발송 이력 페이지 (필터링, 결과 확인)
- FcmSender 서비스 (HTTP v1, 배치 처리)
- fcm_send_logs 테이블 마이그레이션
- google/auth 패키지 추가
2025-12-19 09:57:00 +09:00
a62337ef5c feat: [API Explorer] Phase 1 완성 - 히스토리 로드, 밸리데이션, 유니코드 처리
- 히스토리 로드 기능 구현 (loadFromHistory, fillFormFromHistory)
- 클라이언트 사이드 필수값 밸리데이션 추가
- 응답 본문 \xXX UTF-8 바이트 시퀀스 디코딩 (PHP 스택트레이스 한글 깨짐 해결)
- sidebar에 data-operation-id 속성 추가
- history-drawer 함수 연결 수정
- Flow Tester 변수 바인딩 개선
- 마이그레이션 파일 통합 정리
2025-12-18 15:42:01 +09:00
2ed273097e feat: API 토큰 교환 연동 (FCM 푸시용)
- ApiTokenService: API 서버 토큰 교환 서비스 추가
- AuthService: 로그인 성공 시 API 토큰 교환 연동
- 레이아웃: 세션 토큰을 localStorage에 동기화 (FCM 사용)
- config/services.php: exchange_secret 설정 추가

환경변수 필요: INTERNAL_EXCHANGE_SECRET (API와 동일)
2025-12-18 14:21:50 +09:00
9f3c5a98b9 fix: [api-explorer] Docker 환경 OpenAPI 경로 및 뷰 오류 수정
- OpenAPI 스펙 파일을 mng/storage/api-docs/로 복사
- config 경로를 storage_path()로 변경 (Docker 호환)
- 라우트 이름 수정 (dev-tools.api-explorer.* 접두사)
- HTMX 트리거 수정 (input changed, autocomplete off)
- openSettingsModal, showToast 함수 추가
2025-12-17 23:44:36 +09:00
fbd4fb728e feat: [api-explorer] Phase 1 기본 구조 및 OpenAPI 파싱 구현
- Config, Service, Controller, View 생성
- Model 4개 (admin_api_* 테이블 참조)
- 3-Panel 레이아웃 (sidebar, request, response)
- HTMX 기반 동적 UI
- 마이그레이션은 api/ 프로젝트에서 관리
2025-12-17 22:06:28 +09:00
f7a8839ded feat: API 로그 재전송 기능 추가
- 리스트/상세 페이지에 재전송 버튼 추가
- 인증 방식 선택: 토큰 직접 입력 / 사용자 선택(Sanctum 토큰 발급)
- 환경별 API URL 변환 (API_BASE_URL 설정)
- X-API-KEY 헤더 자동 추가 (FLOW_TESTER_API_KEY 사용)
- 성공/실패 상태 배너 표시
- 세션에 토큰 저장하여 다음 재전송 시 자동 입력
- 재전송 성공 시 1초 후 페이지 새로고침
- 에러만 필터 옵션 추가 (4xx+5xx)
2025-12-17 18:56:40 +09:00
331eaebf86 feat: 웹 녹음 AI 요약 기능 구현
- MeetingLog 모델 (BelongsToTenant, SoftDeletes)
- GoogleCloudService (GCS 업로드, STT API)
- MeetingLogService (Claude API 요약)
- MeetingLogController (HTMX/JSON 듀얼 응답)
- 순수 Tailwind CSS UI 구현
- API 라우트 8개 엔드포인트 등록
2025-12-16 15:07:56 +09:00
534ffcfbc0 feat(mng): 사업자등록증 OCR 기능 구현
## 주요 변경사항
- BizCertController: 내부 API (OCR, CRUD)
- BizCertOcrService: Claude Vision API 연동, Tesseract.js 지원
- BizCert 모델 및 FormRequest 추가
- config/services.php에 Claude API 설정 추가

## 프론트엔드
- business-ocr.blade.php: layouts.app 레이아웃 적용
- JS/AI 토글 모드 (Tesseract.js / Claude Vision)
- 이미지 전처리 추가 (그레이스케일, 대비 강화, 이진화)
- SweetAlert2 연동 (토스트, 삭제 확인)

## API 엔드포인트
- POST /api/biz-cert/ocr - OCR 처리
- GET /api/biz-cert - 목록 조회
- POST /api/biz-cert - 저장
- DELETE /api/biz-cert/{id} - 삭제

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-16 01:56:49 +09:00
5d0f2d1346 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>
2025-12-14 02:13:20 +09:00
2846d6c034 style: 관리자 패널 UI 개선 및 스크럼 모달 통합
- 테이블 헤더 스타일 통일 (menus, roles, permissions, boards 등)
- 권한 매트릭스 체크박스/버튼 크기 20x20으로 표준화
- 스크럼 항목 추가/수정 모달 통합 (코드 중복 제거)
- daily-logs API URL 경로 수정 (/pm/ 제거)
- 타임존 Asia/Seoul로 변경
- flow-tester 액션 아이콘 크기 조정
2025-12-03 16:47:57 +09:00
8948aa86d0 feat: 게시글 파일 첨부 기능 구현
- File 모델 추가 (Polymorphic 관계)
- Post 모델에 files() MorphMany 관계 추가
- PostService 파일 업로드/삭제/다운로드 메서드 추가
- PostController 파일 관련 액션 추가
- 게시글 작성/수정 폼에 드래그앤드롭 파일 업로드 UI
- 게시글 상세에 첨부파일 목록 표시
- tenant 디스크 설정 (공유 스토리지)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 00:54:43 +09:00
817690f544 feat: 게시판 템플릿 기반 생성 기능 및 SVG 아이콘 적용
- 게시판 템플릿 설정 파일 추가 (config/board_templates.php)
  - 시스템 템플릿: 공지사항, 1:1문의, FAQ, 팝업공지
  - 테넌트 템플릿: 자유게시판, 갤러리, 자료실, 공지사항, Q&A
- BoardService 템플릿 관련 메서드 추가
- BoardController 템플릿 API 엔드포인트 추가
- 게시판 생성 UI 3단계 위자드로 개선
- 모든 템플릿 아이콘을 이모지에서 SVG path로 변경

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:28:43 +09:00
f49cfd982a 테넌트 관리 기능 수정 및 ViewServiceProvider 변수명 충돌 해결
주요 변경사항:
- Spatie Laravel Permission 패키지 설치 (v6.23.0)
- admin 프로젝트에서 필수 Traits 및 Scopes 복사
  - ModelTrait, BelongsToTenant, HasTenantFilter, UppercaseAttributes
  - TenantScope
- Tenant 모델 관계 수정 (hasMany → belongsToMany via user_tenants)
- Tenant 모델 null 처리 추가 (status_label, created_at)
- Laravel 12 bootstrap/app.php에 API 라우트 등록
- API 라우트 미들웨어 수정 (auth:sanctum → web,auth)
- HTMX 라이브러리 및 CSRF 토큰 헤더 추가

ViewServiceProvider 수정:
- 전역 View Composer의 $tenants 변수를 $globalTenants로 변경
- 페이지별 페이지네이션된 $tenants 변수와의 충돌 방지
- tenant-selector.blade.php에서 $globalTenants 사용

버그 수정:
- Collection::hasPages() 오류 해결 (ViewComposer 변수 덮어쓰기 문제)
- 테넌트 목록 무한 로딩 스피너 해결
- 500 Internal Server Error 해결
2025-11-24 11:17:31 +09:00
ece1f28747 feat: MNG 인증 시스템 구현
- Laravel Sanctum 기반 세션 인증 시스템 구축
- Service-First 아키텍처: AuthService 작성
- FormRequest 분리: LoginRequest 검증
- DaisyUI 기반 로그인 UI 구현
- 라우트 설정: /login, /logout, /dashboard
- Tailwind CSS 4.x PostCSS 설정
- Vite 빌드 완료

Phase 1-1: 인증 시스템 개발 완료
2025-11-20 16:24:40 +09:00