Commit Graph

1235 Commits

Author SHA1 Message Date
김보곤
1ee4a0095c feat: [finance] 일반전표 목록에서 관리자 삭제 기능 추가
- 목록 행에 삭제 아이콘 추가 (수정 아이콘 옆, 관리자에게만 표시)
- 컨트롤러 destroy()에 관리자 권한 검증 추가
- 은행거래/수동전표 모두 삭제 가능
2026-03-17 13:24:18 +09:00
김보곤
9f20922636 refactor: [finance] 계정과목 카테고리를 API 영문 표준으로 통일
- AccountCode 모델에 API와 동일한 필드 추가 (sub_category, parent_code, depth 등)
- 카테고리 상수 정의 (CATEGORY_ASSET 등)
- 블레이드 뷰에서 영문 카테고리 키 + 한글 라벨 매핑 적용
2026-03-17 11:07:01 +09:00
김보곤
a3c09659bc fix: [finance] 계정과목 설정 모달 중복 코드 조회 수정
- AccountCode 모델에 BelongsToTenant trait 추가하여 테넌트별 필터링 적용
- accountCodeStore에서 하드코딩된 tenant_id를 세션 기반으로 변경
2026-03-17 09:29:18 +09:00
김보곤
aec7528191 feat: [dashboard] 달력 휴가 표시에 사유 추가 2026-03-17 08:25:55 +09:00
김보곤
a70a3f5b8b feat: [dashboard] 달력에 승인된 휴가/근태 표시 기능 추가
- Leave 모델에서 승인된 휴가 데이터 조회
- 달력에 [연차] 홍길동 형태로 휴가 표시
- 휴가 유형별 색상 구분 (연차/반차: amber, 병가/경조사: pink, 출장/외근: blue 등)
2026-03-16 21:29:18 +09:00
김보곤
a30b5b27a1 feat: [finance] 일일업무일지 기간 보기 기능 추가
- 시작일~종료일 설정하여 기간 내 업무일지 한번에 조회
- 데이터 없는 날짜는 자동 필터링 (작성된 일지만 표시)
- 카드형 읽기 뷰 (날짜/항목/메모/회고/달성률)
- 편집 버튼으로 단건 모드 전환 가능
2026-03-16 16:33:29 +09:00
김보곤
d5ef117afa fix: [daily-work-log] 파일 저장 정책 준수 (docs 기준)
- 경로: {tenant_id}/daily-work-log/{year}/{month}/{hex}.ext 형식으로 변경
- 파일명: UUID → 64bit 난수 hex (bin2hex(random_bytes(8)))
- 최대 크기: 10MB → 20MB (file-storage-guide.md 기준)
2026-03-16 16:05:08 +09:00
김보곤
d9f0d3ffbf feat: [daily-work-log] 메모/회고 파일 업로드 기능 추가
- 메모, 회고 섹션에 파일 첨부 기능 추가
- 드래그앤드롭 및 클릭 업로드 지원
- 이미지 썸네일 미리보기, 파일 다운로드/삭제
- Boards\File 모델 재사용 (document_type: daily_work_log)
2026-03-16 16:05:08 +09:00
김보곤
b1dae9d24d fix: [leave] 결재 승인 시 soft delete된 근태 레코드 중복 오류 수정
- SoftDeletes로 삭제된 Attendance 레코드가 있을 때 updateOrCreate가
  기존 레코드를 찾지 못해 INSERT 시도 → unique 제약 위반 발생
- withTrashed() 추가하여 soft delete된 레코드도 조회하고 복원하도록 수정
2026-03-16 15:35:50 +09:00
김보곤
c8d994a225 feat: [mng] develop 일괄 반영
- fire-shutter 가이드레일/셔터박스/3D 렌더링
- sales 가격시뮬레이터/프로모션 할인
- bim 뷰어/생성기, pmis 작업일보/출면일보
- demo-tenant 체험 관리
- 전표/급여/전자서명 버그 수정
2026-03-16 15:07:47 +09:00
김보곤
610de5d97d feat: [finance] 일일업무일지 기능 추가
- 마이그레이션: daily_work_logs, daily_work_log_items 테이블 생성
- 모델: DailyWorkLog, DailyWorkLogItem (멀티테넌트, SoftDeletes)
- 컨트롤러: CRUD + 완료토글 + 이전일지 복사
- 뷰: React(Babel) 기반, 날짜 화살표 네비게이션, 달성률 표시
- 라우트: finance/daily-work-log 하위 API 라우트
2026-03-13 18:52:49 +09:00
김보곤
1b300b67a9 fix: [esign] 근로계약서 연봉계약종료연도 및 연봉 상세내역 자동반영
- 연봉계약 기간: salary_effective_date 없을 때 입사일 기념일 기준
  현재 계약기간 산출 (직전 기념일~다음 기념일-1일)
- API 응답에 기본급, 고정연장근로수당, 식대, 월급여, 통상시급 추가
- labelMap에 기본급, 고정연장근로수당, 식대, 통상시급 패턴 추가
2026-03-13 18:05:50 +09:00
김보곤
03a9840fc7 feat: [pmis] 작업일보 6탭 CRUD 구현
- 마스터 + 인원/장비/자재/공사량/작업사진 6테이블 마이그레이션
- 6개 탭: 작업내용, 인원, 장비, 자재, 공사량, 작업사진
- 작업내용: 금일/명일 텍스트 + 날씨/기온/강수/미세먼지 메타
- 전일누계 + 금일 + 총계 누적 패턴 (인원/장비/자재/공사량)
- 작업사진: 파일 업로드 + 사진목록/사진정보 2단 레이아웃
- 상태별 버튼 제어 (작성중→저장/삭제, 검토중→읽기전용)
- 양식보기: 3페이지 전체화면 뷰어 (작업일보/인원장비/자재)
- 검토자 지정 모달, 캘린더 스트립, 번개 랜덤데이터
2026-03-13 08:12:31 +09:00
김보곤
267255bbe6 feat: [pmis] PMIS 자료실/안전관리/품질관리 기능 추가 및 개선
- 자료실 하위 3개 메뉴: 자료보관함, 매뉴얼, 공지사항
- 자료보관함: 폴더 트리 + 파일 업로드/다운로드/삭제
- 매뉴얼/공지사항: 게시판형 CRUD + 첨부파일
- 안전관리: 안전보건교육, TBM현황, 위험성평가, 재해예방조치
- 품질관리: 시정조치 UI 페이지
- 대시보드: 슈퍼관리자 전용 레거시 사이트 참고 카드
- 작업일보/출면일보 오류 수정 및 기능 개선
- 설비 사진 업로드, 근로계약서 종료일 수정
2026-03-12 21:12:46 +09:00
김보곤
93a37d9ccc feat: [pmis] 출면일보 CRUD 구현
- 일별 출면일보 마스터 + 인원/장비 3테이블 마이그레이션
- 캘린더 스트립 (1~31일) 날짜 선택 및 상태 닷 표시
- 인원/장비 탭 CRUD (추가/수정/삭제/번개 랜덤데이터)
- 검토자 확인 모달 (조직도 + 검색 + 검토라인)
- 양식보기 모달 (출면일보/장비일보 인쇄 양식)
- 날씨/특이사항/상태 업데이트 API
2026-03-12 16:44:34 +09:00
김보곤
1bd5ba817a feat: [pmis] 공사량관리 CRUD 구현
- pmis_work_volumes 마이그레이션/모델/컨트롤러 생성
- 공사량 탭 (등록, 수정, 삭제, 일보적용 토글)
- 실적현황 탭 (전일누계, 금일, 총계 표시)
- 공사량정보 모달 (공종, 세부공종, 단위, 설계량)
- 번개 아이콘 랜덤 데이터 추가 기능
2026-03-12 15:59:51 +09:00
김보곤
304c689c00 fix: [hr] 월 고정연장근로시간 최대값 52시간으로 제한 2026-03-12 14:39:08 +09:00
김보곤
38002c3c50 feat: [pmis] 자재관리 CRUD 구현
- 자재등록 탭: 등록/수정/삭제, 페이지네이션, 검색, 필터
- 입고현황 탭: 자재 목록 기반 입고 현황 조회
- 기준자재정보 모달: 30종 건설자재 선택 등록
- 번개 아이콘 랜덤 데이터 등록 기능
2026-03-12 14:37:45 +09:00
김보곤
de6ef7472a feat: [hr] 사원 연봉 등록 시 급여 산정 테이블 추가
- 고정연장근로수당 산정 계산 로직 구현 (기본급, 통상시급, 고정OT 자동 계산)
- 수정 모드에서 실시간 급여 산정 미리보기 테이블
- 조회 모드에서 요약/상세 급여 산정 내역 표시
- 식대, 월 고정연장근로시간 입력 필드 추가
- 계산 결과를 salary_info에 저장하여 급여관리에서 활용 가능
2026-03-12 14:34:21 +09:00
김보곤
9889658caa feat: [pmis] 장비관리 실제 CRUD 구현
- PmisEquipmentController: 장비 CRUD API
- PmisEquipment 모델 추가
- 3개 탭: 장비등록(CRUD), 출역현황, 투입현황
- 장비정보 모달 (저장/수정/삭제)
- API 라우트 추가 (equipments)
2026-03-12 14:13:38 +09:00
김보곤
babccc0f23 feat: [pmis] 인원관리 실제 CRUD 구현
- PmisWorkforceController: 인원/직종 CRUD API
- PmisConstructionWorker, PmisJobType 모델 추가
- 인원등록 탭: 실제 DB CRUD, 페이지네이션, 필터, 모달
- 직종 44개 시드 데이터 등록
- API 라우트 추가 (workers, job-types)
2026-03-12 14:02:54 +09:00
김보곤
c8fd3e2739 feat: [pmis] 시공관리 하위메뉴 6개 추가 및 인원관리 페이지 구현
- 시공관리 하위메뉴: 인원관리, 장비관리, 자재관리, 공사량관리, 출면일보, 작업일보
- 인원관리 4개 탭 구현: 인원등록, 출역현황, 투입현황(업체별), 투입현황(근로자별)
- PMIS 사이드바에 시공관리 children 메뉴 추가 (대시보드, BIM 뷰어 포함)
- 나머지 5개 메뉴 placeholder 페이지 생성
2026-03-12 13:52:20 +09:00
김보곤
953cadfd99 feat: [pmis] BIM 뷰어 3D 프로토타입 구현
- Three.js 기반 3D 건물 모델 뷰어
- 기둥/보/벽/창/지붕 등 요소별 색상 구분 및 클릭 선택
- 시점 전환(투시도/정면/우측/상부/배면), 요소 토글, 와이어프레임
- PMIS 사이드바 아코디언 메뉴 + BIM 뷰어 링크 추가
2026-03-12 12:39:15 +09:00
김보곤
dbab583e5a feat: [pmis] PmisWorker 모델 분리 및 개인정보 관리 개선
- pmis_workers 전용 모델 생성 (SAM 사원관리와 분리)
- 프로필 API 응답 worker 키로 변경
- 직책/소속업체 편집 기능 추가
- React 컴포넌트 data.user → data.worker 전환
2026-03-12 12:22:55 +09:00
김보곤
bafc40e43d feat: [juil] 건설PMIS 좌측 사이드바 및 개인정보 관리 모달 구현
- PMIS 전용 좌측 사이드바 (사용자 프로필 + 네비게이션 메뉴)
- 개인정보 관리 모달 (보기/수정 모드 전환)
- 연락처, 이메일, 성별 편집 및 서버 저장 기능
- 프로필 조회/수정 JSON API 엔드포인트 추가
- 3컬럼 레이아웃 (좌측 사이드바 + 대시보드 + 우측 퀵메뉴)
2026-03-12 11:17:19 +09:00
김보곤
85c1a8acbe feat: [juil] 건설PMIS 날씨 위젯 WeatherService API 연동
- 기존 대시보드 WeatherService를 활용한 JSON API 추가
- React 날씨 위젯에서 /juil/construction-pmis/weather 호출
- 기상청 API 기반 오늘/내일 날씨, 기온, 강수확률 표시
- Blade weather-icon과 동일한 SVG 아이콘 React 컴포넌트 구현
2026-03-12 11:09:06 +09:00
김보곤
21b8fcdde8 feat: [juil] 건설PMIS 페이지 및 업무 Flow 모달 추가
- 건설PMIS 메뉴 페이지 생성 (construction-pmis.blade.php)
- 업무 Flow 보기 버튼 → 모달창 4개 탭 구현
- KCC KOUP 업무 Flow 이미지 4장 포함
- PlanningController에 constructionPmis 메서드 추가
2026-03-12 10:47:33 +09:00
김보곤
da1acc9d1e fix: [payroll] 급여등록 사원선택에서 영업팀(외주) 제외 2026-03-12 09:56:46 +09:00
김보곤
a0ba7fc13f feat: [email] 테넌트 이메일 설정 관리 기능 추가
- TenantMailConfigController: 목록, 편집, 저장, SMTP 테스트 API
- TenantMailConfig, MailLog 모델 추가
- SmtpConnectionTester: SMTP 연결 테스트 서비스 (에러 코드, 트러블슈팅)
- TenantMailService: 테넌트 설정 기반 메일 발송 (쿼터, Fallback)
- config/mail-presets.php: Gmail/Naver/MS365 등 8개 SMTP 프리셋
- Blade 뷰: 테넌트 목록 현황 + 설정 폼 (프리셋 자동 채움, 연결 테스트)
- 라우트 추가: /system/tenant-mail/*
2026-03-12 07:42:17 +09:00
김보곤
3fc4c10593 feat: [payroll] 개발서버 슈퍼관리자 급여관리 접근 허용
- 운영서버: 기존 3인(이의찬, 전진선, 김보곤)만 접근 가능 (변경 없음)
- 개발서버/로컬: 슈퍼관리자도 급여관리 전체 접근 가능 (조회+수정)
- 적용 대상: 급여관리, 사업소득자 임금대장, 연봉 정보
2026-03-11 20:44:26 +09:00
김보곤
a3de440cd2 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:10 +09:00
김보곤
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
김보곤
eab39e0b29 feat: [hr] 사원관리 연봉정보 탭 생성
- 사원 상세/수정 페이지에 연봉정보 입력 섹션 추가
- 특수 권한 사용자만 열람/수정 가능한 접근 제어 적용
- 연봉 변경 시 자동 이력 기록
- 일반 API 응답에서 연봉 데이터 노출 방지 (toArray 오버라이드)
2026-03-11 16:27:49 +09:00
김보곤
58991e352e feat: [esign] 근로계약서 사원 불러오기 시 주소, 생년월일, 계약일 자동 반영
- 주민등록번호에서 출생년도/월/일 분리 (세기 자동 판별)
- 입사일 기반 계약일, 근로계약시작일, 연봉계약시작일 자동 반영
- 연봉계약종료일은 입사일 + 1년으로 계산
- 사원 주소, 계약자 이름 자동 매핑 추가
2026-03-11 16:18:37 +09:00
김보곤
2d3f915a30 fix: [barobill] 은행거래 동기화 시 중복 키 에러 수정
- summary 포함 WHERE와 DB unique index 불일치로 발생하는 duplicate entry 에러
- insert를 insertOrIgnore로 변경하여 중복 시 무시
2026-03-11 15:48:33 +09:00
김보곤
a97396df99 fix: [journal] 전표 적요 수정 시 자금일보에 반영되도록 동기화
- 은행거래 출처 전표의 적요 수정 시 BankTransactionOverride에 저장
- 기존 modified_cast 오버라이드 값 보존
2026-03-11 15:27:50 +09:00
김보곤
bb3ffc6085 feat: [esign] 사원 불러오기 기능 추가 및 랜덤 데이터 품질 개선
- 근로계약서 시 '사원 불러오기' 버튼으로 직원 검색/선택 기능
- fillRandomVariables 스마트 기본값 생성 (테스트_ 접두사 제거)
- searchEmployees API 엔드포인트 추가
2026-03-11 14:27:32 +09:00
김보곤
084e0f1ff6 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:05:59 +09:00
ee981d27d5 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:47:49 +09:00
8afd78c111 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:11 +09:00
5a6cd34a63 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:19:05 +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
김보곤
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