기존: 브라우저 → 외부 API 서버(api.codebridge-x.com) 호출
변경: 브라우저 → MNG 자체 엔드포인트(/esign/sign/{token}/api/*) 호출
- EsignPublicController에 getContract/sendOtp/verifyOtp API 추가
- auth.blade.php에서 외부 API 호출을 MNG 자체 API로 변경
- EsignOtpMail Mailable + 이메일 템플릿 추가
- CSRF 예외에 esign/sign/*/api/* 추가
- 로컬/서버 환경 모두에서 동작
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- EsignRequestMail Mailable 클래스 추가 (리마인더 구분 지원)
- 이메일 HTML 템플릿 추가 (서명하기 버튼 + 계약 정보)
- send()에서 첫 번째 서명자에게 메일 발송
- remind()에서 다음 서명 대상자에게 리마인더 메일 발송
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
모델 $fillable에 tenant_id 추가, 컨트롤러의 감사 로그 생성 3곳
(contract_created, contract_cancelled, sign_request_sent) 모두
tenant_id를 포함하도록 수정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DocumentTemplateApiController: 이미지 업로드 API 파일저장소 연동
- 양식 편집: 미리보기 모달 개선
- 문서 편집: UI 개선
- 빌드 에셋 업데이트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 기본정보(bf_) 자동 backfill: show/print/edit 진입 시 bf_ 레코드 없으면 작업지시서 원본에서 resolve 후 저장
- 중간검사 DATA row 수를 section items → workOrderItems 기준으로 변경
- 종합판정: overall_result 없을 때 row_judgment에서 합격/불합격 자동 계산 fallback
- 섹션 이미지: asset() → API 스토리지 URL 변환 (api.sam.kr/storage/tenants/...)
- Finance 패턴과 동일하게 MNG 직접 DB 접근 방식으로 변경
- MNG 모델 4개 추가: EsignContract, EsignSigner, EsignSignField, EsignAuditLog
- EsignApiController 추가: stats, index, show, store, cancel, configureFields, send, download
- 모든 뷰(dashboard, create, detail, fields, send)에서 외부 API URL 제거
- 기존 X-API-Key/Bearer 인증 대신 MNG 세션 인증(CSRF) 사용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 컨트롤러 2개 (EsignController, EsignPublicController)
- 뷰 8개 (dashboard, create, detail, fields, send, sign/auth, sign/sign, sign/done)
- React 하이브리드 방식 (기존 Finance 패턴)
- 라우트 추가 (인증 esign/* + 공개 esign/sign/*)
- PDF.js 기반 서명 위치 설정
- signature_pad 기반 전자서명 입력
- OTP 본인인증 플로우
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ConstructionSitePhotoRow 모델 추가
- 부모 모델에서 사진 컬럼 제거, rows() 관계 추가
- 서비스/컨트롤러에 행 추가/삭제 기능 추가
- 라우트를 행 기반 URL 구조로 변경
- 프론트엔드 멀티행 UI 전면 개편
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DocumentTemplateController: common_codes(doc_template_basic_field) 조회하여 뷰에 전달
- prepareTemplateData: basic_fields에 field_key 포함
- DocumentTemplateApiController: basic_fields 저장 시 field_key 포함
- edit.blade.php: 기본필드 행에 '연동키 선택' 드롭다운 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
동일 거래가 수동(is_manual=true)과 API(is_manual=false)로 중복 저장된 경우
MAX(id)로 최신 레코드를 선택하면 잔액이 0에서 계산된 수동 레코드가
선택되어 잔액이 잘못 표시되는 문제 수정.
API 레코드의 balance가 바로빌에서 제공한 정확한 은행 잔액이므로 우선 선택.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 확정(C) 기간 조회 시 대응하는 예정(P) 기간의 netVat 자동 계산
- 예정 환급세액 → "예정신고 미환급세액"으로 차감 표시
- 예정 납부세액 → "예정신고 기납부세액"으로 차감 표시
- 최종 납부세액 = 확정 산출세액 - 예정 차감액
- 상단 요약 카드에도 최종 세액 반영
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 카드번호 문자형 출력 (="번호" 형식으로 과학적 표기 방지)
- 사업자번호, 가맹점명 열 추가
- 합계금액/공급가액/세액 3열로 분리 (화면과 동일)
- 분개 행도 공급가액/세액 분리 출력
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- summary API에 cardUsages(카드번호별 사용금액) 응답 추가
- 카드 목록 프로그래스바가 바로빌 거래 합산 기준으로 표시
- 체크카드도 사용금액 있으면 금액 표시
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 요약카드 4개→6개 확장 (등록카드, 총한도, 매월결제일, 사용금액, 선불결제, 잔여한도)
- 매월결제일: 휴일/주말 시 다음 영업일로 자동 조정 표시
- 사용금액: barobill_card_transactions 기반 청구기간 실거래 합산
- 선불결제: 수정 모달로 테넌트 단위 월별 금액 관리
- 잔여한도: (총한도 - 사용금액 + 선불결제) 계산
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
은행거래 기반 분개 외에 수동으로 전표를 작성할 수 있는 탭/모달 추가
- 탭 시스템: 은행거래 분개 / 수동전표 탭 전환
- ManualJournalTab: 전표 목록 조회, 필터링, 통계 카드
- ManualJournalModal: 날짜/적요 입력, 분개라인 편집, 대차균형 검증
- 컨트롤러 index() 응답에 source_type 필드 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
계좌입출금내역에서 제거된 계정과목 설정 기능을 일반전표입력 페이지로 이관
- JournalEntryController에 계정과목 CRUD 메서드 추가
- 계정과목 CRUD 라우트 추가 (journal-entries/account-codes/*)
- AccountCodeSettingsModal 컴포넌트 추가
- 페이지 헤더에 계정과목 설정 버튼 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Schedule 모델에 TYPE_INTERVIEW(면접) 추가 (보라색)
- 유형 select 옆에 [+] 버튼 → 커스텀 유형 직접 입력 가능
- 컨트롤러 validation을 string|max:50으로 변경 (동적 유형 허용)
- 달력 뱃지 색상을 인라인 스타일로 변경 (Tailwind JIT 미빌드 대응)
- 수정 모달에서 커스텀 유형도 select에 자동 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DashboardCalendarController에 uploadFiles/deleteFile/downloadFile 추가
- 파일 업로드 라우트 3개 추가 (POST/DELETE/GET)
- 모달에 드래그앤드롭 파일 업로드 영역 추가
- XHR 진행률 표시, 파일 목록 렌더링, 개별 삭제
- Google Cloud Storage 연동 (가용시 자동 업로드)
- files 테이블 document_type='schedule' 활용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Schedule 모델 생성 (schedules 테이블, type별 색상 상수)
- DashboardCalendarController 생성 (CRUD + 달력 partial)
- 대시보드 뷰에 월간 달력 섹션 추가 (HTMX + Vanilla JS)
- 일정 생성/수정/삭제 모달 구현
- 공휴일 빨간색 표시, 일정 유형별 색상 뱃지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- bankTransactions()를 barobill_bank_transactions 테이블 직접 조회로 변경
- EaccountController 의존성 제거
- 계좌 목록을 DB distinct 조회로 제공 (별도 API 불필요)
- 프론트엔드 계좌 드롭다운 필드명 수정 (camelCase → snake_case)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DocumentTemplateController::index()에 HX-Request 체크 및 HX-Redirect 응답 추가
- 사이드메뉴 HTMX 클릭 시 @push('scripts') 미실행 문제 해결
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 프론트엔드: 전표목록 테이블에서 상태 컬럼/필터/통계 제거
- 프론트엔드: 임시저장/확정 stat cards를 차변합계/대변합계로 교체
- 백엔드: store(), storeFromBank() 기본 status를 draft→confirmed 변경
- 백엔드: index() 통계에서 draftCount/confirmedCount 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 3탭 구조로 전면 재작성 (은행거래분개, 수동전표, 전표목록)
- JournalEntryController에 bankTransactions, storeFromBank, bankJournals, deleteBankJournal API 추가
- JournalEntry 모델에 source_type, source_key fillable 및 헬퍼 메서드 추가
- 은행거래 목록에서 분개 모달로 복식부기 전표 생성
- 입금/출금에 따라 보통예금(103) 자동 세팅
- 분개 완료/미분개 상태 표시 및 필터링
- 기존 수동전표, 전표목록 기능 그대로 유지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래의 balance는 화면에서 재계산된 값이므로 DB 원본값과 다름.
save()에서 처리하면 잘못된 레코드 매칭 또는 unique key 충돌 발생.
수동 거래는 updateManual()에서만 처리하도록 스킵.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래의 balance는 화면에서 재계산(recalcManualBalances)되어 표시되므로
DB의 원본값과 다름. 프론트에서 재계산된 balance를 보내면 다른 레코드와
unique key 충돌 발생. 수정 시 적요/예금주명 등 비-키 필드만 업데이트.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래 수정 시 Eloquent가 deposit/withdraw/balance를
dirty로 오감지 (DB "515900.00" vs validation 515900 비교).
DB::table()로 변경하여 지정 필드만 정확히 업데이트.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>