Commit Graph

1372 Commits

Author SHA1 Message Date
김보곤
d69f4ef5d3 feat:바로빌 카카오톡(알림톡/친구톡) 서비스 구현
- BarobillService에 KAKAOTALK SOAP 클라이언트 추가
  - 채널/템플릿 관리, 알림톡/친구톡 발송, 전송조회/예약취소 API
- BarobillKakaotalkController (API) 생성: 15개 엔드포인트
- KakaotalkController (페이지) 생성: 5개 페이지
- 라우트 등록 (web.php, api.php)
- Blade 뷰 5개 생성: 대시보드, 채널관리, 템플릿관리, 발송, 전송내역

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:11:15 +09:00
김보곤
70bfccf5fb fix:전자서명 필드 위치 설정/복사 시 field_value 누락 수정
configureFields()와 copyFieldsFromContract()에서 기존 필드를
삭제 후 재생성할 때 field_value를 설정하지 않아 계약서 PDF에
서명자명, 날짜 등 기본값이 빠지는 문제 수정.
buildVariableMap()으로 변수 맵을 구성하여 값을 채우도록 개선.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 13:27:38 +09:00
김보곤
9cde5f56f0 fix:OTP 이메일에 코드 복사 편의 영역 추가
이메일에서는 JavaScript가 차단되므로 클립보드 버튼 대신
user-select:all로 터치/클릭 시 전체 선택되는 복사 영역 추가.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 13:22:01 +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
김보곤
489b65410e fix:전자서명 getContract API에 계약/서명자 상태 체크 추가
취소/거절/완료된 계약이나 이미 서명한 서명자가 서명 페이지에
접근할 때 즉시 명확한 에러 메시지를 표시하도록 개선.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 13:14:33 +09:00
김보곤
8fe03b57f4 feat:전자서명 문서 다운로드 시 미리보기 PDF 제공 (서명/도장 제외 필드 합성)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:57:29 +09:00
김보곤
992f28ba33 fix:전자서명 서명/확인 단계 버튼 위치 수정 (서명란 바로 아래로)
- flex-1 제거하여 카드가 화면 전체를 채우지 않도록 변경
- 이전/서명확인 버튼이 서명 입력란 바로 아래에 위치

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:49:17 +09:00
김보곤
8cfc44bf45 fix:영업파트너 수정 모달 validation 에러 표시 추가
- 폼을 AJAX 제출로 변경하여 422 에러 시 모달 내 에러 메시지 표시
- innerHTML로 로드된 script 태그 수동 실행 처리
- 컨트롤러에 JSON 응답 지원 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:47:41 +09:00
김보곤
29b40ad2bc fix:사업자 정보 미입력 시 불필요한 SalesPartner 레코드 생성 방지
- 기존 레코드가 있거나 실제 값이 입력된 경우에만 저장
- SoftDelete 스코프 충돌 방지를 위해 where 쿼리로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:56:40 +09:00
김보곤
0eb4baffef fix:updateSalesPartner의 partner_type도 'individual'로 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:17:24 +09:00
김보곤
c9e8ae5dd4 fix:SalesPartner partner_type을 enum 유효값 'individual'로 수정
- 'sales'는 enum('individual','corporate')에 없는 값이라 DB 저장 실패
- create/update 모두 'individual'로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:15:59 +09:00
김보곤
7e9dec8bd3 feat:영업파트너 등록/수정에 사업자 정보(상호, 사업자등록번호, 주소) 필드 추가
- 컨트롤러 store/update 유효성 검사에 3개 필드 추가
- 서비스 create/update에서 SalesPartner 레코드 생성/업데이트
- 등록 폼(create.blade.php)에 사업자 정보 섹션 추가
- 수정 모달(edit-modal.blade.php)에 사업자 정보 섹션 추가
- 테스트 데이터 자동입력에 사업자 정보 포함

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:11:32 +09:00
김보곤
2fdf151c14 fix:영업파트너 검색을 sales 역할 기반으로 변경
- whereHas('salesPartner') → whereHas('userRoles') + role.name='sales'
- 현재 테넌트의 sales 역할을 가진 활성 사용자만 검색

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:00:37 +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
김보곤
e0627e04ac fix:select padding-right !important로 Tailwind 클래스 우선순위 문제 해결
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:32:36 +09:00
김보곤
027d880df7 fix:select 드롭다운 텍스트-화살표 겹침 방지 전역 CSS 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:30:05 +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
김보곤
c635abc3dd fix:날짜 형식 통일 (Y년 n월 j일) + 날짜 폰트 크기 일관성 확보
- overlayDate: Y-m-d → Y년 n월 j일, 미지정 시 12pt 고정
- buildVariableMap: current_date/expires_at도 동일 형식 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:52:14 +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
김보곤
40a9b26861 refactor:법인도장 저장소를 GCS로 변경 (로컬/서버 환경 무관)
- 업로드: base64 → 임시파일 → GCS 업로드
- 조회: GCS signed URL 반환 (60분 유효)
- 삭제: GCS 객체 삭제 + tenant_settings 삭제
- 계약 생성 시: GCS에서 다운로드 → 로컬 저장 → signer에 설정
- tenant_settings 값: image_path → gcs_object로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 16:48:18 +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
김보곤
c1932c7803 fix:매입 필터 버튼 배경색 변경 (amber→orange, 가시성 개선)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:00:33 +09:00
김보곤
416eea4401 feat:거래처 매출/매입 구분 라디오버튼 추가
- 등록/수정 모달에 매출/매입 라디오버튼 (기본값: 매출)
- 통계 카드에 매출/매입 건수 표시
- 필터 바에 매출/매입 필터 버튼
- 테이블에 매출/매입 뱃지 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 11:27:40 +09:00
김보곤
d43d5e9cd2 feat:거래처에 대표자/주소 필드 추가, OCR 매핑 개선
- 대표자(ceo) 입력란 추가 (OCR에서 ceo_name 직접 매핑)
- 주소(address) 입력란 추가 (메모가 아닌 별도 필드)
- 테이블/검색/CSV에 대표자 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 11:22:14 +09:00
김보곤
13bbe5731b refactor:거래처 유형/분류를 사업자등록증 양식(업태/종목)으로 변경
- select → 자유 텍스트 입력으로 변경
- OCR에서 업태/종목 직접 매핑
- 컨트롤러 enum 검증 제거
- 필터 동적 옵션, 통계 카드 간소화

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 11:13:08 +09:00
김보곤
8a18244000 feat:고객사 등록 사업자등록증 OCR 자동입력 기능 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:51:38 +09:00
김보곤
db13550f38 fix:계약 생성 서명자 UI 개선 - 갑/을 제거, 작성자 고정값 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:34:14 +09:00
김보곤
ab3f26321b fix:LibreOffice HOME 디렉토리 권한 오류 수정
www-data 사용자의 홈 디렉토리에 쓰기 권한이 없어 변환 실패하는 문제.
HOME을 임시 디렉토리로 지정하여 해결.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11: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
김보곤
631287e75e fix:사이드바 메뉴 prefix 매칭 시 더 구체적인 메뉴 우선 적용
/esign/templates/5/fields 접속 시 /esign, /esign/templates 둘 다
활성화되던 문제 수정. 더 구체적인 prefix 메뉴가 있으면 덜 구체적인
메뉴는 비활성화.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:11:14 +09:00