김보곤
e5c12e5d85
fix: [approval] ApprovalStep에 SoftDeletes, tenant_id 동기화
...
- API에서 approval_steps 테이블에 tenant_id, deleted_at 추가에 따른 동기화
- ApprovalStep 모델에 SoftDeletes 추가, tenant_id fillable 추가
- ApprovalStep::create() 시 tenant_id 포함 (2곳)
2026-03-11 17:13:42 +09:00
김보곤
3fc77a95ea
feat: [esign] 근로계약서 사원불러오기 최신 연봉정보 반영
...
- 백엔드: salary_effective_date 추가 반환, 이력 fallback 로직 추가
- 프론트: 연봉계약 시작/종료일을 최신 연봉 적용일 기준으로 계산
- 근로계약은 입사일 기준, 연봉계약은 연봉 적용일 기준으로 분리
2026-03-11 16:59:34 +09:00
김보곤
ad0fa4df36
feat: [esign] 근로계약서 작성 시 사원 연봉 자동 반영
...
- 사원검색 API에 연봉 금액 포함
- 사원 선택 시 연봉 총금액/월급여 템플릿 변수 자동 채움
2026-03-11 16:47:26 +09:00
김보곤
16f2157948
feat: [hr] 사원관리 연봉정보 탭 생성
...
- 사원 상세/수정 페이지에 연봉정보 입력 섹션 추가
- 특수 권한 사용자만 열람/수정 가능한 접근 제어 적용
- 연봉 변경 시 자동 이력 기록
- 일반 API 응답에서 연봉 데이터 노출 방지 (toArray 오버라이드)
2026-03-11 16:28:25 +09:00
김보곤
4bb03fffcb
feat: [esign] 근로계약서 사원 불러오기 시 주소, 생년월일, 계약일 자동 반영
...
- 주민등록번호에서 출생년도/월/일 분리 (세기 자동 판별)
- 입사일 기반 계약일, 근로계약시작일, 연봉계약시작일 자동 반영
- 연봉계약종료일은 입사일 + 1년으로 계산
- 사원 주소, 계약자 이름 자동 매핑 추가
2026-03-11 16:19:06 +09:00
김보곤
527623896b
fix: [barobill] 은행거래 동기화 시 중복 키 에러 수정
...
- summary 포함 WHERE와 DB unique index 불일치로 발생하는 duplicate entry 에러
- insert를 insertOrIgnore로 변경하여 중복 시 무시
2026-03-11 15:48:54 +09:00
김보곤
4783e4b7a2
fix: [journal] 전표 적요 수정 시 자금일보에 반영되도록 동기화
...
- 은행거래 출처 전표의 적요 수정 시 BankTransactionOverride에 저장
- 기존 modified_cast 오버라이드 값 보존
2026-03-11 15:28:15 +09:00
김보곤
380139e641
feat: [esign] 사원 불러오기 기능 추가 및 랜덤 데이터 품질 개선
...
- 근로계약서 시 '사원 불러오기' 버튼으로 직원 검색/선택 기능
- fillRandomVariables 스마트 기본값 생성 (테스트_ 접두사 제거)
- searchEmployees API 엔드포인트 추가
2026-03-11 14:28:03 +09:00
김보곤
276f015138
fix: [esign] PDF 한글 폰트 깨짐 수정 — K_PATH_FONTS 의존 제거
...
- K_PATH_FONTS 상수가 TCPDF vendor 경로로 선점되면 pretendard 폰트를 못 찾는 문제
- AddFont()으로 storage/fonts/tcpdf/ 경로를 직접 지정하여 확실하게 로드
- 폴백: resources/fonts/Pretendard-Regular.ttf → helvetica
2026-03-11 14:06:28 +09:00
1b284f990d
fix: [hr] 급여명세서 한글 폰트 — storage_path 기반으로 변경하여 배포 간 안정성 확보
...
- chroot에 storage_path('fonts') 추가 (symlink→shared 경로 허용)
- 폰트를 resources→storage로 복사 후 storage 경로로 등록 (릴리스 불변)
- 배포마다 .ufm 메트릭 재생성 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:48:22 +09:00
fee127916f
fix: [hr] DomPDF setOptions 제거 — chroot 덮어쓰기로 인한 폰트 등록 실패 수정
...
- setOptions()가 config의 chroot(base_path)를 new Options()로 전체 교체 → vendor 기본값으로 리셋
- resource_path 폰트 경로가 chroot 밖으로 판정되어 registerFont() false 반환
- setOptions 제거 → config/dompdf.php 설정(font_dir, font_cache, chroot) 그대로 사용
- storage 수동 복사도 제거 → DomPDF가 내부적으로 font_dir에 복사 + .ufm 생성
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:37:37 +09:00
c179c46b8c
fix: [hr] DomPDF 인스턴스 불일치 해결 — 급여명세서 한글 폰트 깨짐 수정
...
- 기존: app()으로 별도 DomPDF 인스턴스에 폰트 등록 → Pdf::loadView()의 인스턴스에는 미적용
- 수정: $pdf->getDomPDF()로 동일 인스턴스에 폰트 등록 후 output() 호출
- Pretendard 폰트 사용, resources/fonts/에서 storage/fonts/로 복사 후 등록
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:23:38 +09:00
김보곤
78a52f2110
feat: [esign] 계약 수정 화면에 서명 필드 값 편집 기능 추가
...
- 수정 화면에서 text/date/checkbox 필드 값 인라인 편집
- 필드별 서명자 구분(작성자/상대방), 페이지 번호 표시
- update API에서 필드 값 일괄 업데이트 처리
2026-03-11 13:06:04 +09:00
김보곤
2ef2de7463
feat: [esign] 전자계약 수정 기능 추가
...
- draft 상태 계약의 제목, 설명, 서명자 정보, 파일 수정 가능
- 계약 상세 페이지에 '계약 정보 수정' 버튼 추가
- create.blade.php를 생성/수정 겸용으로 확장
2026-03-11 11:56:17 +09:00
김보곤
29e8dea54a
fix: [payroll] PDF 한글 폰트 NanumGothic → Pretendard 전환
...
- 운영서버 NanumGothic 메트릭 생성 실패 문제 해결
- Pretendard Regular/Bold TTF를 resources/fonts/에 번들링
- ensureKoreanFont()에서 Pretendard 등록으로 변경
- payslip.blade.php font-family를 Pretendard로 변경
- PDF 크기: 18KB (서브셋팅 적용)
2026-03-11 11:49:57 +09:00
김보곤
6762b75b97
fix: [payslip] PDF 생성 시 font_dir 명시적 지정 (config 캐시 무관)
...
- setOptions()로 font_dir, font_cache, enable_font_subsetting 직접 전달
- ensureKoreanFont()에서도 DomPDF 옵션을 명시적으로 설정
- 캐시 유효성 검증 강화: TTF + .ufm 메트릭 파일 모두 확인
- config 캐시 상태와 무관하게 storage/fonts/ 사용 보장
2026-03-11 11:18:40 +09:00
김보곤
e5b00832e2
fix: [payslip] ensureKoreanFont 캐시 유효성 검증 추가
...
- installed-fonts.json에 키만 있고 실제 폰트 파일이 없으면 재등록
- 배포 후 수동 캐시 초기화 불필요
2026-03-11 11:10:37 +09:00
김보곤
84b86a08a0
fix: [payslip] 폰트를 프로젝트에 포함하여 서버 의존성 제거
...
- resources/fonts/에 NanumGothic TTF 포함 (Git으로 배포)
- ensureKoreanFont()가 시스템 경로 대신 resource_path() 사용
- fonts-nanum 패키지 미설치 서버에서도 한글 PDF 정상 생성
2026-03-11 11:01:19 +09:00
김보곤
5024be5596
fix: [daily-fund] 일일자금일보 바로빌 데이터 자동 동기화 추가
...
- periodReport에서 데이터 조회 전 바로빌 API 자동 동기화 트리거
- BarobillBankSyncService 서비스 클래스 생성 (EaccountController 로직 분리)
- 현재 월 캐시 10분 만료, 과거 월 영구 캐시 정책 동일 적용
- 동기화 실패 시 기존 DB 캐시로 폴백 (서비스 중단 방지)
2026-03-11 09:56:23 +09:00
김보곤
88b70f02d4
fix: [hr] 급여명세서 PDF 한글 폰트 깨짐 수정
...
- NanumGothic 폰트 자동 등록 로직 추가 (ensureKoreanFont)
- storage/fonts/에 폰트 복사 후 DomPDF에 등록 (최초 1회)
- payslip.blade.php font-family를 NanumGothic으로 변경
- 서버 배포 시 수동 폰트 등록 불필요
2026-03-11 09:50:24 +09:00
김보곤
ec35b2f456
fix: [hr] 급여명세서 PDF 구글 폰트 외부 로드 제거
...
- payslip.blade.php: @import 구글 폰트 URL 삭제, 시스템 기본 폰트 사용
- PayrollService.php: isRemoteEnabled 옵션 제거
- 운영서버 배포 시 폰트 캐시 권한 오류 근본 해결
2026-03-11 09:41:56 +09:00
김보곤
878cec7935
feat: [rd] 클코 → 슬랙 변환기 추가
...
- Claude Code CLI 출력을 슬랙 mrkdwn 형식으로 자동 변환
- 마크다운 → 슬랙 문법 변환 (볼드, 코드블록, 링크 등)
- 슬랙 스타일 실시간 미리보기
- 클립보드 복사/붙여넣기 지원
2026-03-11 09:20:54 +09:00
김보곤
bb267d14c1
feat: [payroll] 슈퍼관리자 급여 수정/지급취소 권한 추가
...
- 지급완료/확정 상태에서도 슈퍼관리자는 급여 수정 가능
- 지급취소(unpay) 기능 추가: paid → draft 상태 되돌리기
- 테이블에 슈퍼관리자 전용 수정/지급취소 버튼 표시
2026-03-11 06:52:45 +09:00
dfe97308f3
deploy: 2026-03-11 배포
...
- feat: MNG→SAM 자동 로그인 토큰 (LoginToken 모델 도메인 매핑)
- feat: 사용자/역할/부서 관리 개선 (Controller, Service, View)
- feat: 메뉴 관리 개선 (MenuService, menu-tree.js)
- fix: 문서 뷰어, FCM 토큰, 방화셔터 도면, 테넌트 테이블 뷰 수정
2026-03-11 02:12:51 +09:00
김보곤
d068a8e55c
fix: [payroll] 전표 공제항목 동일 항목 병합 처리
...
- 기타공제 이름 정규화 (trim, 공백 통일)
- 동일 description + trading_partner 공제항목 합산 병합
- 중복 라인 제거하여 깔끔한 전표 생성
2026-03-10 16:34:41 +09:00
김보곤
bde4be4123
fix: [payroll] 전표 기타공제 항목별 분리 및 음수 금액 처리
...
- 기타공제를 합산 단일 라인에서 항목별(연말정산소득세, 연말정산지방소득세 등) 분리
- formatInputCurrency/parseInputCurrency 음수 부호 처리 추가
- JournalEntryController validation에서 min:0 제거하여 음수 credit_amount 허용
2026-03-10 12:44:37 +09:00
김보곤
5bf2914e22
fix: [payroll] 음수 공제항목 전표 처리 방식 수정
...
- 음수 공제(환급)를 차변 별도 라인 대신 대변 마이너스로 처리
- 차변은 총지급액(gross_salary) 단일 라인 고정
- 대변합계 = 양수공제 + 음수공제(마이너스 대변) + 실수령액 = 차변
2026-03-10 12:26:56 +09:00
김보곤
39fa711420
fix: [payroll] 전표 생성 음수 공제(환급) 처리 및 역산 제거
...
- 음수 공제항목을 차변 207 예수금으로 처리 (환급 = 예수금 감소)
- 역산 방식 제거, DB의 실제 net_salary 사용
- 공제항목 루프 처리로 코드 간결화
2026-03-10 11:43:10 +09:00
김보곤
84614a77b9
fix: [journal] 급여 전표 수정 허용 및 source_type 라벨 개선
...
- payroll source_type 전표 수정 허용 (기존: manual, bank_transaction만)
- source_type별 정확한 라벨 매핑 (카드사용내역, 홈택스 매출/매입)
- 프론트/백엔드 양쪽 수정
2026-03-10 11:38:04 +09:00
김보곤
1daffbc212
fix: [payroll] 전표 미지급비용을 역산으로 차대 균형 보장
...
- net_salary를 DB 값 대신 (총지급액 - 공제 합계)로 역산
- DB 데이터 불일치 시에도 전표 차대 균형 보장
2026-03-10 11:33:24 +09:00
김보곤
63271ed18c
fix: [payroll] 전표 생성 시 기타공제 누락 수정 및 에러 모달 추가
...
- 기타공제(deductions JSON) 항목을 대변 207 예수금에 반영
- 차대 불균형 시 상세 분개 내역을 에러 모달로 표시
- toast 대신 복사 가능한 모달로 에러 메시지 표시
2026-03-10 11:30:56 +09:00
김보곤
a14c7a5119
fix: [payroll] 급여명세서 이메일 발송 시 개인 이메일 우선 참조
...
- 개인 이메일이 있으면 개인 이메일로 발송
- 개인 이메일이 없으면 업무용 이메일로 폴백
- 목록의 이메일 모달에서도 동일 로직 적용
2026-03-10 10:58:12 +09:00
김보곤
76a993d32d
feat: [employee] 사원관리 개인 이메일 필드 추가
...
- 사원 수정 폼에 개인 이메일 입력 필드 추가
- 레이아웃 2x2 배열로 변경 (업무용 이메일|개인 이메일 / 주민등록번호|연락처)
- Employee 모델에 personalEmail accessor 추가
- 컨트롤러 validation, 서비스 jsonExtraKeys에 personal_email 반영
2026-03-10 10:05:00 +09:00
김보곤
4c3822edc2
fix: [journal] 전표 거래처 검색 limit(50) 제거 — 전체 활성 거래처 로드
2026-03-10 09:54:18 +09:00
김보곤
4a3d14a591
feat: [payroll] 급여명세서 이메일을 PDF 첨부파일로 변경
...
- 이메일 본문에 급여 내역 직접 노출 → PDF 첨부파일로 전환 (보안 강화)
- barryvdh/laravel-dompdf 패키지 추가
- 이메일 본문은 간단한 안내 메시지로 변경
- dompdf에서 한글 렌더링을 위해 Noto Sans KR 폰트 적용
2026-03-10 09:12:25 +09:00
김보곤
4c2a905a94
feat: [payroll] 이메일 발송 후 '발송' 라벨 표시 기능
...
- payrolls 테이블 options JSON에 email_sent_at/email_sent_to 저장
- 이메일 아이콘 아래 '발송' 텍스트 표시 (서버 렌더링 + JS 즉시 반영)
- Payroll 모델에 options 컬럼 추가
2026-03-10 01:21:28 +09:00
김보곤
5ac4495d6b
feat: [payroll] 급여명세서 이메일 발송 기능 추가
...
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
2026-03-10 01:06:48 +09:00
김보곤
0ef6b72d8e
feat: [hr] 연차촉진 관리에 1차/2차 촉진기간 컬럼 추가
...
- 근로기준법 제61조 기준 입사일 기반 촉진기간 자동 계산
- 1차 촉진기간: 연차만료 6개월 전 ~ +10일
- 2차 촉진기간 마감: 연차만료 2개월 전
- 잔여일수 다음에 촉진기간 표시
2026-03-10 00:37:33 +09:00
김보곤
fcdffa66db
feat: [hr] 휴가관리 참조자 선택 기능 추가
...
- 휴가 신청 모달에 참조자 검색/선택 UI 추가 (Alpine.js)
- 부서별 사용자 목록에서 참조자 검색 및 녹색 칩 표시
- LeaveController 참조 배열 유효성 검증 추가
- LeaveService에서 결재선 steps에 참조자 자동 병합
2026-03-10 00:10:16 +09:00
김보곤
2a82797926
fix: [hr] 급여관리 접근 권한 사용자 변경 (이경호 → 이의찬)
2026-03-10 00:10:16 +09:00
김보곤
a6d93f7c02
fix: [database] codebridge 모델 cross-DB 관계 오류 수정
...
- samdb 공유 모델에 $connection = 'mysql' 명시적 선언
- codebridge 모델에서 eager-load 시 connection 상속 방지
- 영향 모델: User, Tenant, Department, Process, File(2), Approval, AiQuotationModule, InterviewProject
2026-03-09 23:35:44 +09:00
김보곤
12427326df
Reapply "feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정"
...
This reverts commit 7371dda5a1 .
2026-03-09 23:18:02 +09:00
김보곤
2e0f8ddb9b
Reapply "feat: [database] Equipment 하위 4개 모델 codebridge connection 추가"
...
This reverts commit 1d5062a0b6 .
2026-03-09 23:18:02 +09:00
7371dda5a1
Revert "feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정"
...
This reverts commit 48aa4505f5 .
2026-03-09 21:22:03 +09:00
1d5062a0b6
Revert "feat: [database] Equipment 하위 4개 모델 codebridge connection 추가"
...
This reverts commit ea5f064574 .
2026-03-09 21:21:58 +09:00
김보곤
ea5f064574
feat: [database] Equipment 하위 4개 모델 codebridge connection 추가
...
- EquipmentInspection, EquipmentInspectionDetail, EquipmentInspectionTemplate, EquipmentRepair
- equipments 테이블과 FK 참조 관계 → 동일 DB(codebridge)에서 관리
2026-03-09 20:58:44 +09:00
김보곤
48aa4505f5
feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정
...
- API 사용 테이블 22개(23개 모델) 제외하고 55개 모델만 $connection = 'codebridge' 적용
- config/database.php에 codebridge connection 재추가
- 제외 대상: Barobill 12개, ESign 4개, Audit 2개, DevTools 1개, System 2개, HR 1개
2026-03-09 20:02:38 +09:00
김보곤
f6bbf65a00
fix: [finance] 거래처 등록 필수값 개선 (거래처명+사업자번호만 필수)
...
- 백엔드: bizNo 필수 검증 추가, trade_type/status null-safe 처리
- 프론트엔드: 사업자번호 필수 검증 + 라벨에 * 표시 추가
- 나머지 필드 비어있어도 저장 가능하도록 NOT NULL 컬럼 기본값 보장
2026-03-09 10:54:24 +09:00
김보곤
22bbab22e1
fix: [finance] 거래처 등록/수정 시 NOT NULL 컬럼 기본값 누락 수정
...
- type, category 컬럼이 NOT NULL인데 빈 값 전달 시 null 변환되어 DB 오류 발생
- store: null 대신 DB 기본값(vendor, 기타) 적용
- update: null 대신 기존 값 유지
2026-03-09 10:50:05 +09:00
김보곤
a30ab9251a
feat: [rd] 방화셔터 도면생성 기능 구현
...
- 4탭 구성: 설정 / 가이드레일 / 셔터박스 / 3D 렌더링
- 가이드레일 C-채널 SVG 단면도 (횡단면/정면도)
- 셔터박스 SVG 단면도 (정면/측면, 내부 부품 ON/OFF)
- Three.js 3D 조립체 렌더링 (셔터 개폐 애니메이션, 투명도, 부품 토글)
- DXF/PNG/JSON 내보내기, localStorage 프리셋 관리
- 제품 유형별(강판/스크린) 기본값 자동 적용
2026-03-08 19:30:44 +09:00