Commit Graph

1097 Commits

Author SHA1 Message Date
김보곤
dde0acad72 feat: [approval] 재직증명서 기안 기능 추가
- EmploymentCertService: 사원 정보 조회, DOCX 생성, 파일 레코드 생성
- API 엔드포인트: cert-info/{userId}, generate-cert-docx
- _certificate-form: 인적사항/재직사항/발급정보 입력 폼
- _certificate-show: 재직증명서 읽기전용 표시 파셜
- create/edit/show에 employment_cert 양식 분기 처리
- phpoffice/phpword 패키지 추가
2026-03-05 18:54:03 +09:00
김보곤
27f520d303 feat: [approval] 기안함 페이지 사이즈 선택, 체크박스 선택삭제 기능 추가
- 페이지당 표시 건수 선택 (15/50/100/200/500, 기본 15)
- 첫 번째 열 체크박스 추가 (전체선택/개별선택)
- 선택삭제 버튼 및 bulk-delete API 엔드포인트 추가
2026-03-05 17:23:31 +09:00
김보곤
b74c8f8930 fix: [hr] 잔여연차 탭에서 영업팀+제외 사원 필터링 적용 2026-03-05 17:08:55 +09:00
김보곤
add05c6546 fix: [approval] 영구삭제 File 모델 네임스페이스 오류 수정
- App\Models\File → App\Models\Commons\File 수정
2026-03-05 16:57:51 +09:00
김보곤
d0d5a7acd9 feat: [hr] 근태관리 영업팀 및 제외 사원 필터링 적용
- 근태 목록/통계/요약/초과근무에서 영업팀+제외 사원 제외
- 근태관리 부서 드롭다운에서 영업팀 제외
- 활성 사원 목록(드롭다운)에서 영업팀+제외 사원 제외
2026-03-05 16:54:44 +09:00
김보곤
b0f821423d fix: [approval] 영구삭제 시 첨부파일/하위문서 정리 및 에러 로깅 추가
- 첨부파일(files 테이블) soft delete 처리
- 하위 문서(parent_doc_id) 참조 해제
- DB 트랜잭션으로 원자성 보장
- catch 블록에 report() 추가로 에러 로깅
2026-03-05 16:51:13 +09:00
김보곤
86fce5e67f feat: [payroll] 엑셀 export에 추가공제 항목 동적 열 포함
- 전 사원의 deductions JSON에서 고유 항목명 수집
- 개인별 추가공제 항목을 동적 열로 확장 출력
- 추가공제 열 헤더 보라색, 데이터 영역 연보라 배경 구분
- 추가공제 없는 사원은 해당 열 0 표시
2026-03-05 16:29:09 +09:00
김보곤
975a90d1f8 feat: [approval] 기안함 작성자 열 추가 및 슈퍼관리자 영구삭제 기능
- 기안함 테이블에 작성자 열 추가
- 슈퍼관리자: 전체 기안문서 조회 + 영구삭제 버튼
- forceDestroy API 엔드포인트 추가 (연관 Leave/Steps 함께 삭제)
- 기안함에서 휴가신청 시 Leave 자동 생성 로직 추가
2026-03-05 16:22:11 +09:00
김보곤
a63b501964 feat: [approval] 기안함 휴가신청 → 휴가관리 연동
- 기안함에서 휴가/근태신청/사유서 양식 선택 시 전용 입력 폼 표시
- 양식코드별 유형 필터링 (leave/attendance_request/reason_report)
- saveApproval()에서 content에 구조화된 데이터 포함
- handleApprovalCompleted()에서 Leave 없을 시 자동 생성
- createLeaveFromApproval() 메서드 추가
2026-03-05 15:57:57 +09:00
김보곤
3f799308ed fix: [receivable] 거래처별 요약 거래건수에 입금 건수 포함되는 오류 수정
- transactionCount가 차변+대변 전체를 카운트하여 실제 매출 건수의 2배로 표시됨
- 차변(매출 발생) 건수만 카운트하도록 수정
2026-03-05 15:27:10 +09:00
김보곤
8af1647173 feat: [hr] 연차잔여 탭에 재직상태 필터 추가 (전체/재직자/퇴직자)
- 필터 기본값: 재직자 (active + leave)
- 퇴직자 선택 시 resigned만 표시
- 전체 선택 시 모든 상태 표시
2026-03-05 15:17:12 +09:00
김보곤
013df2592f feat: [hr] 사원관리 영업팀 제외 및 강제 제외 기능 추가
- 영업팀 포함 부서 사원 기본 제외 (외부직원)
- json_extra.is_excluded 플래그로 강제 제외/복원 토글
- 필터에 '제외 사원 표시' 체크박스 추가
- 제외 사원 시각적 구분 (주황 배경, 제외 뱃지)
2026-03-05 15:16:31 +09:00
김보곤
3bba48e443 refactor: [rd] CM송 → 나레이션 명칭 변경 + 결과 자동 스크롤
- 모든 UI 텍스트 CM송 → 나레이션으로 변경
- 버튼: 나레이션 제작
- 제작 시 결과 패널로 자동 스크롤
- 프롬프트, 다운로드 파일명, 저장 메시지 모두 변경
2026-03-05 14:51:22 +09:00
김보곤
446d0ff60b fix: [rd] CM송 저장 시 tenant_id를 session에서 가져오도록 수정 2026-03-05 14:48:17 +09:00
김보곤
272df31501 feat: [rd] CM송 길이 슬라이더, 다운로드, 저장/목록 기능 추가
- 10~60초 5초 간격 길이 선택 슬라이더
- 음성 파일 WAV 다운로드
- 생성 결과 DB 저장 + 목록/상세/삭제 관리
- CmSong 모델 + tenant 스토리지 연동
2026-03-05 14:37:29 +09:00
김보곤
0e9f1297b8 feat: [rd] AI CM송 제작 기능 추가
- Gemini API 기반 CM송 가사 생성 + TTS 음성 생성
- 연구개발 대시보드에 CM송 제작 카드 추가
- 서버사이드 API 프록시로 API 키 보호
2026-03-05 14:13:59 +09:00
김보곤
9727a092e6 feat: [approval] 반려 이력 관리 기능 추가
- rejection_history JSON 컬럼으로 반려 이력 누적 저장
- 재상신 시 반려자, 사유, 일시를 이력에 기록
- 상세 페이지에 반려 이력 섹션 표시 (빨간 테두리)
- 수정 페이지에 이전 반려 이력 표시 (주황 배경)
2026-03-05 13:51:16 +09:00
김보곤
5fd69830ca feat: [approval] 기안함/완료함/대기함에 재상신 구분 열 추가
- resubmit_count 필드로 재상신 횟수 추적
- 반려 후 재상신 시 카운트 증가
- 보라색 뱃지로 재상신/재상신(N차) 표시
2026-03-05 13:06:58 +09:00
김보곤
280367170a feat: [approval] 완료함 미읽음 알림 뱃지 기능 추가
- approvals 테이블에 drafter_read_at 컬럼 추가 (API 마이그레이션)
- 승인/반려/전결 완료 시 drafter_read_at = null 설정
- getBadgeCounts()에 completed_unread 카운트 추가
- 사이드메뉴 완료함에 미읽음 뱃지 표시 (주황색)
- 완료함 페이지 진입 시 일괄 읽음 처리
- 상세 페이지 열람 시 개별 읽음 처리
2026-03-05 11:38:05 +09:00
김보곤
dcbeafd92c fix: [approvals] 완료함에 기안자 본인의 완료 문서도 표시
- 기존: 결재자로 처리한 문서만 조회
- 수정: 내가 기안한 완료/반려/회수 문서 + 결재자로 처리한 문서 모두 조회
2026-03-05 11:08:17 +09:00
김보곤
8226552da5 feat: [approvals] 지출결의서 불러오기 기능 추가
- 기안 작성 시 '불러오기' 버튼으로 기존 지출결의서 불러오기
- 지출결의서 이력 API 엔드포인트 추가 (/expense-history)
- 선택한 지출결의서의 내용을 새 폼에 복사 (날짜는 오늘로 초기화)
2026-03-05 10:27:07 +09:00
김보곤
d431fc3637 fix: [approval] 파일 업로드 시 display_name 누락 오류 수정 2026-03-04 21:32:10 +09:00
김보곤
871b470ff2 fix: [approval] 법인카드 tenant_id 세션 조회, 하이패스카드 제외 2026-03-04 21:11:11 +09:00
김보곤
5c652e6b21 fix: [approval] 계좌 조회 tenant 중복조건 제거, 관리링크 모달 변경 2026-03-04 21:00:40 +09:00
김보곤
e006f25427 feat: [approval] 지출결의서 법인카드/송금 계좌 선택 기능
- 법인카드 선택 시 카드 목록 패널 슬라이드-다운 표시
- 송금 선택 시 출금 계좌 목록 표시, 대표계좌 자동 선택
- 선택된 카드/계좌 정보를 content JSON에 스냅샷 저장
- 상세 페이지에서 선택된 카드/계좌 정보 읽기전용 표시
2026-03-04 20:29:48 +09:00
김보곤
087ad1c7b9 feat: [approval] 지출결의서 첨부파일 업로드/다운로드 기능 추가
- 첨부파일 업로드 API (GCS 연동, 20MB 제한)
- 첨부파일 삭제/다운로드 API 추가
- 지출결의서 폼에 드래그&드롭 멀티 파일 업로드 UI 추가
- ApprovalService에 linkAttachments 메서드 추가 (is_temp 플래그 관리)
- show 페이지에 첨부파일 목록 표시 및 다운로드 링크
- 지출부서 기본값 '본사', 로그인 사용자 이름 자동입력, 제목 필드 제거
2026-03-04 20:08:16 +09:00
김보곤
9beda571a4 feat: [approval] 지출결의서 전용 폼 UI 추가
- Alpine.js 기반 지출결의서 전용 폼 컴포넌트 (_expense-form.blade.php)
- 지출형식/세금계산서 라디오, 내역 테이블(동적 행 추가/삭제), 금액 자동합계
- 양식 code === 'expense' 시 Quill 대신 전용 폼 표시 (create/edit)
- content JSON 구조화 저장, show 페이지 읽기전용 테이블 렌더링
- 기존 Quill 방식 하위 호환 유지
2026-03-04 15:14:42 +09:00
김보곤
25b6470555 feat: [approval] 결재선 드롭다운 직접 배치 및 양식 본문 자동 채움
- 새기안/수정 화면에 결재선 드롭다운 추가 (모달 없이 빠른 선택)
- 양식 선택 시 body_template HTML 자동 채움 (편집기 자동 활성화)
- 모달 닫을 때 외부 드롭다운 동기화
- ApprovalForm 모델 fillable에 body_template 추가
2026-03-04 14:19:18 +09:00
김보곤
a8b6a781bd fix: [eaccount] 부분 월 조회 시 무한루프 크래시 수정
- splitDateRangeMonthly()에서 endDate가 월 중간인 경우
  cursor가 같은 달 1일로 되돌아가 무한루프 발생
- cursor 이동 로직 수정: chunkEnd+1일→월초 대신 chunkStart+1월→월초
- 부분 월, 전체 월, 다중 월 모든 케이스 테스트 완료
2026-03-04 13:26:27 +09:00
김보곤
322442aef6 fix: [roadmap] 개발서버 문서 경로 설정 가능하도록 개선
- config/roadmap.php 추가 (ROADMAP_DOCS_BASE 환경변수)
- RoadmapController에서 config 기반 경로 사용
- 로컬: base_path('../docs') 기본값 유지
- 서버: .env에서 ROADMAP_DOCS_BASE 설정
2026-03-04 13:21:56 +09:00
김보곤
1da6ae7841 fix: [barobill] 전체 바로빌 컨트롤러 WSDL 캐싱 활성화
- EcardController, HometaxController, EtaxController
- WSDL_CACHE_NONE → WSDL_CACHE_BOTH (불필요한 WSDL 재다운로드 방지)
2026-03-04 13:16:15 +09:00
김보곤
94ae19e14a fix: [eaccount] SOAP 호출 크래시 방지 — WSDL 캐싱 + 소켓 타임아웃 + 진단 로깅
- WSDL_CACHE_NONE → WSDL_CACHE_BOTH (매 요청 WSDL 재다운로드 방지)
- default_socket_timeout 60→120초 연장
- register_shutdown_function으로 Fatal Error 감지/로깅
- callSoap에 SOAP 호출 소요시간 로깅 추가
2026-03-04 13:14:59 +09:00
김보곤
367b81d504 fix: [eaccount] 운영서버 500 에러 디버깅 — set_time_limit 안전 처리 + 상세 에러 메시지 2026-03-04 13:03:48 +09:00
김보곤
d77b9615b3 fix: [journal] 계좌 출처 전표 일반전표에서 수정 허용
- 카드/세금계산서 출처 → 잠금 유지 (원본에서 수정)
- 계좌(bank_transaction) 출처 → 일반전표에서 수정 허용
- 프론트엔드 UI + 백엔드 update 메서드 동시 수정
2026-03-04 12:42:47 +09:00
김보곤
fc63ea80ff fix: [eaccount] 12월분 조회 타임아웃 오류 수정
- PHP set_time_limit(120) 추가 (SOAP 다건 호출 시 기본 30초 초과 방지)
- 프론트엔드 응답 상태/빈 응답 체크 추가 (에러 원인 구체화)
2026-03-04 12:39:49 +09:00
김보곤
4a72368107 fix: [payables] JournalEntry 모델 use 문 누락 수정 2026-03-04 11:17:10 +09:00
김보곤
f5e7e6c2a8 fix: [payables] 전표 삭제 500 에러 수정
- Accept: application/json 헤더 추가 (HTML 응답 방지)
- findOrFail → find + 수동 404 처리 (에러 메시지 개선)
- try-catch 추가로 상세 에러 메시지 반환
2026-03-04 11:15:05 +09:00
김보곤
32e680dce8 feat: [payables] 미지급금관리 전표 삭제 기능 추가
- 일반전표 상세 행에 삭제 버튼(휴지통 아이콘) 추가
- DELETE /finance/payables/journal-entry/{id} API 추가
- journal_entry_id 필드를 프론트에 전달하도록 쿼리 수정
- 삭제 후 데이터 자동 새로고침
2026-03-04 11:02:27 +09:00
김보곤
4ecd34e767 feat: [ecard] 변경사항 저장 시 기존 분개 금액 자동 갱신
- 카드 금액 수정 후 저장 시 기존 분개의 차변/대변 금액도 연동 갱신
- 공제/불공제 유형별 라인 구조 보존하면서 금액만 업데이트
- 기존 계정과목, 적요, 거래처 정보 유지
2026-03-04 10:23:33 +09:00
김보곤
ed2ac18518 feat: [china-tech] 중국의 기술도약 > 5대 신흥빅테크 페이지 추가
- BigTechController 생성 (HX-Redirect 패턴 적용)
- 5개 탭 UI 구현 (첫 번째 탭: 천텐스, 캄브리콘 AI 반도체 분석)
- Chart.js 차트 3개 (주가, 매출 비중, 성능 레이더)
2026-03-04 09:31:08 +09:00
김보곤
9f45a82940 feat: [hr] 슈퍼관리자 근태/신청 삭제 및 영구삭제 기능 추가
- AttendanceService: forceDeleteAttendance 메서드 추가
- LeaveService: deleteLeave(모든 상태), forceDeleteLeave 메서드 추가
- Controller: force 파라미터 + 슈퍼관리자 권한 분기
- 근태 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
- 신청 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
2026-03-04 00:15:56 +09:00
김보곤
36add4d889 feat: [hr] 근태등록 + 휴가관리 통합 시스템 구현
- Leave 모델 확장: 6개 유형 추가 (출장/재택/외근/조퇴/지각사유서/결근사유서)
- LeaveService: 유형별 결재양식 자동 선택, 유형별 Attendance 반영 분기
- ApprovalService: 콜백 3개 결재양식코드로 확장
- AttendanceIntegratedController: 통합 화면 컨트롤러
- 통합 UI: 근태현황/신청결재/연차잔여 3탭 + 신규 신청 드롭다운
- AttendanceRequest 모델/서비스/컨트롤러/뷰 삭제 (Leave로 일원화)
- AttendanceService: deductLeaveBalance 제거 (Leave 시스템으로 일원화)
2026-03-03 23:52:41 +09:00
김보곤
511bfa3ec5 feat: [leave] 휴가 신청 시 결재선 선택 기능 추가
- 휴가 신청 모달에 결재선 드롭다운 + 미리보기 UI 추가
- 선택된 결재선으로 결재 생성 (미선택 시 기본결재선 fallback)
- 휴가 목록에 결재진행 컬럼 추가 (원형 아이콘: ✓승인/✗반려/숫자대기/파랑현재)
- approval.steps.approver eager load 추가
2026-03-03 22:36:30 +09:00
김보곤
81b64f25aa feat: [hr] 사원관리 퇴직자 영구삭제 기능 추가
- 슈퍼관리자만 퇴직 상태 사원을 영구삭제 가능
- 관련 첨부파일도 함께 삭제
- DELETE /admin/hr/employees/{id}/force 엔드포인트 추가
2026-03-03 21:46:56 +09:00
김보곤
614cbaef15 fix: [eaccount] 계좌 입출금내역 적요 중복 표시 수정
- BankTransaction::cleanSummary() 메서드 추가: 상대계좌예금주명(cast) 중복 제거
- parseTransactionLogs: 적요 표시 시 remark2 중복 제거 적용
- cacheApiTransactions: DB 저장 시에도 중복 제거 적용
- 기존 DB 데이터 45건 정리 완료
2026-03-03 21:11:52 +09:00
김보곤
9b36052a8f fix: [user] 사용자 영구삭제 시 FK 제약 위반 500 에러 수정
- users.id를 참조하는 모든 FK를 information_schema에서 동적 조회
- NULLABLE FK → NULL 설정, NOT NULL FK → 관련 행 삭제
- 기존 5개 테이블만 처리하던 것을 전체 FK 대응으로 확장
2026-03-03 19:58:07 +09:00
김보곤
8762882b54 fix: [hr] 사업소득자 임금대장 행 삭제 후 일괄저장 실패 수정
- 모든 행 삭제 시 "저장할 데이터가 없습니다" 오류 → 확인 후 서버 전송으로 변경
- 백엔드 validation: required|array → present|array (빈 배열 허용)
- 서버의 orphan draft 자동 삭제 로직이 정상 동작하도록 수정
2026-03-03 19:30:41 +09:00
김보곤
25795f8612 feat: [ai-quotation] 제조 견적서 자동 생성 기능 추가
- AI 2단계 분석: 고객 인터뷰 → 요구사항 추출 → 견적 산출
- 모델 확장: AiQuotation(모드/견적번호), AiQuotationItem(규격/단가/금액)
- AiQuotePriceTable 모델 신규 생성
- Create 페이지: 모듈/제조 모드 탭, 제품 카테고리, 고객 정보 입력
- Show 페이지: 제조 모드 분기 렌더링 (품목/금액/고객정보)
- Edit 페이지: 품목 인라인 편집, 할인/부가세/조건 입력
- Document: 한국 표준 제조업 견적서 양식 템플릿
- Controller/Route: update 엔드포인트, edit 라우트 추가
2026-03-03 15:58:16 +09:00
김보곤
6a5976cc5d feat: [journal] 카드/은행 출처 전표 읽기 전용 적용
- update() 메서드에 source_type 가드 추가 (403 반환)
- 통합 목록에서 카드/은행 분개완료 행에 잠금 아이콘 표시
- handleEditEntry에 출처 전표 방어 가드 추가
- show() 응답에 source_type 필드 추가
2026-03-03 14:54:49 +09:00
김보곤
2ac4c188d5 feat: [hr] 사업소득자 임금대장 동적 행 입력 리디자인
- earner 고정 행 → 동적 행 추가/삭제 구조로 변경
- 상호/성명 datalist 콤보박스 (드롭다운 선택 + 직접 입력)
- display_name/business_reg_number 컬럼 직접 저장
- bulkSave: payment_id 기반 upsert + 미제출 draft 자동 삭제
- confirmed/paid 행 수정/삭제 불가 유지
- 엑셀 내보내기 display_name 직접 사용으로 단순화
2026-03-03 14:21:06 +09:00