Commit Graph

73 Commits

Author SHA1 Message Date
김보곤
7849c63507 fix:발송 방식 선택 UI 개선 - 이메일/알림톡 선택 가능, 이메일 기본값, 리마인더 발송 방식 모달 추가 2026-02-19 23:55:28 +09:00
김보곤
3724bc4475 fix:알림톡 미설정 시 에러 방지 - 기본 발송을 이메일로 변경, 알림톡 실패 시 이메일 자동 폴백 2026-02-19 23:50:37 +09:00
김보곤
6cf440f349 fix:고객 검색을 TenantProspect(명함 등록 고객)에서 조회하도록 수정
- Tenant 대신 TenantProspect(tenant_prospects 테이블) 사용
- 업체명/사업자번호/대표자명/연락처로 검색
- 필드명 매칭: business_number, contact_phone, contact_email

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:44:17 +09:00
김보곤
d7bde8952a fix:고객 서비스이용 계약서 기본값 - 라벨 기반 매칭으로 수정
- 하드코딩 키 대신 템플릿 변수의 라벨(계약번호/총개발비/월구독료)로 매칭
- 빈 문자열 기본값도 덮어쓰도록 trim() 체크 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:25:41 +09:00
김보곤
bcc95ffafa feat:고객 서비스이용 계약서 - 고객 불러오기/계약번호 자동채번/기본값
- 테넌트(고객) 검색 API 추가 (searchTenants)
- 계약번호 자동 채번 API 추가 (CONTRACT-YYYYMMDD-N 형식)
- 고객 서비스이용 계약서 선택 시 "고객 불러오기" 버튼 표시
- 고객 선택 시 상호/사업자등록번호/주소/전화번호 자동 채움
- 총개발비 기본값 20,000,000 / 월구독료 기본값 500,000 자동 세팅
- TenantSearchModal 컴포넌트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:23:06 +09:00
김보곤
abf424d10e feat:새 계약 생성 - 계약제목 드롭박스 + 번개 버튼 랜덤 상대방
- 계약 제목을 드롭박스로 변경 (영업파트너 계약서/비밀유지 서약서/고객 서비스이용 계약서/직접입력)
- 직접입력 선택 시 텍스트 입력 필드 표시
- 번개마크 2개 → 1개로 축소
- 번개마크 클릭 시 영업파트너 목록에서 랜덤으로 상대방 정보 자동 채우기

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:13:16 +09:00
김보곤
f1c557b37c docs:전자계약 문서에 카카오톡 알림톡 내용 전반적 추가
- OverviewTab: 기술 스택에 카카오 알림톡 API 추가
- UserManualTab: 소개, 역할, 준비물, 서명 요청, 리마인더, OTP 인증 등 전반에 알림톡 채널 추가
- UserManualTab: 을 가이드에 알림톡 수신 예시 UI 추가
- WorkflowTab: 발송/인증/완료 단계에 알림톡 채널 반영
- SecurityTab: OTP 인증 프로세스에 알림톡 우선 발송 반영
- ArchitectureTab: KakaoAlimtalkService 서비스 추가
- OperationsTab: 알림톡 환경 변수, 장애 대응 가이드 추가
- ChangelogTab: v1.1 계획에 카카오 알림톡 연동 추가
- FAQ, 용어사전 등 전반적으로 알림톡 관련 내용 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:40:25 +09:00
김보곤
eafd81d97a feat:파트너 검색에 포지션(역할) 필드 추가
- searchPartners 역할 필터를 sales만 → sales/manager 모두 포함하도록 확장
- 사용자 역할(영업파트너/상담매니저)을 position 필드로 API 응답에 추가
- handlePartnerSelect에 position 매핑 추가 (key: position, label: 포지션/직책/역할)
- PartnerSearchModal 검색 결과에 position 배지 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 18:07:16 +09:00
김보곤
823916aa1d feat:새 계약 생성 비밀유지서약서 테스트 데이터 번개 버튼 추가
- 기존 번개(노란색): 영업파트너 계약서 테스트 데이터
- 새 번개(보라색): 비밀유지서약서 테스트 데이터
- 개발 편의를 위한 관리자 전용 퀵필 버튼

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:46:45 +09:00
김보곤
66abdc31e5 feat:템플릿 카드에서 PDF/Word 파일 직접 교체/추가 기능
- 템플릿 카드의 PDF 표시 영역에 '교체' 버튼 추가
- PDF 미연결 템플릿에 'PDF/Word 파일 추가' 버튼 표시
- 카드에서 직접 파일 선택 → 업로드 → 즉시 반영
- PDF/DOC/DOCX 지원 (서버에서 자동 PDF 변환)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:31:36 +09:00
김보곤
a7aa2e2cd2 fix:E-Sign 알림톡 certKey 버그 수정 및 발송 상태 추적 기능 추가
- sendATKakaotalkEx() 호출 시 존재하지 않는 certKey 파라미터 제거 (TypeError 버그)
- sendAlimtalk/dispatchNotification 결과 반환 (void → array)
- send/remind 응답에 notification_results 포함
- 감사 로그 metadata에 서명자별 알림 발송 결과 저장
- EsignPublicController 다음 서명자/완료 알림에도 동일 수정 적용
- detail.blade.php: 발송 방식 배지, 서명자 연락처, 알림 오류 배너, 활동 로그 발송 결과 표시
- send.blade.php: 발송 후 알림 실패 시 경고 메시지 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:01:14 +09:00
김보곤
bea7bd5987 feat:전자계약 알림톡 발송 방식 선택 기능 추가
- EsignApiController: send_method/sms_fallback 저장, dispatchNotification/sendAlimtalk 메서드 추가
- EsignPublicController: 완료/다음서명자 알림에 알림톡 지원 추가
- EsignContract 모델: send_method, sms_fallback fillable/casts 추가
- send.blade.php: 발송방식 선택 UI (알림톡/이메일/동시), SMS 대체발송, 연락처 확인

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:12:41 +09:00
김보곤
36627b976d fix:전자서명 done 페이지 계약/서명자 정보 표시 수정
getContract API가 항상 데이터를 반환하되 is_signable 플래그로
서명 가능 여부를 전달하도록 변경. done 페이지에서 signed/completed
상태의 계약도 정상적으로 정보를 표시할 수 있도록 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 13:18:17 +09:00
김보곤
992f28ba33 fix:전자서명 서명/확인 단계 버튼 위치 수정 (서명란 바로 아래로)
- flex-1 제거하여 카드가 화면 전체를 채우지 않도록 변경
- 이전/서명확인 버튼이 서명 입력란 바로 아래에 위치

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:49:17 +09:00
김보곤
72ce6980a7 fix:영업파트너 모달 높이 고정+스크롤 적용, salesPartner 레코드 보유자만 검색
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:55:05 +09:00
김보곤
92c78b353e feat:E-Sign 계약 생성 영업파트너 검색 모달 추가
- EsignApiController에 searchPartners() 검색 API 추가
- SalesPartner 모델 $fillable에 company_name, biz_no, address 추가
- User 모델에 salesPartner() HasOne 관계 추가
- create.blade.php에 PartnerSearchModal 컴포넌트 + 자동채우기 로직 추가
- web.php에 search-partners 라우트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:48:31 +09:00
김보곤
28a9a73326 fix:계약 자동채움 영업파트너 계약서로 고정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:19:13 +09:00
김보곤
00f290440e feat:계약 생성 만료일 기본값 7일 후 설정 및 안내 문구 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:13:41 +09:00
김보곤
2ed6508fee fix:계약 생성 상대방 전화번호 고정값으로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:45:59 +09:00
김보곤
d739888e95 fix:계약 생성 상대방 기본 이메일 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:25:24 +09:00
김보곤
e0e97165b3 feat:계약 필드 에디터에 텍스트 정렬(L/C/R) 설정 기능 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 20:06:32 +09:00
김보곤
f0a57015c0 fix:계약 상세 시간 표시를 UTC→KST(로컬) 변환으로 수정
- fmtDate() 유틸 추가: UTC ISO 문자열을 브라우저 로컬 시간으로 변환
- 서명자 signed_at, 활동 로그 created_at, 계약 생성일/만료일 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:48:25 +09:00
김보곤
877d3f16d3 fix:필드 에디터 오버레이 기본 정렬을 왼쪽으로 변경
- template-fields/fields FieldOverlay: justify-center → text_align 기반 정렬
- 기본값 justify-start(왼쪽), text_align에 따라 L/C/R 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:21:14 +09:00
김보곤
843e898f5f fix:E-Sign PDF 폰트 크기 2배 확대, 왼쪽 정렬 기본값, 서명자 매핑 수정
- PdfSignatureService: 자동 폰트 크기 공식 2배(h*0.7→h*1.4), 기본 정렬 C→L
- text_align 필드 추가 (L/C/R 정렬 선택 가능)
- store()/buildVariableMap(): sign_order→role 기반 매핑으로 변경
  (signer_order 1=creator/갑/회사, 2=counterpart/을/파트너)
- template-fields: 가로 정렬 버튼 UI 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:07:31 +09:00
김보곤
d5283099c4 feat:새 템플릿 생성 기능 추가 (CreateTemplateModal)
- storeTemplate() API에서 items를 nullable로 변경하여 빈 템플릿 생성 허용
- signer_count/variables 파라미터 직접 지정 가능하도록 추가
- "새 템플릿" 버튼 클릭 시 CreateTemplateModal 표시 (이름/설명/카테고리/서명자수/PDF)
- 생성 완료 후 필드 에디터(/esign/templates/{id}/fields)로 자동 이동

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:40:41 +09:00
김보곤
be52631287 feat:계약 생성 페이지를 3단계 위자드로 개선
- Step 1: 계약 정보 + 서명자 (유효성 검사 포함)
- Step 2: 템플릿 선택 + PDF 미리보기 (필드 위치 오버레이)
- Step 3: 변수 입력 + 요약 + 생성/바로발송 버튼
- pdf.js 추가하여 템플릿 PDF 프리뷰 렌더링
- 필드 목록 테이블로 배치될 필드 한눈에 확인
- 스텝 인디케이터 (완료 단계 클릭 이동 지원)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:21:55 +09:00
김보곤
259c07e880 feat:템플릿 기반 계약서 자동 생성 시스템
- store()에서 template_id 있으면 필드 자동 생성 (서버 사이드)
- create.blade.php 변수 입력 UX 개선 (시스템/커스텀 변수 구분)
- 바로 발송 버튼 추가 (템플릿 선택 시)
- fields.blade.php URL 파라미터 기반 auto-apply 제거
- PdfSignatureService NanumGothic 한글 폰트 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:07:59 +09:00
김보곤
0d00d1c67f fix:법인도장 이미지를 base64 data URL로 반환 (local disk 404 해결)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 16:46:11 +09:00
김보곤
fe9716ff17 fix:법인도장 업로드를 base64 방식으로 변경 (PHP upload_max_filesize 제한 우회)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 16:44:12 +09:00
김보곤
e8d494a081 feat:법인도장 대시보드 등록 + 새 계약 자동 적용
- 대시보드 설정 탭 추가 (법인도장 등록/미리보기/삭제 UI)
- tenant_settings 테이블에 esign/company_stamp 키로 저장
- 새 계약 생성 시 등록된 도장 자동 적용 (creator signer)
- 계약 생성 페이지에서 개별 도장 업로드 UI 제거

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 16:26:28 +09:00
김보곤
24c6927b56 feat:E-Sign 작성자 서명/도장 선택 기능 (자동서명 제거)
- 작성자 자동서명 로직 제거 → 양쪽 모두 서명 과정 필수
- 서명 화면에서 '직접 서명' / '법인도장' 선택 UI 추가
- 도장 선택 시 기존 stamp 이미지로 바로 제출
- getContract API에 has_stamp 필드 추가
- submitSignature에 use_stamp 플래그 처리 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:02:26 +09:00
김보곤
83bd22a414 fix:E-Sign 서명하기 버튼 위치 개선 (체크박스 바로 아래로)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:42:39 +09:00
김보곤
0c47d7b996 feat:E-Sign 법인도장(Corporate Seal) 등록 및 자동 서명 기능
- 계약 생성 화면에 법인도장 업로드 UI 추가 (미리보기/삭제)
- store()에서 base64 이미지 디코딩 후 저장, creator signer에 연결
- send()에서 법인도장 있는 작성자 자동 서명 처리 (상대방에게만 이메일 발송)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:36:11 +09:00
김보곤
db13550f38 fix:계약 생성 서명자 UI 개선 - 갑/을 제거, 작성자 고정값 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:34:14 +09:00
김보곤
7ca7cc0731 fix:계약 생성 파일 업로드 ERR_UPLOAD_FILE_CHANGED 오류 수정
파일 선택 시 메모리에 복사하여 디스크 파일 변경으로 인한
브라우저 ERR_UPLOAD_FILE_CHANGED 오류 방지.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
165ccf843e feat:E-Sign DOCX 업로드 시 PDF 자동 변환 (LibreOffice)
Word(.docx/.doc) 파일 업로드 시 서버에서 LibreOffice headless로 PDF 자동 변환.
계약 생성, PDF 업로드, 템플릿 PDF 교체 3개 엔드포인트에 적용.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
94e1e7dbb5 fix:서명 이미지 배경 투명 PNG로 개선
- SignaturePad backgroundColor를 rgba(0,0,0,0)으로 변경 (투명)
- 캔버스 CSS background는 #fff 유지 (시각적 흰색 배경)
- toDataURL('image/png')로 투명 배경 서명 이미지 저장

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
85f5aa0682 fix:E-Sign 필드 이동/크기조절 UX 개선
- 기본 상태(점선): 드래그=이동만 활성, 클릭=선택
- 더블클릭: 리사이즈 모드 전환(실선+핸들 표시, 크기조절)
- ESC 또는 바깥 클릭: 리사이즈 모드 해제
- fields.blade.php, template-fields.blade.php 양쪽 동일 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
5ffabed6b4 feat:E-Sign 템플릿 변수 자동채움 시스템 구현
- 시스템 변수 (서명자명, 이메일, 계약제목, 날짜 등) 자동 해석
- 커스텀 변수 정의/관리 (템플릿별 계약금액, 기간 등)
- 템플릿 필드 에디터: 변수 관리 + 필드-변수 바인딩 UI
- 계약 생성 폼: 템플릿 변수 입력 섹션 추가
- 계약 필드 에디터: 변수 연결 정보 표시
- PdfSignatureService: font_size 반영 렌더링

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
b206eeeb2d feat:E-Sign 필드 에디터에 폰트 크기 속성 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
f83a62b479 feat:템플릿 비주얼 필드 에디터 추가
PDF 위에서 드래그앤드롭으로 템플릿 필드를 편집하는 기능 구현:
- template-fields.blade.php 뷰 생성 (fields.blade.php 기반, signer_order 사용)
- updateTemplateItems API 추가 (필드 일괄 저장)
- 템플릿 카드/모달에 필드 편집 링크 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
a464cf40de feat:템플릿 편집 모달 확장 (PDF 관리 + 서식 필드 관리)
백엔드:
- uploadTemplatePdf: 템플릿 PDF 업로드/교체 API
- removeTemplatePdf: 템플릿 PDF 제거 API
- destroyTemplateItem: 개별 필드 아이템 삭제 API (signer_count 자동 재계산)
- updateTemplate 응답에 items 관계 포함

프론트엔드:
- 모달 폭 420px → 680px 확장
- 3개 탭 구성: 기본 정보 / PDF 파일 / 서식 필드
- PDF 탭: 현재 파일 정보, 다운로드, 교체, 제거 기능
- 서식 필드 탭: 필드 목록 테이블 (유형/라벨/서명자/페이지/위치/필수), 개별 삭제
- 편집 시 상세 데이터(items 포함) 로드

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
36654d9992 feat:계약 휴지통 기능 (소프트 삭제/복구/영구삭제)
백엔드:
- destroy를 SoftDelete 방식으로 변경 (deleted_at + deleted_by 기록)
- trashed: 휴지통 목록 조회 API 추가
- restore: 선택 복구 API 추가
- forceDestroy: 영구 삭제 API 추가 (파일+관련 레코드 완전 삭제)
- 라우트 3개 추가 (trashed, restore, force-destroy)

프론트엔드:
- 대시보드에 탭 UI 추가 (계약 목록 / 휴지통)
- 휴지통 탭: 삭제된 계약 목록, 삭제일 표시
- 선택 복구(파란색) / 영구삭제(빨간색) 버튼
- 휴지통 건수 뱃지 표시
- 삭제 시 메시지를 "휴지통으로 이동"으로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
156a7430a8 feat:대시보드/계약상세/템플릿 관리 새로고침 버튼 추가
- 대시보드: 제목 옆 새로고침 버튼 (통계+목록 갱신)
- 계약 상세: 상태 뱃지 앞 새로고침 버튼 (계약 정보 갱신)
- 템플릿 관리: 제목 옆 새로고침 버튼 (템플릿 목록 갱신)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
6bf087d2db fix:삭제 버튼 항상 표시 (선택 없으면 비활성 상태)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00
김보곤
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
김보곤
506f115415 fix:새 계약 생성 폼 PC 화면 UI 개선 (과대 크기 축소)
- max-w-3xl + mx-auto로 폼 너비 제한 (768px)
- input/select/textarea padding 축소 (py-2 → py-1.5)
- 카드 내부 패딩 축소 (p-5 → p-4)
- 라벨 폰트 크기 축소 (text-sm → text-xs)
- 섹션 간격 축소 (space-y-5 → space-y-4)
- 버튼 크기 축소 및 rounded-lg → rounded-md 통일

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
김보곤
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
김보곤
c6116ad611 feat:새 계약 생성 테스트 데이터 자동입력 버튼 추가
- 번개 아이콘 클릭 시 랜덤 계약정보/서명자 자동 입력
- 슈퍼관리자/관리자에게만 표시
- 이메일은 테스트용 고정값 사용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:59:18 +09:00