- 고객관리 테이블: 1차수당/2차수당/매니저수당/협업지원금/등록일 열 제거, 계약일 열 추가 (16열→12열)
- 정산관리 수당정산 테이블: 수당지급일/매니저지급일/협업지원금 인라인 편집 컬럼 추가
- SalesCommissionController에 updateCommissionDate 메서드 추가
- 불필요한 JS 함수 제거 (saveReferrerCommission, checkHandoverStatus)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
기존에는 management당 하나의 커미션 레코드만 생성되어 수당리스트에 계약금만 표시됨.
이제 1차 필드(first_*)는 deposit 레코드, 2차 필드(second_*)는 balance 레코드로
분리하여 양쪽 모두 수당리스트에 나타남.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 상수: DEFAULT_MANAGER_RATE 제거, 유치수당률 개인5%/단체3% 분리
- createCommission: 파트너 resolve fallback 추가, 매니저수당=구독료1개월
- approve/bulkApprove: 금액 0원 기존 레코드 승인 시 자동 재계산
- recalculateCommission: 신규 메서드 추가 (partner_id/금액 정상화)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 담당파트너: salesPartner→user → tenantProspect→registeredBy fallback 추가
- 개발비/계약금/잔금: contractProducts 기반 계산 fallback 추가
- 구독료: contractProducts fallback 추가
- eager loading에 tenantProspect.registeredBy.salesPartner, contractProducts 추가
- 파트너 필터에 tenantProspect.registeredBy 경로 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 매니저수당: 기준액 비율(5%) → 구독료 1개월(subscription_fee)로 변경
- 유치파트너수당: 개인일 때 상위파트너 5%, 단체일 때 유치 3%
- 파트너수당: 개인 20%, 단체 30% (기존 유지)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 영업파트너: tenantProspect→registeredBy(가망고객 등록자) 경로 추가
- 유치파트너: registeredBy→salesPartner→referrer 경로 추가
- eager loading에 management.tenantProspect.registeredBy.salesPartner.referrer.user 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- partner→user 없을 시 management→salesPartner→user → management→manager 순으로 fallback
- eager loading에 management.salesPartner.user, management.manager 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- eager loading에 management.tenant, management.tenantProspect 추가
- 검색 필터를 management 기반 고객사명 검색으로 변경
- 테넌트 컬럼을 management→tenant/tenantProspect 기반으로 표시
- 본사 진행상태(hq_status) 배지 추가
- 입금액 0원일 때 '-' 표시로 개선
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- select * → 목록에 필요한 컬럼만 select (JSON 대용량 컬럼 제외)
- old_values, new_values, session_info 등 정렬 버퍼 과다 사용 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
management.sales_partner_id가 미설정된 경우
registered_by(User ID)로 SalesPartner를 조회하여 partner_type 결정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 개인 파트너: 협업지원금 금액 수정 가능한 number input 추가
- 단체 파트너: "-" 표시 (자동계산 3% 고정, 수동 수정 불가)
- AdminProspectController에 updateReferrerCommission 메서드 추가
- firstOrCreate에 referrer_rate, referrer_commission 필드 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
?tab=payment 등 URL 파라미터로 직접 접속 시 로딩 스피너가
무한 표시되는 문제 수정. DOMContentLoaded에서 초기 탭의
HTMX 콘텐츠를 자동 로드하도록 변경.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- operation 상세 페이지 및 일괄 롤백 실행 기능 추가
- TriggerAuditLog에 scopeForOperation 스코프 추가
- 트리거 INSERT/UPDATE/DELETE에 operation_id 컬럼 포함
- 감사로그 목록에 작업 단위 링크 컬럼 추가
- 라우트: operation/{id}, batch-rollback 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 정산관리에 수당 지급 탭 추가 (파트너별 그룹핑 지급 대기 목록)
- 파트너별 상세 건 목록 HTMX 확장 기능
- 수당지급현황통계 페이지 (Chart.js 4개 차트 + 월별 요약 테이블)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 기존: balance 제외 4컬럼 매칭 → 같은 시간/금액의 다른 거래가 중복으로 처리됨
- 수정: balance 포함 5컬럼 매칭 → DB unique 제약조건과 동일하게 정확히 식별
- update 시 balance 제외 (매칭 조건이므로 변경 불필요)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SettlementController 신규 생성 (통합 정산관리 메인 + 탭별 HTMX)
- 5개 탭: 수당정산, 파트너별현황(NEW), 컨설팅비용, 고객사정산, 구독관리
- 수당정산 탭: 기존 영업수수료정산 이관 + 유치수당 컬럼/수당유형 필터 추가
- 파트너별 현황 탭: SalesPartner 수당 집계 + 필터/페이지네이션
- 컨설팅/고객사/구독 탭: React → Blade+Alpine.js 전환 (기존 API 재사용)
- 통합 통계카드 (미지급수당/승인대기/이번달예정/누적지급)
- 기존 4개 URL → 통합 페이지 리다이렉트
- SalesPartner 모델에 commissions 관계 추가
- SalesCommissionService에 commission_type 필터 + referrerPartner eager load 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
기존: 개발비 × 50% × 요율로 미리 반감 후 또 50% 분할 → 이중 반감 오류
수정: 개발비 × 요율(개인 20%, 단체 30%)로 계산, 1차/2차 분할은 별도 처리
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- User 모델에 isGroupPartner() 헬퍼 추가
- 대시보드에서 단체 파트너는 판매자 카드만 표시 (관리자/협업지원금 카드 제외)
- 유치 파트너 현황 탭 단체 파트너에게 숨김
- 파트너 등록 create/store 접근 차단 (403)
- 파트너 목록에서 등록 버튼 숨김
- SidebarMenuService에 hide_for_group_partner 옵션 기반 메뉴 필터링 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SalesPartner::isGroup()이 partner_type 기반으로 판별하도록 수정
- 대시보드 수수료율 표시: 개인 20%, 단체 30% 동적 반영
- 인수 수수료 계산: 개인 10%, 단체 15% 동적 반영
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 승인 전(pending): 라디오 버튼으로 개인/단체 변경 가능
- 승인 후(approved): 읽기 전용 뱃지로 표시
- 유형 변경 시 수당률 자동 설정 (단체 30%, 개인 초기화)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 빈 결과를 30분간 캐시하는 문제 수정 (성공 결과만 캐시)
- 건강 키워드가 없을 때 리프레이밍 폴백 추가 (트렌드를 건강 관점으로 재해석)
- 최종 폴백: 원본 인기 키워드 표시
- 프론트엔드 에러/안내 메시지 분리 (오류 vs 건강 키워드 없음)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ScreenAnalysisService: Gemini 프롬프트에 UI 타입별 최소 크기 가이드라인 추가
- ScreenAnalysisService: normalizeCoordinates에 타입별 최소크기 보정 + 1.5% 패딩
- SlideAnnotationService: STEP 배지 1/2 축소 (300x76→150x38)
- SlideAnnotationService: 이중 테두리 (안쪽 흰색 + 바깥 빨간색) 적용
- SlideAnnotationService: 번호 마커 위치를 테두리 바깥으로 이동
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TutorialVideoJob: 자막 생성 제거, subtitlePath에 null 전달
- TutorialAssemblyService: subtitlePath 파라미터 nullable 변경
- VideoAssemblyService: subtitlePath nullable + null일 때 ass 필터 생략
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>