47 Commits

Author SHA1 Message Date
김보곤
658ad1add3 feat: [esign] 근로계약서 사원불러오기 최신 연봉정보 반영
- 백엔드: salary_effective_date 추가 반환, 이력 fallback 로직 추가
- 프론트: 연봉계약 시작/종료일을 최신 연봉 적용일 기준으로 계산
- 근로계약은 입사일 기준, 연봉계약은 연봉 적용일 기준으로 분리
2026-03-11 16:59:05 +09:00
김보곤
d729e2c586 feat: [esign] 근로계약서 작성 시 사원 연봉 자동 반영
- 사원검색 API에 연봉 금액 포함
- 사원 선택 시 연봉 총금액/월급여 템플릿 변수 자동 채움
2026-03-11 16:46:56 +09:00
김보곤
060ee12455 fix: [esign] 근로계약서 연봉계약종료일 자동계산 오류 수정
- 패턴 매칭 순서 변경: 구체적 패턴(종료)을 일반적 패턴(계약) 앞에 배치
- 기존: '계약.*연도'가 '연봉계약종료연도' 라벨을 먼저 매칭하여 입사년도 입력
- 수정: '연봉계약.*종료.*년도'가 먼저 매칭되어 정상적으로 1년 후 계산 적용
- 근로계약/계약 종료일 패턴도 추가
2026-03-11 16:37:59 +09:00
김보곤
58991e352e feat: [esign] 근로계약서 사원 불러오기 시 주소, 생년월일, 계약일 자동 반영
- 주민등록번호에서 출생년도/월/일 분리 (세기 자동 판별)
- 입사일 기반 계약일, 근로계약시작일, 연봉계약시작일 자동 반영
- 연봉계약종료일은 입사일 + 1년으로 계산
- 사원 주소, 계약자 이름 자동 매핑 추가
2026-03-11 16:18:37 +09:00
김보곤
bb3ffc6085 feat: [esign] 사원 불러오기 기능 추가 및 랜덤 데이터 품질 개선
- 근로계약서 시 '사원 불러오기' 버튼으로 직원 검색/선택 기능
- fillRandomVariables 스마트 기본값 생성 (테스트_ 접두사 제거)
- searchEmployees API 엔드포인트 추가
2026-03-11 14:27:32 +09:00
김보곤
b007fdbcb0 feat: [esign] 근로계약서 번개 아이콘 클릭 시 랜덤 테스트 데이터 자동 입력
- 직원주소, 직종구분, 업무내용, 업무기간, 출생년도, 급여, 계약자이름 등 매핑
- 라벨 부분 매칭(정규식)으로 유연하게 처리
- 매칭 안 되는 변수는 '테스트_라벨명'으로 기본값 입력
- 기존 영업파트너/고객 계약서 매핑 유지
2026-03-11 14:17:50 +09:00
김보곤
ea4e16bbd0 feat: [esign] 계약 수정 화면에 서명 필드 값 편집 기능 추가
- 수정 화면에서 text/date/checkbox 필드 값 인라인 편집
- 필드별 서명자 구분(작성자/상대방), 페이지 번호 표시
- update API에서 필드 값 일괄 업데이트 처리
2026-03-11 13:05:36 +09:00
김보곤
edc69040ab feat: [esign] 전자계약 수정 기능 추가
- draft 상태 계약의 제목, 설명, 서명자 정보, 파일 수정 가능
- 계약 상세 페이지에 '계약 정보 수정' 버튼 추가
- create.blade.php를 생성/수정 겸용으로 확장
2026-03-11 11:55:46 +09:00
김보곤
8b8c544628 feat: [esign] 계약 제목에 '근로계약서' 옵션 추가 2026-03-11 11:46:11 +09:00
김보곤
44e5c9c42e feat: [esign] 계약 변수에 상대방 이름/전화번호 자동 입력 및 랜덤 데이터 버튼 추가 2026-02-24 17:51:48 +09:00
김보곤
7ab2460687 chore: [esign] 새 계약 생성 상대방 기본값 설정 (김보곤) 2026-02-23 23:37:16 +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
김보곤
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
김보곤
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
김보곤
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
김보곤
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
김보곤
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
김보곤
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
김보곤
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
김보곤
e00023e580 fix:계약 대시보드/새 계약 생성 페이지 전체 width 레이아웃으로 통일
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:51:08 +09:00
김보곤
92a0f7ef7b fix:새 계약 생성 페이지 레이아웃을 대시보드와 동일하게 반응형 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:47:41 +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
김보곤
203d52300a fix:계약 생성 폼 UX 전면 개선
- max-w-3xl 제거하여 전체 너비 사용
- flex 기반 반응형 레이아웃 (PC: 한 행, 모바일: 자동 줄바꿈)
- 이름(1):이메일(2.5):전화번호(1) flex-grow 비율 적용
- 작성자/상대방을 하나의 카드에 통합 (구분선으로 분리)
- SignerRow 컴포넌트 분리로 중복 제거
- 서명자 컬러 표시 (파란색: 작성자, 빨간색: 상대방)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:33:26 +09:00
김보곤
ebee3f195c fix:계약 생성 폼 이름/이메일/전화번호 항상 한 행 표시
- md: breakpoint 제거하여 항상 grid-cols-8 적용
- 사이드바 포함 레이아웃에서도 한 행으로 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:31:16 +09:00
김보곤
5c39369530 fix:계약 생성 폼 이름/이메일/전화번호 너비 비율 조정
- 이름 25% : 이메일 50% : 전화번호 25% (grid-cols-8 기반 2:4:2)
- 작성자, 상대방 섹션 모두 동일 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:30:02 +09:00
김보곤
800ce2efba fix:E-Sign 계약 생성 한글 입력 시 포커스 풀림 수정
Input 컴포넌트가 App 내부에 정의되어 매 리렌더마다
새 컴포넌트로 인식 → DOM 재생성 → IME 조합 끊김 발생.
Input을 App 바깥으로 이동하여 안정적인 컴포넌트 참조 유지.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 15:45:23 +09:00
김보곤
5f93edf34b refactor:전자계약 관련 용어를 SAM E-Sign으로 통일
- 전자계약 (E-Sign), 전자계약 대시보드, 전자계약 상세 등 → SAM E-Sign
- 9개 파일, 19곳 수정 (코드 식별자/URL은 유지)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:29:09 +09:00
김보곤
440cd11ece refactor:esign 페이지 및 전역 레이아웃 React CDN 통합
- esign 전자서명 관련 9개 파일 업데이트
- layouts/app.blade.php 업데이트
- fcm.js React 관련 변경사항 반영
2026-02-12 10:35:04 +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