Commit Graph

1193 Commits

Author SHA1 Message Date
김보곤
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
김보곤
d7428e1785 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:20 +09:00
김보곤
c0721d549a 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:06 +09:00
김보곤
d919ad378b fix: [payslip] ensureKoreanFont 캐시 유효성 검증 추가
- installed-fonts.json에 키만 있고 실제 폰트 파일이 없으면 재등록
- 배포 후 수동 캐시 초기화 불필요
2026-03-11 11:09:55 +09:00
김보곤
e17314ad0f fix: [payslip] 폰트를 프로젝트에 포함하여 서버 의존성 제거
- resources/fonts/에 NanumGothic TTF 포함 (Git으로 배포)
- ensureKoreanFont()가 시스템 경로 대신 resource_path() 사용
- fonts-nanum 패키지 미설치 서버에서도 한글 PDF 정상 생성
2026-03-11 11:00:45 +09:00
김보곤
ca36e8e54d fix: [daily-fund] 일일자금일보 바로빌 데이터 자동 동기화 추가
- periodReport에서 데이터 조회 전 바로빌 API 자동 동기화 트리거
- BarobillBankSyncService 서비스 클래스 생성 (EaccountController 로직 분리)
- 현재 월 캐시 10분 만료, 과거 월 영구 캐시 정책 동일 적용
- 동기화 실패 시 기존 DB 캐시로 폴백 (서비스 중단 방지)
2026-03-11 09:55:50 +09:00
김보곤
be1c984de0 fix: [hr] 급여명세서 PDF 한글 폰트 깨짐 수정
- NanumGothic 폰트 자동 등록 로직 추가 (ensureKoreanFont)
- storage/fonts/에 폰트 복사 후 DomPDF에 등록 (최초 1회)
- payslip.blade.php font-family를 NanumGothic으로 변경
- 서버 배포 시 수동 폰트 등록 불필요
2026-03-11 09:49:55 +09:00
김보곤
f90b317e63 fix: [hr] 급여명세서 PDF 구글 폰트 외부 로드 제거
- payslip.blade.php: @import 구글 폰트 URL 삭제, 시스템 기본 폰트 사용
- PayrollService.php: isRemoteEnabled 옵션 제거
- 운영서버 배포 시 폰트 캐시 권한 오류 근본 해결
2026-03-11 09:41:28 +09:00
김보곤
64b0325d75 feat: [rd] 클코 → 슬랙 변환기 추가
- Claude Code CLI 출력을 슬랙 mrkdwn 형식으로 자동 변환
- 마크다운 → 슬랙 문법 변환 (볼드, 코드블록, 링크 등)
- 슬랙 스타일 실시간 미리보기
- 클립보드 복사/붙여넣기 지원
2026-03-11 09:20:22 +09:00
김보곤
e65e2f3dc8 feat: [payroll] 슈퍼관리자 급여 수정/지급취소 권한 추가
- 지급완료/확정 상태에서도 슈퍼관리자는 급여 수정 가능
- 지급취소(unpay) 기능 추가: paid → draft 상태 되돌리기
- 테이블에 슈퍼관리자 전용 수정/지급취소 버튼 표시
2026-03-11 06:52:03 +09:00
9af64d7368 feat: [users] SAM접속 기능 개선 - 도메인 매핑 및 텍스트 변경
- LoginToken: APP_ENV 기반 도메인 매핑 (local→dev.*, production→stage.sam.it.kr)
- DEV접속 → SAM접속 텍스트 변경
- 사용자 테이블: 이메일 컬럼 제거, 이름 아래 이메일 표시, 뱃지 버튼 UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:18:05 +09:00
d292c8eefc fix: [pm] 프로젝트 관리 HTMX 부분 로드 시 HX-Redirect 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:18:05 +09:00
d7c4283b66 feat: [admin] 일괄 작업 및 작업 버튼 뱃지 UI 적용
- 사용자/부서/역할 페이지에 체크박스 선택 + 일괄 삭제/복원/영구삭제
- 사용자 테이블: 이메일을 이름 아래로 이동, 이메일 컬럼 제거
- 사용자/부서/테넌트 작업 버튼 뱃지 스타일로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:18:05 +09:00
5f5eb12094 fix: [users] 영구삭제 시 DB 커넥션 오류 수정
- sales_partners, sales_manager_documents 테이블 codebridge 커넥션으로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:18:05 +09:00
afa8cd8293 feat: [menus] 메뉴 트리 상태 유지 및 활성 상태 연쇄 토글
- localStorage로 접힌 메뉴 상태 저장, HTMX 리로드 후 복원
- 상위 메뉴 활성/비활성 시 하위 메뉴 연쇄 적용 (백엔드+프론트)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:18:05 +09:00
김보곤
6d2720edf3 fix: [payroll] 전표 공제항목 동일 항목 병합 처리
- 기타공제 이름 정규화 (trim, 공백 통일)
- 동일 description + trading_partner 공제항목 합산 병합
- 중복 라인 제거하여 깔끔한 전표 생성
2026-03-10 16:34:19 +09:00
김보곤
3f3b843f36 fix: [payroll] 전표 기타공제 항목별 분리 및 음수 금액 처리
- 기타공제를 합산 단일 라인에서 항목별(연말정산소득세, 연말정산지방소득세 등) 분리
- formatInputCurrency/parseInputCurrency 음수 부호 처리 추가
- JournalEntryController validation에서 min:0 제거하여 음수 credit_amount 허용
2026-03-10 12:44:09 +09:00
김보곤
17d86958ea fix: [payroll] 음수 공제항목 전표 처리 방식 수정
- 음수 공제(환급)를 차변 별도 라인 대신 대변 마이너스로 처리
- 차변은 총지급액(gross_salary) 단일 라인 고정
- 대변합계 = 양수공제 + 음수공제(마이너스 대변) + 실수령액 = 차변
2026-03-10 12:26:34 +09:00
김보곤
c24d5cc672 fix: [payroll] 전표 생성 음수 공제(환급) 처리 및 역산 제거
- 음수 공제항목을 차변 207 예수금으로 처리 (환급 = 예수금 감소)
- 역산 방식 제거, DB의 실제 net_salary 사용
- 공제항목 루프 처리로 코드 간결화
2026-03-10 11:42:38 +09:00
김보곤
129b383ed5 fix: [journal] 급여 전표 수정 허용 및 source_type 라벨 개선
- payroll source_type 전표 수정 허용 (기존: manual, bank_transaction만)
- source_type별 정확한 라벨 매핑 (카드사용내역, 홈택스 매출/매입)
- 프론트/백엔드 양쪽 수정
2026-03-10 11:37:45 +09:00
김보곤
764ae09615 fix: [payroll] 전표 미지급비용을 역산으로 차대 균형 보장
- net_salary를 DB 값 대신 (총지급액 - 공제 합계)로 역산
- DB 데이터 불일치 시에도 전표 차대 균형 보장
2026-03-10 11:33:02 +09:00
김보곤
c53b3d8bc3 fix: [payroll] 전표 생성 시 기타공제 누락 수정 및 에러 모달 추가
- 기타공제(deductions JSON) 항목을 대변 207 예수금에 반영
- 차대 불균형 시 상세 분개 내역을 에러 모달로 표시
- toast 대신 복사 가능한 모달로 에러 메시지 표시
2026-03-10 11:30:27 +09:00
김보곤
550fba5cb2 fix: [payroll] 급여명세서 이메일 발송 시 개인 이메일 우선 참조
- 개인 이메일이 있으면 개인 이메일로 발송
- 개인 이메일이 없으면 업무용 이메일로 폴백
- 목록의 이메일 모달에서도 동일 로직 적용
2026-03-10 10:57:46 +09:00
김보곤
50275b0500 feat: [employee] 사원관리 개인 이메일 필드 추가
- 사원 수정 폼에 개인 이메일 입력 필드 추가
- 레이아웃 2x2 배열로 변경 (업무용 이메일|개인 이메일 / 주민등록번호|연락처)
- Employee 모델에 personalEmail accessor 추가
- 컨트롤러 validation, 서비스 jsonExtraKeys에 personal_email 반영
2026-03-10 10:04:24 +09:00
김보곤
26d081d04e fix: [journal] 전표 거래처 검색 limit(50) 제거 — 전체 활성 거래처 로드 2026-03-10 09:53:48 +09:00
김보곤
13ee95270e feat: [payroll] 급여명세서 이메일을 PDF 첨부파일로 변경
- 이메일 본문에 급여 내역 직접 노출 → PDF 첨부파일로 전환 (보안 강화)
- barryvdh/laravel-dompdf 패키지 추가
- 이메일 본문은 간단한 안내 메시지로 변경
- dompdf에서 한글 렌더링을 위해 Noto Sans KR 폰트 적용
2026-03-10 09:11:46 +09:00
김보곤
d948366c2a feat: [payroll] 이메일 발송 후 '발송' 라벨 표시 기능
- payrolls 테이블 options JSON에 email_sent_at/email_sent_to 저장
- 이메일 아이콘 아래 '발송' 텍스트 표시 (서버 렌더링 + JS 즉시 반영)
- Payroll 모델에 options 컬럼 추가
2026-03-10 01:20:25 +09:00
김보곤
ca0473d541 feat: [payroll] 급여명세서 이메일 발송 기능 추가
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
2026-03-10 01:06:21 +09:00
김보곤
60669ffdd5 feat: [hr] 연차촉진 관리에 1차/2차 촉진기간 컬럼 추가
- 근로기준법 제61조 기준 입사일 기반 촉진기간 자동 계산
- 1차 촉진기간: 연차만료 6개월 전 ~ +10일
- 2차 촉진기간 마감: 연차만료 2개월 전
- 잔여일수 다음에 촉진기간 표시
2026-03-10 00:37:10 +09:00
김보곤
512f01bea6 feat: [hr] 휴가관리 참조자 선택 기능 추가
- 휴가 신청 모달에 참조자 검색/선택 UI 추가 (Alpine.js)
- 부서별 사용자 목록에서 참조자 검색 및 녹색 칩 표시
- LeaveController 참조 배열 유효성 검증 추가
- LeaveService에서 결재선 steps에 참조자 자동 병합
2026-03-10 00:09:09 +09:00
김보곤
fff45cf707 fix: [hr] 급여관리 접근 권한 사용자 변경 (이경호 → 이의찬) 2026-03-10 00:00:01 +09:00
김보곤
051707c1be 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:13 +09:00
김보곤
c84c8894be feat: [database] Equipment 하위 4개 모델 codebridge connection 추가
- EquipmentInspection, EquipmentInspectionDetail, EquipmentInspectionTemplate, EquipmentRepair
- equipments 테이블과 FK 참조 관계 → 동일 DB(codebridge)에서 관리
2026-03-09 20:57:49 +09:00
김보곤
b831979153 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:04 +09:00
김보곤
888e810d31 fix: [finance] 거래처 등록 필수값 개선 (거래처명+사업자번호만 필수)
- 백엔드: bizNo 필수 검증 추가, trade_type/status null-safe 처리
- 프론트엔드: 사업자번호 필수 검증 + 라벨에 * 표시 추가
- 나머지 필드 비어있어도 저장 가능하도록 NOT NULL 컬럼 기본값 보장
2026-03-09 10:54:07 +09:00
김보곤
f855da6c71 fix: [finance] 거래처 등록/수정 시 NOT NULL 컬럼 기본값 누락 수정
- type, category 컬럼이 NOT NULL인데 빈 값 전달 시 null 변환되어 DB 오류 발생
- store: null 대신 DB 기본값(vendor, 기타) 적용
- update: null 대신 기존 값 유지
2026-03-09 10:49:47 +09:00
김보곤
48a8dd9cf4 feat: [rd] 방화셔터 도면생성 기능 구현
- 4탭 구성: 설정 / 가이드레일 / 셔터박스 / 3D 렌더링
- 가이드레일 C-채널 SVG 단면도 (횡단면/정면도)
- 셔터박스 SVG 단면도 (정면/측면, 내부 부품 ON/OFF)
- Three.js 3D 조립체 렌더링 (셔터 개폐 애니메이션, 투명도, 부품 토글)
- DXF/PNG/JSON 내보내기, localStorage 프리셋 관리
- 제품 유형별(강판/스크린) 기본값 자동 적용
2026-03-08 19:30:05 +09:00
김보곤
b5cec674b1 feat: [rd] 자동도면 생성 메뉴 추가
- 레거시 전개도 시뮬레이터를 MNG 환경으로 마이그레이션
- RdController에 autoDrawing 메서드 추가 (HX-Request 체크 포함)
- 라우트: GET /rd/auto-drawing
- R&D 대시보드에 자동도면 생성 카드 추가
- 레거시 PHP 코드 제거 (세션, API키, 서버기록 등)
- Three.js 3D 렌더링, SVG 미리보기, DXF 도면 생성 기능 유지
2026-03-08 17:53:48 +09:00
김보곤
9b7362fa4f fix: [sound-logo] 음성 카테고리 기반 선택으로 재구성
- 여성/남성/아이 카테고리 탭으로 1차 분류 (성별 확실한 전달)
- 공식 문서 기반 음성 성별 정보 수정 (Gacrux=여성, Sadachbia=남성 등)
- 아이 카테고리: 젊은 음성 + 'young child, high-pitched' Director's Note 지시문
- 스타일 옵션에서 아이/청소년 제거 (카테고리로 이동)
- 프롬프트 형식을 Director's Note 형식으로 개선
2026-03-08 14:12:57 +09:00
김보곤
0e86636354 feat: [sound-logo] 아이 목소리 옵션 + 말하기 속도 조절 추가
- 스타일 옵션에 어린이(5~7세), 초등학생(8~12세), 청소년(13~18세) 추가
- 말하기 속도 슬라이더 추가 (매우느리게~매우빠르게 5단계)
- 속도와 스타일을 TTS 프롬프트 지시문으로 조합하여 Gemini API에 전달
- 음성 목록 여성/남성/중성 순서로 정렬
2026-03-08 14:05:22 +09:00
김보곤
64b3ad2b59 feat: [sound-logo] TTS 음성 옵션 확장 + 잡음 문제 수정
- PCM 디코딩 endianness 수정 (big-endian → little-endian, Gemini TTS는 s16le)
- 16종 음성 선택 옵션 추가 (남성/여성/중성, 성격 설명)
- 9종 발화 스타일 옵션 추가 (밝고 활기차게, 차분하고 신뢰감 등)
- 음성/스타일을 컨트롤러에 전달하여 Gemini API에 적용
- 기본 텍스트: '우리들의 솔루션 쌤, 쌤, 쌤'
2026-03-08 13:58:48 +09:00
김보곤
f8a00c3f8c feat: [rd] AI 배경음악 생성 기능 추가 (Google Lyria RealTime)
- Lyria RealTime WebSocket 연동으로 다중 악기 배경음악 실시간 생성
- BPM, 밀도, 밝기, 스케일 컨트롤 지원
- 시퀀서 + 음성 + 배경음악 3중 합성 (playAll, exportWav)
- 서버 API 키 보호 엔드포인트 (lyria-config)
- 빠른 프롬프트 10종 제공
2026-03-08 13:37:25 +09:00
김보곤
d02c142f65 feat: [rd] 사운드로고/나레이션 AI 토큰 사용량 기록 추가
- RdController: 사운드로고-AI생성, 사운드로고-TTS 토큰 기록
- CmSongController: 나레이션-가사생성, 나레이션-TTS 토큰 기록
- AI 토큰 사용량 UI에 사운드로고/나레이션 카테고리 분류 추가
2026-03-08 12:57:29 +09:00
김보곤
e7f81cb063 fix: [rd] TTS 500 에러 수정 및 AI 응답 파싱 개선
- 짧은 텍스트(4자 미만) TTS 요청 시 따옴표 래핑으로 Gemini TTS 인식률 개선
- TTS API 에러 시 실제 에러 메시지 반환 (기존: 일괄 500)
- AI 생성 temperature 0.9→0.7, maxOutputTokens 2048→4096으로 응답 안정성 개선
- 프롬프트에 name/desc 길이 제한 추가하여 JSON 잘림 방지
2026-03-08 12:51:08 +09:00
김보곤
301369bb37 feat: [sound-logo] TTS 음성 오버레이 기능 추가
- Gemini TTS API 연동 (한국어 Kore 음성)
- 사이드바에 음성 오버레이 컨트롤: 텍스트 입력, 시작 시점, 볼륨
- 재생/WAV 내보내기 시 신스 + 음성 자동 합성
- POST /rd/sound-logo/tts 엔드포인트 추가
- L16 PCM → AudioBuffer 디코더 구현
2026-03-08 12:44:05 +09:00
김보곤
75dbe2910a feat: [sound-logo] Phase 2 AI 어시스트 모드 추가
- Gemini API 연동: 프롬프트 → 음표 시퀀스 JSON 자동 생성
- AI 탭 UI: 프롬프트 입력, 카테고리/길이 선택, 빠른 프롬프트 10종
- AI 결과 미리보기: 음표 시각화, 미리듣기, 시퀀서 로드
- POST /rd/sound-logo/generate 엔드포인트 추가
2026-03-08 12:34:42 +09:00
김보곤
d81c5f4a6f feat: [rd] 사운드 로고 생성기 Phase 1 MVP 구현
- Web Audio API 기반 사운드 합성 엔진
- 4종 신스(sine/square/triangle/sawtooth) + ADSR 엔벨로프
- 노트 시퀀서 UI (비주얼 바 + 드롭다운 편집)
- 10종 프리셋 (알림, 로고, 시작음, 성공 등)
- WAV 내보내기, JSON import/export, localStorage 저장
2026-03-08 12:15:32 +09:00
김보곤
d9c808b928 feat: [rd] 디자인 인사이트 메뉴 Phase 1 MVP 구현
- GET /rd/design-insight 라우트 + 컨트롤러 추가
- Alpine.js 단일 파일 SPA (localStorage 기반)
- 4종 카드: 레퍼런스, 분석(CRAP), 패턴, Before/After
- 3종 뷰: 보드, 갤러리, 리스트
- Ctrl+V 클립보드 이미지 붙여넣기
- 프로젝트 CRUD, 태그/카테고리 필터, 검색
- JSON 내보내기/가져오기
2026-03-08 09:55:36 +09:00
김보곤
64ab20becf feat: [rd] 기획디자인 플래닝 캔버스 페이지 추가
- 연구개발 > 기획디자인 메뉴 라우트/컨트롤러/뷰 추가
- Alpine.js 기반 캔버스 도구 (노드 배치, 연결, 줌/팬)
- 16종 노드 타입 (기획/분석/구조/산출물 카테고리)
- 타임라인/플로우 뷰 모드, 프로젝트 저장/불러오기
- 실행취소/재실행, 키보드 단축키 지원
2026-03-07 22:06:06 +09:00