Commit Graph

540 Commits

Author SHA1 Message Date
김보곤
2dea60de23 feat:계약 대시보드 선택 삭제 기능 추가
- EsignApiController에 destroy 메서드 추가 (복수 삭제 지원)
- 관련 파일(PDF, 서명이미지) 및 레코드(서명자, 필드, 감사로그) 일괄 삭제
- 서명 진행 중(pending, partially_signed) 계약은 삭제 차단
- DELETE /esign/contracts/destroy 라우트 추가
- 대시보드에 체크박스 전체/개별 선택 + 삭제 버튼 UI 추가
- 삭제 전 confirm 확인 다이얼로그

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
8f7a441900 feat:서명 완료 시 계약서 이메일 발송 및 감사 로그 추가
- EsignCompletedMail Mailable 생성 (완료 알림 + PDF 다운로드 링크)
- completed.blade.php 이메일 뷰 템플릿 생성 (초록색 테마)
- submitSignature에 contract_completed 감사 로그 추가
- 모든 서명자에게 완료 이메일 발송 + completion_email_sent 감사 로그
- 이메일 발송 실패 시 try-catch로 계약 완료 보호

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
f050be52fe feat:E-Sign 템플릿에 PDF 파일 포함 기능 추가
- 모델: EsignFieldTemplate fillable에 file 컬럼 추가
- storeTemplate: include_pdf + contract_id로 계약 PDF를 템플릿으로 복사
- store(계약 생성): template_id로 템플릿 PDF 자동 복사 (사용자 업로드 우선)
- duplicateTemplate: 복제 시 PDF 파일도 복사
- 템플릿 PDF 다운로드 엔드포인트 추가
- SaveTemplateModal: "현재 PDF 파일 포함" 체크박스 추가
- create: 템플릿 카드에 PDF 뱃지, PDF 자동 사용 안내
- templates: 템플릿 카드에 PDF 파일명 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
1ed2b3d91a fix:메뉴 동기화 동명 메뉴 중복 import 및 자기참조 방지
- filterMenusByName에서 children 제거하여 동명 메뉴 중복 import 방지
- importMenu에서 name+parent_id로 매칭하여 다른 계층 동명 메뉴 자기참조 방지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 03:41:19 +09:00
555a502d0c refactor:문서양식 섹션/컬럼 저장 시 ID 보존 upsert 방식 적용
- sections, columns는 삭제→재생성 대신 ID 보존 upsert로 변경
- document_data.section_id, column_id FK 참조 깨짐 방지
- 요청에 없는 섹션/컬럼/항목만 선택적 삭제

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 03:41:13 +09:00
0f5c509bed feat:문서관리 필터 기능 개선 - 양식분류 필터 추가, onchange 즉시 검색
- 상태/템플릿 필터에 onchange 즉시 검색 적용
- 양식분류(category) 필터 추가 (API + 뷰 컨트롤러 + 프론트)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 03:38:30 +09:00
김보곤
9b119fa7c9 fix:템플릿 선택 시 PDF 파일 필수 해제 및 후속 업로드 지원
- create: 템플릿 선택 시 PDF required 제거, 안내 메시지 표시
- fields: PDF 없는 계약 시 업로드 UI 표시
- API: uploadPdf 엔드포인트 추가 (POST /{id}/upload-pdf)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 20:05:28 +09:00
김보곤
fd5d052cb7 feat:PDF 서명 오버레이 합성 기능 구현
- PdfSignatureService 신규 생성 (FPDI+TCPDF 기반 PDF 합성)
- submitSignature에서 모든 서명 완료 시 자동 PDF 합성 호출
- downloadDocument에서 서명 완료 PDF 우선 제공
- setasign/fpdi, tecnickcom/tcpdf 패키지 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:42:08 +09:00
김보곤
ec43fe1991 feat:E-Sign 템플릿 관리 시스템 Phase 2 구현
- 템플릿 관리 전용 페이지 (카드 그리드, 검색/필터, 편집/복제/삭제)
- API: showTemplate, updateTemplate, duplicateTemplate 추가
- indexTemplates에 category/search 필터 추가
- 계약 생성 시 템플릿 선택 UI 추가
- 필드 에디터에서 URL 파라미터 template_id 자동 적용
- EsignFieldTemplate 모델에 category 필드 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:55:06 +09:00
김보곤
79c23f3337 feat:E-Sign 필드 템플릿 저장/불러오기 및 계약 간 복사 기능
- EsignFieldTemplate, EsignFieldTemplateItem 모델 추가
- EsignApiController에 템플릿 CRUD + 적용/복사 메서드 5개 추가
- web.php에 템플릿 라우트 5개 추가
- fields.blade.php에 템플릿 드롭다운 메뉴 + 모달 3개 추가
  (SaveTemplate, LoadTemplate, CopyFromContract)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:02:31 +09:00
김보곤
4f25e0e4a1 fix:서명 완료 후 다음 서명자 자동 알림 발송 추가
- submitSignature: 첫 번째 서명자 완료 시 다음 서명자에게 자동 이메일 발송
- send: sign_order_type이 parallel이면 모든 서명자에게 동시 발송

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:46:57 +09:00
김보곤
df237140a3 fix:E-Sign 서명 페이지 Blade/JSX 충돌 수정 및 내부 API 전환
- sign.blade.php: style={{}} → STYLES 상수로 Blade {{ }} 파싱 충돌 해결
- sign.blade.php, done.blade.php: 외부 API 호출 → MNG 내부 엔드포인트로 변경
- EsignPublicController: submitSignature, rejectContract, downloadDocument 추가
- routes/web.php: submit, reject, document API 라우트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:38:21 +09:00
김보곤
45e6afb862 feat:E-Sign 서명 인증을 MNG 자체 API로 전환
기존: 브라우저 → 외부 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>
2026-02-12 16:26:28 +09:00
김보곤
9094a82f0a feat:E-Sign 서명 요청/리마인더 메일 발송 구현
- EsignRequestMail Mailable 클래스 추가 (리마인더 구분 지원)
- 이메일 HTML 템플릿 추가 (서명하기 버튼 + 계약 정보)
- send()에서 첫 번째 서명자에게 메일 발송
- remind()에서 다음 서명 대상자에게 리마인더 메일 발송

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:15:53 +09:00
김보곤
837fe42663 feat:E-Sign 리마인더 발송 라우트 및 컨트롤러 추가
detail.blade.php에서 호출하는 remind 엔드포인트가 누락되어 있었음.
POST /esign/contracts/{id}/remind 라우트 추가,
EsignApiController::remind() 메서드 구현 (상태 변경 + 감사 로그).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:10:16 +09:00
김보곤
4ff7bab2bb fix:EsignSignField 생성 시 tenant_id 누락 수정
configureFields()에서 서명 필드 생성 시 tenant_id 추가,
모델 $fillable에도 tenant_id 추가.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:04:56 +09:00
김보곤
376e1bf57e fix:EsignAuditLog 생성 시 tenant_id 누락 수정
모델 $fillable에 tenant_id 추가, 컨트롤러의 감사 로그 생성 3곳
(contract_created, contract_cancelled, sign_request_sent) 모두
tenant_id를 포함하도록 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 15:56:41 +09:00
1969001338 feat(MNG):문서 양식 편집 개선 및 이미지 업로드 API 연동
- DocumentTemplateApiController: 이미지 업로드 API 파일저장소 연동
- 양식 편집: 미리보기 모달 개선
- 문서 편집: UI 개선
- 빌드 에셋 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:30:16 +09:00
791bb37a1d fix:문서 show/print 기본정보·종합판정·이미지 표시 수정
- 기본정보(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/...)
2026-02-12 14:30:16 +09:00
김보곤
e0e6c71701 feat:전자계약 문서 페이지 추가 (8개 탭 기반 기술 문서)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 13:23:56 +09:00
김보곤
279a15bf0d refactor:E-Sign 외부 API 호출을 MNG 내부 라우트로 전환
- 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>
2026-02-12 10:24:09 +09:00
김보곤
3281788536 feat:E-Sign 전자계약 서명 솔루션 MNG 프론트엔드 구현
- 컨트롤러 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>
2026-02-12 07:02:48 +09:00
김보곤
9d314a62fa feat:공사현장 사진대지 멀티행(N행) 사진 지원
- ConstructionSitePhotoRow 모델 추가
- 부모 모델에서 사진 컬럼 제거, rows() 관계 추가
- 서비스/컨트롤러에 행 추가/삭제 기능 추가
- 라우트를 행 기반 URL 구조로 변경
- 프론트엔드 멀티행 UI 전면 개편

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:04:09 +09:00
bc6bba0ab1 Merge remote-tracking branch 'origin/develop' into develop 2026-02-11 16:03:32 +09:00
0e2de0002a feat(MNG): 채번 규칙 관리 기능 추가
- NumberingRule 모델, 서비스, 컨트롤러 추가
- API/Blade 라우트 등록
- CRUD + 미리보기 기능

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:00:08 +09:00
김보곤
69ede238c6 fix:에러 토큰 전체삭제 영구삭제로 변경 (SoftDeletes bypass)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:43:07 +09:00
김보곤
0a39e7d744 feat:FCM 에러 토큰 전체삭제 버튼 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:39:26 +09:00
2c8ee14ad6 Merge remote-tracking branch 'origin/develop' into develop 2026-02-11 15:10:23 +09:00
f74288e5e5 feat:문서 템플릿 기본필드 field_key 연동키 드롭다운 추가
- 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>
2026-02-11 14:24:25 +09:00
김보곤
5de8fcfc7e fix:전표 저장 에러 처리 개선 (Accept 헤더, 중복 전표번호 재시도) 2026-02-11 14:17:22 +09:00
김보곤
d2c1ce7815 fix:일반전표 은행거래 잔액 running balance 방식으로 수정 2026-02-11 13:14:25 +09:00
김보곤
83e79cf30d fix:일반전표 은행거래 잔액 오류 수정 (API 레코드 우선 선택)
동일 거래가 수동(is_manual=true)과 API(is_manual=false)로 중복 저장된 경우
MAX(id)로 최신 레코드를 선택하면 잔액이 0에서 계산된 수동 레코드가
선택되어 잔액이 잘못 표시되는 문제 수정.
API 레코드의 balance가 바로빌에서 제공한 정확한 은행 잔액이므로 우선 선택.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 13:08:15 +09:00
김보곤
69ade17900 fix:예정 세액 계산 시 vat_records tax_type 컬럼 미존재 오류 수정
vat_records 테이블에 tax_type 컬럼이 없어 DB 쿼리 실패.
index 메서드와 동일하게 인메모리 컬렉션 필터링으로 변경.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 12:45:41 +09:00
김보곤
efb0c23aef fix:예정 세액 계산 실패 시 상세 에러 로깅 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 12:38:47 +09:00
김보곤
3241eee0de fix:부가세 예정 세액 계산 실패 시 방어 처리 (try-catch)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 11:35:39 +09:00
김보곤
bc43479d00 feat:부가세 확정 신고 시 예정 세액 차감 반영
- 확정(C) 기간 조회 시 대응하는 예정(P) 기간의 netVat 자동 계산
- 예정 환급세액 → "예정신고 미환급세액"으로 차감 표시
- 예정 납부세액 → "예정신고 기납부세액"으로 차감 표시
- 최종 납부세액 = 확정 산출세액 - 예정 차감액
- 상단 요약 카드에도 최종 세액 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 11:21:42 +09:00
007abbfc44 Merge remote-tracking branch 'origin/develop' into develop 2026-02-11 11:03:59 +09:00
김보곤
02685371f9 fix:카드사용내역 엑셀 다운로드 개선
- 카드번호 문자형 출력 (="번호" 형식으로 과학적 표기 방지)
- 사업자번호, 가맹점명 열 추가
- 합계금액/공급가액/세액 3열로 분리 (화면과 동일)
- 분개 행도 공급가액/세액 분리 출력

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:55:20 +09:00
김보곤
5cb92c0fd7 fix:카드별 사용금액 프로그래스바 바로빌 실거래 데이터 반영
- summary API에 cardUsages(카드번호별 사용금액) 응답 추가
- 카드 목록 프로그래스바가 바로빌 거래 합산 기준으로 표시
- 체크카드도 사용금액 있으면 금액 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:31:06 +09:00
김보곤
d78d431350 feat:법인카드 요약카드 개선 (결제일/사용금액/선불결제)
- 요약카드 4개→6개 확장 (등록카드, 총한도, 매월결제일, 사용금액, 선불결제, 잔여한도)
- 매월결제일: 휴일/주말 시 다음 영업일로 자동 조정 표시
- 사용금액: barobill_card_transactions 기반 청구기간 실거래 합산
- 선불결제: 수정 모달로 테넌트 단위 월별 금액 관리
- 잔여한도: (총한도 - 사용금액 + 선불결제) 계산

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:24:39 +09:00
김보곤
c9ed5f27a4 feat:일반전표입력 수동 전표 생성 기능 추가
은행거래 기반 분개 외에 수동으로 전표를 작성할 수 있는 탭/모달 추가
- 탭 시스템: 은행거래 분개 / 수동전표 탭 전환
- ManualJournalTab: 전표 목록 조회, 필터링, 통계 카드
- ManualJournalModal: 날짜/적요 입력, 분개라인 편집, 대차균형 검증
- 컨트롤러 index() 응답에 source_type 필드 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 09:50:36 +09:00
김보곤
8e135672a1 feat:일반전표입력에 계정과목 설정 기능 이관
계좌입출금내역에서 제거된 계정과목 설정 기능을 일반전표입력 페이지로 이관
- JournalEntryController에 계정과목 CRUD 메서드 추가
- 계정과목 CRUD 라우트 추가 (journal-entries/account-codes/*)
- AccountCodeSettingsModal 컴포넌트 추가
- 페이지 헤더에 계정과목 설정 버튼 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 09:33:33 +09:00
6f70f1df1b Merge remote-tracking branch 'origin/develop' into develop 2026-02-11 08:51:11 +09:00
김보곤
2609437063 fix:바로빌 거래 저장 시 잔액 차이 중복 방지 및 기존 중복 자동 정리 2026-02-10 21:45:30 +09:00
김보곤
1f73c9a6e9 fix:일반전표 은행거래 목록 잔액 차이로 인한 중복 표시 제거 2026-02-10 21:43:01 +09:00
김보곤
4c09f2536e feat:달력 일정에 첨부파일 아이콘 표시 2026-02-10 21:11:11 +09:00
김보곤
26c3f2ca4d feat:유형에 면접 추가 + 커스텀 유형 동적 추가 기능
- Schedule 모델에 TYPE_INTERVIEW(면접) 추가 (보라색)
- 유형 select 옆에 [+] 버튼 → 커스텀 유형 직접 입력 가능
- 컨트롤러 validation을 string|max:50으로 변경 (동적 유형 허용)
- 달력 뱃지 색상을 인라인 스타일로 변경 (Tailwind JIT 미빌드 대응)
- 수정 모달에서 커스텀 유형도 select에 자동 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:50:26 +09:00
김보곤
489a491415 feat:일정 첨부파일 기능 추가 (다중 업로드, 드래그앤드롭, GCS)
- 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>
2026-02-10 20:36:22 +09:00
김보곤
0281e4a8aa feat:대시보드 일정관리 달력 추가
- Schedule 모델 생성 (schedules 테이블, type별 색상 상수)
- DashboardCalendarController 생성 (CRUD + 달력 partial)
- 대시보드 뷰에 월간 달력 섹션 추가 (HTMX + Vanilla JS)
- 일정 생성/수정/삭제 모달 구현
- 공휴일 빨간색 표시, 일정 유형별 색상 뱃지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:11:36 +09:00
김보곤
9f81c759e5 refactor:은행거래 조회를 바로빌 API → DB 직접 조회로 변경
- bankTransactions()를 barobill_bank_transactions 테이블 직접 조회로 변경
- EaccountController 의존성 제거
- 계좌 목록을 DB distinct 조회로 제공 (별도 API 불필요)
- 프론트엔드 계좌 드롭다운 필드명 수정 (camelCase → snake_case)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 19:41:40 +09:00