Commit Graph

725 Commits

Author SHA1 Message Date
pro
aa89be21fc fix:테넌트 리스트 UI 개선 및 삭제 권한 제한
- 영업/매니저 프로그레스바를 2행에서 1행으로 변경 (각 50% 너비)
- 삭제 버튼을 본사(HQ) 사용자만 표시하도록 제한
- belongsToHQ() 메서드 활용하여 권한 체크
- @click → x-on:click 변경 (Blade 충돌 방지)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 14:18:49 +09:00
pro
2fcd9c6724 fix:단계 버튼 로직 완전 재작성
- @click → x-on:click (Blade 지시자 충돌 방지)
- 동적 색상 → 고정 색상 bg-indigo-600 (Tailwind JIT 문제 방지)
- 모든 조건 값을 @php에서 명시적 계산
- 조건 로직 단순화 ($isLastStep 불린 사용)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:59:02 +09:00
09323aaa4c fix:공통코드 슈퍼관리자 권한 우회 추가
슈퍼관리자는 다른 테넌트/글로벌 코드 수정·토글·삭제 가능

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:04:37 +09:00
pro
20d8c774f6 fix:시나리오 단계 버튼 및 완료 시 진행률 반영
- 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>
2026-01-29 13:02:52 +09:00
pro
b319066330 fix:시나리오 단계 버튼 표시 오류 수정
- $steps 빈 배열 체크를 ?? 에서 empty()로 변경
- null만 체크하던 ?? 연산자로 인해 빈 배열일 때 버튼 미표시 문제 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:55:42 +09:00
pro
ade6ef6375 fix:시나리오 단계 이동 버튼 안전장치 추가
- $steps가 전달되지 않을 경우 config에서 직접 가져오도록 수정
- 제안 및 견적 등 모든 단계에서 다음 단계 버튼 표시 보장

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:44:05 +09:00
pro
d124078fd4 feat:본사 진행 상태 및 수당 지급 상태 UI 추가
- SalesTenantManagement 모델에 본사 진행 상태 7단계 추가
  (대기, 검토, 기획안작성, 개발코드작성, 개발테스트, 개발완료, 통합테스트, 인계)
- 수당 지급 상태 3단계 추가 (대기, 지급대상, 지급완료)
- tenant-list.blade.php에 본사 진행 상태 스텝 인디케이터 추가
- 매니저 100% 완료 시 본사 진행 활성화
- 수당 지급 상태 배지 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:39:10 +09:00
pro
f29c056fe8 feat:음성 녹음/첨부파일 자동 저장 UX 개선
음성 녹음:
- 녹음 종료 시 자동 저장 (저장/취소 버튼 제거)
- 저장 중 오버레이 + 프로그레스바 표시
- 저장 완료 후 자동 초기화

첨부파일:
- 파일 선택 즉시 자동 업로드 (업로드 버튼 제거)
- 업로드 중 오버레이 + 프로그레스바 표시
- 최근 업로드 파일 목록 표시 (5개까지)
- 다중 파일 순차 업로드 및 전체 진행률 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:27:21 +09:00
pro
31698ed313 feat:음성 녹음, 첨부파일 컴포넌트에 접기/펼치기 기능 추가
- 음성 녹음: 헤더 클릭으로 접기/펼치기, 녹음 중 상태 배지 표시
- 첨부파일: 헤더 클릭으로 접기/펼치기, 대기 파일 개수 배지 표시
- 기본 접힌 상태로 화면 공간 효율화

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:12:08 +09:00
pro
a19ba94ad5 fix:상담 기록 영역 스크롤 문제 수정
- 우측 메인 영역에 min-h-0 추가 (flex 자식 스크롤 활성화)
- overflow-hidden 제거
- 하단 상담 기록 영역에 flex-shrink-0 추가 (축소 방지)
- 아코디언 콘텐츠 max-height: 50vh 인라인 스타일로 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:06:39 +09:00
pro
817be7a4e8 fix:시나리오 단계 이동 버튼이 표시되지 않는 문제 수정
- @include 시 $steps 변수가 전달되지 않아 다음 단계 버튼 미표시
- scenario-step.blade.php에 $steps 변수 명시적 전달 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:02:11 +09:00
pro
2224378b70 refactor:상담 기록 모듈을 모달 레벨로 이동하여 모든 단계에서 공유
- 기존: 각 단계별 독립적인 상담 기록 (step_id 기반)
- 변경: 모달 하단에 고정 배치, 모든 단계에서 동일한 상담 기록 공유
- 탭 전환 시에도 상담 기록 유지
- step_id 파라미터 제거로 통합 관리

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:58:38 +09:00
pro
c7d83514b6 feat:상담 기록 및 첨부파일 모듈을 모든 시나리오 단계에서 사용 가능하도록 수정
- 기존: 마지막 단계(계약 체결)에서만 상담 기록/첨부파일 표시
- 변경: 모든 단계에서 접기/펼치기 아코디언으로 공통 모듈 제공
- 단계별 독립적인 상담 기록 컨테이너 ID 사용
- HTMX revealed 트리거로 펼칠 때만 데이터 로드

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:54:56 +09:00
pro
a97edb78ba feat:시나리오 모달 닫을 때 진행률 자동 업데이트
- scenario-modal: close() 시 tenantId 포함한 이벤트 발생
- tenant-list: 이벤트 수신 시 API 호출하여 진행률 업데이트
- 진행률 영역에 ID 부여하여 DOM 직접 업데이트
- 새로고침 없이 실시간 반영

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:46:49 +09:00
pro
9588abb272 feat:테넌트 리스트에 영업/매니저 진행률 표시
- SalesScenarioChecklist: getSimpleProgress(), getTenantProgress() 메서드 추가
- tenant-list: 진행률 컬럼 추가 (영업/매니저 각각 프로그레스 바)
- 레이아웃 재조정: 버튼 compact화, 컬럼 비율 조정
- 오른쪽 빈 공간 활용하여 정보 밀도 향상

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:42:56 +09:00
pro
73a03ba59b feat:상담 기록 텍스트 스크롤 영역 개선
- 실시간 음성 인식: max-h-40 스크롤 영역 + 자동 하단 스크롤
- 음성 인식: 글자 수 표시
- 텍스트 상담 기록: max-h-32 스크롤 영역
- 음성 녹음 transcript: max-h-32 스크롤 영역
- 긴 텍스트(4시간 분량 등) 대응

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:39:19 +09:00
pro
9b62b82d38 fix:음성 인식 초반 텍스트 누락 문제 개선
- 확정된 결과를 인덱스별 배열로 관리하여 중복/덮어쓰기 방지
- 음성 인식 끊김 시 자동 재시작 (녹음 중일 때만)
- no-speech, aborted 에러 무시하고 계속 진행

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:07:04 +09:00
pro
9e39567604 fix:오디오/파일 다운로드 반환 타입 오류 수정
- downloadAudio: Response → BinaryFileResponse|RedirectResponse
- downloadFile: Response → BinaryFileResponse
- GCS 리다이렉트: response()->redirectTo() → redirect()->away()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:00:27 +09:00
pro
f81fd8e8c6 feat:상담 기록에 오디오 재생/다운로드 버튼 추가
- 음성 녹음: 재생 버튼 + 다운로드 버튼 추가
- 첨부파일: 다운로드 버튼 추가
- GCS 백업 여부 표시 (배지)
- 오디오 재생 시 다른 오디오 자동 정지

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:53:57 +09:00
pro
fa6e62eba2 docs:AI 및 스토리지 설정 기술문서 추가
- ai_configs 테이블 구조 설명
- 설정 우선순위 (DB → .env → 레거시)
- 관련 파일 목록 및 위치
- 주요 메서드 사용법
- 배포 가이드 및 트러블슈팅

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:42:03 +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
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
dd86d70503 feat:음성 녹음 GCS 업로드 및 다운로드 기능 추가
- 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>
2026-01-29 09:15:13 +09:00
pro
13418cd3ac fix:tenant-list Alpine.js 인라인 x-data로 변경
- HTMX 로드 시 script 태그 미실행 문제 해결
- tenantListManager 함수를 인라인 x-data로 이동
- toggle-detail 버튼에 @click 핸들러 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:02:33 +09:00
pro
c3afde94c9 fix:시나리오 모달 헤더 그라디에이션 제거
- 그라디에이션으로 우측 텍스트 가독성 저하 문제 해결
- 단색 배경으로 변경 (영업: blue-600, 매니저: green-600)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 08:57:02 +09:00
pro
bdf00f9c36 fix:체크리스트 토글 checkpoint_index NOT NULL 오류 수정
- 새 레코드 생성 시 checkpoint_index 기본값 0 설정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 08:53:55 +09:00
pro
5d15acebba fix:시나리오 모달 500 에러 및 무한 루프 수정
- 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>
2026-01-29 08:20:04 +09:00
pro
ae9aa4e91f fix:영업 시나리오 모달 Alpine.js 오류 수정
- @push('scripts') 대신 인라인 x-data로 변경 (HTMX 호환)
- x-collapse 플러그인 의존성 제거, x-transition 사용
- $parent 참조 대신 window 이벤트(CustomEvent) 사용
- 체크리스트 토글, 진행률 업데이트, 단계 이동 정상화

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 08:14:07 +09:00
pro
8c089e54a7 fix:영업파트너 등록 시 본사 관리자도 추천인으로 설정
- 기존: 본사 관리자 등록 시 parent_id = null
- 변경: 누가 등록하든 등록자가 추천인(parent_id)으로 설정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 08:09:28 +09:00
pro
9f6218bc07 refactor:영업담당자 → 영업파트너 용어 변경 및 드롭다운 로직 수정
- 전체 코드에서 '영업담당자' → '영업파트너'로 용어 통일
- 관리 드롭다운: 모든 HQ 사용자 → 내가 유치한 하위 영업파트너만 표시
- User.php children() 관계 활용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:57:30 +09:00
pro
92c4e15273 feat:계약 현황 페이지네이션 추가 (10건 단위)
- 최신 계약이 상단에 표시되도록 정렬
- 10건 초과 시 HTMX 페이지네이션 표시
- 현재 페이지 범위 및 총 건수 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:51:41 +09:00
pro
3ebae96a7f refactor:실적 데이터 섹션 제거, 내 계약 현황으로 통합
- 중복된 실적 데이터 없음 섹션 제거
- 테넌트 목록을 '내 계약 현황'으로 명칭 변경
- 빈 상태 메시지 개선 (가망고객 전환 안내)
- 총 계약 건수 표시 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:44:45 +09:00
pro
6780585f5d refactor:역할별 수당 상세를 모달로 전환
- 확정 수당 카드 클릭 시 모달로 상세 정보 표시
- 대시보드 화면 단순화 (역할별 수당 섹션 제거)
- Alpine.js 모달 트랜지션 효과 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:34:10 +09:00
pro
08d584a53a refactor:대시보드 중복 섹션 통합 (영업 현황 + 테넌트 관리)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:28:53 +09:00
pro
55994ab116 fix:Alpine.js CDN 추가
- 레이아웃에 Alpine.js가 로드되지 않아 x-data 디렉티브가 동작하지 않음
- Alpine.js 3.x CDN 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:23:56 +09:00
pro
92055a6187 fix:매니저 드롭다운을 인라인 Alpine.js로 완전 재작성
- 별도 스크립트 함수 대신 x-data 인라인 정의
- @click.away를 @click.outside로 수정 (올바른 Alpine 문법)
- 스크립트 로드 순서 문제 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:21:01 +09:00
pro
0f38aff96b fix:매니저 드롭다운 버튼 동작 수정
- 버튼에 type="button" 추가 (폼 제출 방지)
- 스크립트를 @push('scripts')로 이동 (중복 정의 방지)
- 디버깅 로그 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:15:14 +09:00
pro
995c0e11b5 fix:매니저 드롭다운 x-cloak 추가로 초기 깜빡임 방지
- Alpine.js 로드 전 드롭다운이 잠시 보이는 FOUC 문제 수정
- x-cloak 디렉티브와 CSS 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:11:54 +09:00
pro
0a0afe1df0 fix:매니저 드롭다운 API 호출 제거, 서버사이드 렌더링으로 변경
- 기존: 드롭다운 열 때 API 호출 → 로딩 스피너 문제
- 변경: 컨트롤러에서 allManagers 전달 → 즉시 렌더링
- 로딩 상태 제거로 UX 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:05:45 +09:00
pro
f1f9ff4148 fix:매니저 드롭다운 API 엔드포인트 수정
- 기존: /api/admin/users?tenant_type=HQ (미지원 파라미터)
- 변경: /sales/managers/list (전용 엔드포인트)
- 라우트 추가: sales.managers.list

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:01:14 +09:00
60ab03601f fix:동기화 페이지 CSRF 및 인증 문제 수정
- CSRF 예외에 common-code-sync/*, category-sync/* 추가
- fetch 요청에 credentials: 'same-origin' 추가
- 메뉴 동기화 시 menu_id 파싱 방식 수정 (value → dataset.menuId)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 06:57:42 +09:00
pro
b4163d6ffd fix:영업관리 대시보드에 가망고객 전환 테넌트만 표시
- 기존: 로그인 사용자의 모든 테넌트 표시 (HQ 제외)
- 변경: 가망고객(tenant_prospects)에서 전환된 테넌트만 표시
- TenantProspect.STATUS_CONVERTED 상태의 tenant_id만 조회

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 06:47:37 +09:00
pro
329c58e63b refactor:영업관리 데이터를 DB 테이블로 변경
- 모델 추가: SalesPartner, SalesTenantManagement, SalesScenarioChecklist, SalesConsultation
- 모델 위치 이동: app/Models/ → app/Models/Sales/
- 컨트롤러 수정: 캐시 대신 DB 모델 사용
- 뷰 수정: Eloquent 모델 속성 사용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 06:42:32 +09:00
6d708cfdda feat: 수입검사 성적서 템플릿 시더 및 미리보기 구현
- InspectionTemplateSeeder: 검사항목 4개(겉모양, 두께, 폭, 길이) 생성
- 템플릿 미리보기를 React 성적서 양식과 동일한 형태로 구현
  - 헤더: 로고, 제목, 결재란
  - 기본정보 테이블 (목업 데이터)
  - 검사항목 테이블: NO, 검사항목, 검사기준, 검사방식, 검사주기, 측정값(n1,n2,n3), 판정
  - 종합판정 영역
- 문서 목록/상세/편집 뷰 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:06:53 +09:00
1e70d2edbf feat:동기화 페이지에 글로벌/테넌트 필터 추가
- 환경 탭 앞에 글로벌/테넌트 토글 버튼 추가
- 글로벌: tenant_id가 NULL인 코드/카테고리만 표시
- 테넌트: 현재 선택된 테넌트의 데이터만 표시
- Push/Pull API에 type 파라미터 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:06:33 +09:00
50f9fa2fd3 fix:동기화 페이지에 관리 페이지 이동 버튼 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 00:40:56 +09:00
8b7f0b9f7f feat:공통코드/카테고리 동기화 기능 추가
- CommonCodeSyncController, CategorySyncController 생성
- 환경설정은 메뉴 동기화와 공유 (TenantSetting)
- Export/Import API 추가 (/common-code-sync, /category-sync)
- Push(로컬→원격), Pull(원격→로컬) 양방향 동기화
- 동일 코드 존재 시 체크박스 비활성화 (충돌 방지)
- 글로벌 + 테넌트 코드 모두 동기화 가능
- 공통코드/카테고리 관리 페이지에 동기화 버튼 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 00:31:51 +09:00
1d9473d7d0 refactor:카테고리/공통코드 탭 레이아웃 세로형으로 변경
- 가로 탭 → 좌측 세로 탭(사이드바 스타일)으로 변경
- 코드 그룹이 많아져도 세로 스크롤로 확인 가능
- 우측 글로벌/테넌트 2컬럼 그리드 유지

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:07:15 +09:00