- 영업, 매니저 버튼을 왼쪽(관리 드롭다운 옆)으로 이동
- 오른쪽 관리 영역은 설정/삭제 아이콘만 표시
- 그리드 레이아웃 조정 (col-span-4, col-span-4, col-span-1, col-span-3)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 접기/펼치기 제거, 항상 펼친 상태로 표시
- 업체명 → 관리 드롭다운 순서로 변경
- 업체명 하단에 대표자 | 사업자번호 표시
- 상세정보에 전화번호, 이메일, 주소 아이콘과 함께 표시
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SalesContractController: 계약 상품 저장/조회 API
- product-selection.blade.php: 상품 선택 UI 컴포넌트
- scenario-step.blade.php: 6단계에서 상품 선택 컴포넌트 표시
- routes/web.php: /sales/contracts/* 라우트 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 진행 현황을 2분할 grid로 변경 (영업/매니저 | 본사진행)
- 담당자 드롭다운을 업체명 옆 왼쪽으로 이동 (overflow 방지)
- 모든 @click → x-on:click 변경 (Blade 충돌 방지)
- 본사 진행 비활성화 시 "대기" 간략 표시
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 영업/매니저 프로그레스바를 2행에서 1행으로 변경 (각 50% 너비)
- 삭제 버튼을 본사(HQ) 사용자만 표시하도록 제한
- belongsToHQ() 메서드 활용하여 권한 체크
- @click → x-on:click 변경 (Blade 충돌 방지)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- @click → x-on:click (Blade 지시자 충돌 방지)
- 동적 색상 → 고정 색상 bg-indigo-600 (Tailwind JIT 문제 방지)
- 모든 조건 값을 @php에서 명시적 계산
- 조건 로직 단순화 ($isLastStep 불린 사용)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- scenario-step: $totalSteps 명시적 계산으로 다음 단계 버튼 표시 수정
- scenario-step: 완료 버튼 클릭 시 scenario-completed 이벤트 발송
- scenario-modal: completeAndRefresh 함수 추가 (테넌트 리스트 새로고침)
- SalesDashboardController: refreshTenantList 메서드 추가
- routes/web.php: salesmanagement.dashboard.tenants 라우트 추가
- tenant-list: id="tenant-list-container" 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SalesTenantManagement 모델에 본사 진행 상태 7단계 추가
(대기, 검토, 기획안작성, 개발코드작성, 개발테스트, 개발완료, 통합테스트, 인계)
- 수당 지급 상태 3단계 추가 (대기, 지급대상, 지급완료)
- tenant-list.blade.php에 본사 진행 상태 스텝 인디케이터 추가
- 매니저 100% 완료 시 본사 진행 활성화
- 수당 지급 상태 배지 표시
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
음성 녹음:
- 녹음 종료 시 자동 저장 (저장/취소 버튼 제거)
- 저장 중 오버레이 + 프로그레스바 표시
- 저장 완료 후 자동 초기화
첨부파일:
- 파일 선택 즉시 자동 업로드 (업로드 버튼 제거)
- 업로드 중 오버레이 + 프로그레스바 표시
- 최근 업로드 파일 목록 표시 (5개까지)
- 다중 파일 순차 업로드 및 전체 진행률 표시
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 음성 녹음: 헤더 클릭으로 접기/펼치기, 녹음 중 상태 배지 표시
- 첨부파일: 헤더 클릭으로 접기/펼치기, 대기 파일 개수 배지 표시
- 기본 접힌 상태로 화면 공간 효율화
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 우측 메인 영역에 min-h-0 추가 (flex 자식 스크롤 활성화)
- overflow-hidden 제거
- 하단 상담 기록 영역에 flex-shrink-0 추가 (축소 방지)
- 아코디언 콘텐츠 max-height: 50vh 인라인 스타일로 적용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 기존: 각 단계별 독립적인 상담 기록 (step_id 기반)
- 변경: 모달 하단에 고정 배치, 모든 단계에서 동일한 상담 기록 공유
- 탭 전환 시에도 상담 기록 유지
- step_id 파라미터 제거로 통합 관리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 기존: 마지막 단계(계약 체결)에서만 상담 기록/첨부파일 표시
- 변경: 모든 단계에서 접기/펼치기 아코디언으로 공통 모듈 제공
- 단계별 독립적인 상담 기록 컨테이너 ID 사용
- HTMX revealed 트리거로 펼칠 때만 데이터 로드
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- scenario-modal: close() 시 tenantId 포함한 이벤트 발생
- tenant-list: 이벤트 수신 시 API 호출하여 진행률 업데이트
- 진행률 영역에 ID 부여하여 DOM 직접 업데이트
- 새로고침 없이 실시간 반영
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SalesScenarioChecklist: getSimpleProgress(), getTenantProgress() 메서드 추가
- tenant-list: 진행률 컬럼 추가 (영업/매니저 각각 프로그레스 바)
- 레이아웃 재조정: 버튼 compact화, 컬럼 비율 조정
- 오른쪽 빈 공간 활용하여 정보 밀도 향상
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 실시간 음성 인식: max-h-40 스크롤 영역 + 자동 하단 스크롤
- 음성 인식: 글자 수 표시
- 텍스트 상담 기록: max-h-32 스크롤 영역
- 음성 녹음 transcript: max-h-32 스크롤 영역
- 긴 텍스트(4시간 분량 등) 대응
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 확정된 결과를 인덱스별 배열로 관리하여 중복/덮어쓰기 방지
- 음성 인식 끊김 시 자동 재시작 (녹음 중일 때만)
- no-speech, aborted 에러 무시하고 계속 진행
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ai_configs 테이블 구조 설명
- 설정 우선순위 (DB → .env → 레거시)
- 관련 파일 목록 및 위치
- 주요 메서드 사용법
- 배포 가이드 및 트러블슈팅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- max-w-4xl mx-auto 제거 → space-y-6 (전체 너비, 왼쪽 정렬)
- 다른 관리자 페이지와 동일한 레이아웃 패턴 적용
- 탭 네비게이션 중복 마진 제거
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AI 설정과 스토리지 설정을 탭으로 구분
- GCS 버킷 이름, 서비스 계정 (JSON 직접입력/파일경로) 설정 가능
- GCS 연결 테스트 기능 추가
- GoogleCloudStorageService가 DB 설정 우선 사용 (fallback: 레거시 파일)
- AiConfig 모델에 gcs provider 및 관련 메서드 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- GoogleCloudStorageService 생성 (레거시 방식 JWT 인증)
- 10MB 이상 파일은 Google Cloud Storage에 백업 (본사 연구용)
- 오디오/파일 다운로드 라우트 추가
- voice-recorder.blade.php 인라인 x-data로 변경 (HTMX 호환)
- SalesConsultation 모델에 gcs_uri 필드 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- HTMX 로드 시 script 태그 미실행 문제 해결
- tenantListManager 함수를 인라인 x-data로 이동
- toggle-detail 버튼에 @click 핸들러 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SalesScenarioChecklist::toggle()에서 user_id 설정 추가 (DB NOT NULL 오류 해결)
- scenario-modal.blade.php에서 @scenario-modal-closed.window 이벤트 리스너 제거 (무한 루프 해결)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- @push('scripts') 대신 인라인 x-data로 변경 (HTMX 호환)
- x-collapse 플러그인 의존성 제거, x-transition 사용
- $parent 참조 대신 window 이벤트(CustomEvent) 사용
- 체크리스트 토글, 진행률 업데이트, 단계 이동 정상화
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 전체 코드에서 '영업담당자' → '영업파트너'로 용어 통일
- 관리 드롭다운: 모든 HQ 사용자 → 내가 유치한 하위 영업파트너만 표시
- User.php children() 관계 활용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 별도 스크립트 함수 대신 x-data 인라인 정의
- @click.away를 @click.outside로 수정 (올바른 Alpine 문법)
- 스크립트 로드 순서 문제 해결
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 기존: 로그인 사용자의 모든 테넌트 표시 (HQ 제외)
- 변경: 가망고객(tenant_prospects)에서 전환된 테넌트만 표시
- TenantProspect.STATUS_CONVERTED 상태의 tenant_id만 조회
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>