Commit Graph

873 Commits

Author SHA1 Message Date
김보곤
1d2876d90c feat: [leaves] 휴가-결재 연동을 위한 DB 변경
- leaves 테이블에 approval_id 컬럼 추가 (마이그레이션)
- 휴가신청 결재 양식(approval_forms) 등록 (마이그레이션)
- Leave 모델 fillable에 approval_id 추가
2026-02-28 15:55:30 +09:00
김보곤
bfb821698a feat: [approval] Phase 2 마이그레이션 추가
- approval_steps: parallel_group, acted_by, approval_type 컬럼 추가
- approvals: recall_reason, parent_doc_id 컬럼 추가
- approval_delegations 테이블 생성 (위임/대결)
2026-02-28 12:16:33 +09:00
김보곤
b80f4a0392 feat: [approval] 결재관리 Phase 1 마이그레이션
- approvals 테이블: line_id, body, is_urgent, department_id 컬럼 추가
- approval_steps 테이블: approver_name, approver_department, approver_position 스냅샷 컬럼 추가
2026-02-27 23:27:00 +09:00
김보곤
2ed90dc6db feat: [hr] 사업소득자 임금대장 테이블 마이그레이션 추가
- business_income_payments 테이블 생성
- 소득세(3%)/지방소득세(0.3%) 고정세율 구조
- (tenant_id, user_id, pay_year, pay_month) 유니크 제약
2026-02-27 20:28:01 +09:00
김보곤
347d351d9d feat: [esign] esign_contracts 테이블에 completion_template_name 컬럼 추가
- 완료 알림톡 템플릿명을 저장하기 위한 nullable string 컬럼
2026-02-27 16:32:52 +09:00
김보곤
87a8930c00 feat: [payroll] 근로소득세 간이세액표 DB 테이블 및 시더 추가
- income_tax_brackets 테이블 마이그레이션 생성
- 2024년 국세청 간이세액표 데이터 시더 (7,117건)
- salary_from/salary_to(천원), family_count(1~11), tax_amount(원)
2026-02-27 14:05:54 +09:00
김보곤
bbcb0205fe feat: [hr] 사업소득자관리 worker_type 컬럼 추가
- tenant_user_profiles 테이블에 worker_type 컬럼 추가 (employee/business_income)
- TenantUserProfile 모델 fillable에 worker_type 추가
2026-02-27 13:58:25 +09:00
9bf0cc8df2 fix: [cicd] 배포 승인 비활성화 + storage 권한 수정
- Production Approval stage 주석처리 (런칭 후 활성화)
- 배포 시 storage/bootstrap chown www-data:webservice + chmod 775 추가
- Stage/Production 모두 적용
2026-02-27 10:44:54 +09:00
김보곤
255fad99e7 feat: [payroll] payrolls 테이블에 long_term_care 컬럼 추가 2026-02-27 10:11:17 +09:00
김보곤
08b07c724a feat: [attendance] attendance_requests 테이블 마이그레이션 추가
- 근태 승인 워크플로우용 신청 테이블
- tenant_id, user_id, request_type, start_date, end_date, status 등
2026-02-27 09:36:21 +09:00
김보곤
91cdfe9917 feat: [equipment] files 테이블에 GCS 컬럼 추가
- gcs_object_name, gcs_uri 컬럼 추가
- 설비 사진 멀티 업로드 기능 지원
2026-02-27 09:36:11 +09:00
김보곤
10c09b9fea feat: [equipment] 설비관리 테이블 마이그레이션 6개 생성
- equipments (설비 마스터)
- equipment_inspection_templates (점검항목 템플릿)
- equipment_inspections (월간 점검 헤더)
- equipment_inspection_details (일자별 점검 결과)
- equipment_repairs (수리이력)
- equipment_process (설비-공정 피봇)
2026-02-27 09:36:11 +09:00
김보곤
04bb990045 feat: [calendar] 달력 일정 관리 API 구현
- GET /api/v1/calendar-schedules — 연도별 일정 목록 조회
- GET /api/v1/calendar-schedules/stats — 통계 조회
- GET /api/v1/calendar-schedules/{id} — 단건 조회
- POST /api/v1/calendar-schedules — 등록
- PUT /api/v1/calendar-schedules/{id} — 수정
- DELETE /api/v1/calendar-schedules/{id} — 삭제
- POST /api/v1/calendar-schedules/bulk — 대량 등록
2026-02-26 14:38:00 +09:00
7543054df3 fix: 세션 만료 예외를 슬랙 알림에서 제외
- '회원정보 정보 없음' AuthenticationException은 API Key 검증 통과 후 발생하므로 세션 만료 정상 케이스
- IP 기반 필터링(EXCEPTION_IGNORED_IPS) 대신 예외 자체를 무조건 제외하도록 단순화

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 21:29:57 +09:00
김보곤
13ba753b7f merge: develop를 main에 머지 (Jenkinsfile 충돌 해결) 2026-02-25 15:40:33 +09:00
김보곤
433f3ee4ad Merge branch 'develop' of http://114.203.209.83:3000/SamProject/sam-api into develop 2026-02-25 14:10:53 +09:00
fcb110a7ed chore: Slack 알림에 커밋 메시지 추가
- Checkout 단계에서 GIT_COMMIT_MSG 캡처 (git log -1 --pretty=format:'%s')
- checkout scm을 slackSend 이전으로 이동 (커밋 정보 먼저 획득)
- 빌드 시작, 승인 대기, 성공, 실패 모든 Slack 메시지에 커밋 제목 포함

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 12:52:23 +09:00
bb0615693e chore: Slack 알림에 커밋 메시지 추가
- Checkout 단계에서 GIT_COMMIT_MSG 캡처 (git log -1 --pretty=format:'%s')
- checkout scm을 slackSend 이전으로 이동 (커밋 정보 먼저 획득)
- 빌드 시작, 승인 대기, 성공, 실패 모든 Slack 메시지에 커밋 제목 포함

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 12:52:17 +09:00
0802bc172e ci:동시 빌드 방지 + 운영 배포 승인 Slack 알림 (#product_deploy)
- disableConcurrentBuilds() 추가
- Production Approval 단계에 #product_deploy 채널 알림 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:30:57 +09:00
c4bcab07c1 ci:운영 배포 승인 대기 Slack 알림 추가 (#product_deploy)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:30:49 +09:00
0a461c9209 ci:Jenkinsfile 동시 빌드 방지 옵션 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:24:39 +09:00
김보곤
3da8a16bfc feat: [business-card] ordered_by, ordered_at 컬럼 추가
- 3단계 워크플로우: 요청 → 제작의뢰 → 처리완료
2026-02-25 05:41:25 +09:00
97f61e24bc ci: Jenkinsfile slackSend 알림 복구
- Checkout: slackSend 빌드 시작 알림 추가 (tokenCredentialId)
- Post success/failure: echo → slackSend 교체 (tokenCredentialId)
- 이전 rebase 과정에서 소실된 slackSend 복구

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:53:48 +09:00
3f5a942939 fix: 배포 시 storage/framework 디렉터리 생성 추가
- mkdir -p storage/framework/{views,cache/data,sessions} storage/logs 추가
- .gitignore로 누락되는 Laravel 필수 디렉터리 생성
- Blade 캐시 경로 에러 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:29:39 +09:00
e9ffd3bc38 fix: 배포 시 storage/framework 디렉터리 생성 추가
- mkdir -p storage/framework/{views,cache/data,sessions} storage/logs 추가
- .gitignore로 누락되는 Laravel 필수 디렉터리 생성
- Blade 캐시 경로 에러 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:00:32 +09:00
6a4485134a fix: 배포 시 bootstrap/cache 디렉터리 생성 + slackSend 복구
- Stage/Production 배포에 mkdir -p bootstrap/cache 추가
- .gitignore로 누락되는 디렉터리 → composer install 시 package:discover 실패 해결
- rebase 중 사라진 slackSend 알림 복구 (Checkout, success, failure)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:56:34 +09:00
6f77eb564d fix: 배포 시 bootstrap/cache 디렉터리 생성 + slackSend 복구
- Stage/Production 배포에 mkdir -p bootstrap/cache 추가
- .gitignore로 누락되는 디렉터리 → composer install 시 package:discover 실패 해결
- rebase 중 사라진 slackSend 알림 복구 (Checkout, success, failure)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:53:38 +09:00
cb9c905698 fix: AppServiceProvider CLI 컨텍스트에서 request() 호출 에러 수정
- runningInConsole() 체크 추가로 artisan 명령어 실행 시 request 바인딩 에러 방지
- composer install 후 package:discover 실패 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:40:35 +09:00
dc42be5256 fix: AppServiceProvider CLI 컨텍스트에서 request() 호출 에러 수정
- runningInConsole() 체크 추가로 artisan 명령어 실행 시 request 바인딩 에러 방지
- composer install 후 package:discover 실패 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:40:24 +09:00
f67feaf82f chore: Jenkins Slack 알림 재테스트 (글로벌 설정 수정)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:28:12 +09:00
3f51447b22 chore:Jenkins Slack 알림 연동 테스트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:28:12 +09:00
147f25ce48 fix: Checkout 단계 slackSend에 tokenCredentialId 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:16:00 +09:00
80bd0dcb36 chore:Jenkins Slack 알림 연동 테스트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:13:24 +09:00
8426bdcd73 fix:slackSend에 tokenCredentialId 추가 (credential null 에러 수정)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 21:53:48 +09:00
김보곤
eb6bd5e03e feat: [business-card] 명함신청 테이블 마이그레이션 추가
- business_card_requests 테이블 생성
- 신청자 정보 (name, phone, title, email, quantity, memo)
- 처리 상태 관리 (status, processed_by, processed_at, process_memo)
2026-02-24 21:44:59 +09:00
59f5253512 ci:Jenkinsfile 빌드 시작 Slack 알림 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 21:00:05 +09:00
d1a09935e2 ci:Jenkinsfile Slack 알림 추가 (slackSend #product_infra)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:45:50 +09:00
8096514e93 ci:Jenkinsfile 2-branch 전략으로 전환 (stage 브랜치 제거, main에서 Stage→승인→Production)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:43:30 +09:00
4f4fa2dd04 refactor: stage 브랜치 제거, main에서 Stage→승인→Production 배포 흐름으로 변경
- main: Stage 자동 배포 → Jenkins 승인(24h) → Production 배포
- stage 브랜치 더 이상 사용 안함
- Production 실패 시 자동 롤백
2026-02-24 13:22:38 +09:00
0ded7897a4 refactor: stage 브랜치 제거, main에서 Stage→승인→Production 배포 흐름으로 변경
- main: Stage 자동 배포 → Jenkins 승인(24h) → Production 배포
- stage 브랜치 더 이상 사용 안함
- Production 실패 시 자동 롤백
2026-02-24 13:22:22 +09:00
b49f66ed57 ci: add Jenkinsfile for CI/CD pipeline (stage/main) 2026-02-24 08:15:05 +09:00
김보곤
03a1a0ab3d fix: [email] 이메일 발신자명을 (주)코드브릿지엑스로 변경 2026-02-24 08:08:45 +09:00
김보곤
240199af9d chore: [env] .env.example 업데이트 및 .gitignore 정리
- .env.example을 SAM 프로젝트 실제 키 구조로 업데이트
- .gitignore에 !.env.example 예외 추가
- GCS_* 중복 키 제거, Gemini/Claude/Vertex 키 섹션 추가
2026-02-23 10:17:37 +09:00
7eb5825d41 fix(WEB): 입고관리 저장 오류 3건 수정
- FormRequest에 manufacturer, material_no 규칙 추가 (validated()에서 누락 방지)
- store() 시 lot_no 자동 생성 (generateLotNo() 폴백)
- getOrCreateStock()에서 item_code 기반 2차 검색 추가 (unique key 충돌 방지)
  - 동일 item_code, 다른 item_id인 Stock 존재 시 item_id 업데이트
  - SoftDeletes 복원 로직 포함

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:48 +09:00
16b8dbcc6f fix: 절곡 자재투입 dynamic_bom 수량 보정 및 개소당 수량 산출
- getMaterialsForItem(): dynamic_bom 우선 체크 추가 (정적 BOM만 확인하던 문제)
- dynamic_bom.qty를 woItem.quantity로 나눠 개소당 수량 산출 (작업일지 bendingInfo와 일치)
- getMaterials(): 동일하게 개소당 수량으로 변환
- 응답에 lot_prefix, part_type, category 필드 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:48 +09:00
7c117bb29f chore: 작업현황 정리 및 관계 문서 갱신
- CURRENT_WORKS.md 이전 작업 이력 정리
- LOGICAL_RELATIONSHIPS.md stock_lots.workOrder 관계 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:48 +09:00
855e806e42 refactor: 절곡 재고 마이그레이션 커맨드 리팩토링 및 검증/시더 추가
- Migrate5130BendingStock: BD-* 품목 초기 재고 셋팅으로 목적 변경, --min-stock 옵션 추가
- ValidateBendingItems: BD-* 품목 존재 여부 검증 커맨드 신규
- BendingItemSeeder: 경동 절곡 품목 시딩 신규

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:47 +09:00
b00fa0502a fix: 견적→수주 변환 시 레거시 데이터 개소 분배 보완
- formula_source 없는 레거시 견적에서 sort_order 기반 개소 분배 로직 추가
- resolveLocationMapping/resolveLocationIndex 실패 시 index÷itemsPerLocation 폴백
- 기존 formula_source 매칭 로직은 그대로 유지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:47 +09:00
5a3d6c2243 feat(WEB): 절곡 자재투입 LOT 매핑 파이프라인 구현
- PrefixResolver: 제품코드×마감재질→LOT prefix 결정 + BD-XX-NN 코드 생성
- DynamicBomEntry DTO: dynamic_bom JSON 항목 타입 안전 관리
- BendingInfoBuilder 확장: build() 리턴 변경 + buildDynamicBomForItem() 추가
- OrderService: 작업지시 생성 시 per-item dynamic_bom 자동 저장
- WorkOrderService.getMaterials(): dynamic_bom 우선 체크 + N+1 배치 최적화
- WorkOrderService.registerMaterialInput(): work_order_item_id 분기 라우팅 통일
- 단위 테스트 58개 + 통합 테스트 6개 (64 tests / 293 assertions)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:47 +09:00
9c88138de8 feat(WEB): 5130 레거시 절곡품 재고 마이그레이션 커맨드 추가
- php artisan migrate:5130-bending-stock 커맨드 생성
- 5130 lot 테이블 → SAM stocks + stock_lots 마이그레이션
- 5130 bending_work_log → SAM stock_transactions(OUT) 마이그레이션
- prod+spec+slength 3코드 → BD-{PROD}{SPEC}-{SLENGTH} 아이템 코드 매핑
- --dry-run 시뮬레이션, --rollback 롤백 지원
- 기존 BD- 아이템 item_category='BENDING' 자동 업데이트
- FIFO 기반 LOT 수량 차감 및 Stock 집계 갱신

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:19:47 +09:00