Commit Graph

583 Commits

Author SHA1 Message Date
김보곤
f3bdafc32e feat: [작업지시] 부모 공정 → 자식 공정 자동 감지
- store(): 부모 공정으로 WO 생성 시 아이템의 process_items 매핑으로 자식 공정 자동 설정
- index(): 부모 공정 필터 시 자식 공정 WO도 포함
- 하위 호환: 아이템 매칭 실패 시 원래 process_id 유지
2026-03-21 21:21:39 +09:00
김보곤
a071997b42 feat: [ItemMaster] ItemPage 생성 시 동일 item_type 중복 방지 로직 추가
- ItemPageService::store()에서 동일 tenant_id + item_type + is_active 조합 중복 검증
- ItemPageStoreRequest에 Rule::unique 검증 추가 (tenant_id 범위 한정)
- 에러 메시지 키 추가: error.item_page_duplicate_item_type (ko/en)
2026-03-21 21:21:39 +09:00
28e41e6367 merge: develop + kkk 브랜치 병합 (code/lot_no 분리 + origin 신규 기능 통합) 2026-03-21 17:35:26 +09:00
7cd0aab884 refactor: [절곡] bending_items code를 'BD' 단일값으로 통일
- bending_items.code: prod+spec(CP,RS 등) → 'BD' (절곡품 공통 접두사)
- bending_models 패턴(GR/SB/BB)과 동일 레벨로 통일
- import 스크립트 3개 + BendingCodeService.resolveItem 수정
- 마이그레이션 SQL 업데이트
- DB 266건 업데이트 완료
2026-03-21 15:29:05 +09:00
김보곤
1577d028dc feat: [공정관리] parent_id 트리 구조 도입 — 마이그레이션, 모델 관계, 2depth 검증 2026-03-21 15:23:54 +09:00
d6591acdff refactor: [절곡] code/lot_no 분리 — 코드 체계와 LOT 번호 분리
- bending_items.code: LOT번호(CP260319) → 코드체계(CP)만 저장
- bending_items.lot_no: 기존 code 값 이관 (LOT 번호)
- bending_models.code: 전체코드(GR-KSS01-벽면형-SUS) → 접두사(GR)만 저장
- bending_models.lot_no: 기존 code 값 이관
- unique 제약: code → lot_no로 이동
- BendingCodeService.resolveItem: LIKE → 정확 매칭
- 검색: lot_no 필드 추가
- Swagger 문서 업데이트
2026-03-21 15:06:55 +09:00
김보곤
d9a2cad063 feat: [bending] 기초자료 복사 시 R2 이미지 파일도 함께 복사 2026-03-21 11:51:54 +09:00
김보곤
a71dab791a feat: [bending] 기초자료 복사 API 추가 — 같은 분류의 다음 번호 자동 채번 2026-03-21 11:49:06 +09:00
김보곤
e4f698654b feat: [bending] 수정 시 code 변경 허용 + 중복 코드 검사 (422 반환) 2026-03-21 11:29:56 +09:00
김보곤
e1d0c2ef44 fix: [bending] 기초자료 코드 항상 .001부터 시작 — .001이 대표(표준) 번호 2026-03-21 11:22:00 +09:00
김보곤
980b00cc5a fix: [bending] 기초자료 변형코드 3자리(.001~.999) 변경 — 표준형상은 BD-XX, 변형은 BD-XX.nnn 2026-03-21 11:16:37 +09:00
김보곤
d9be03824e fix: [bending] 기초자료 코드 BD-XX.nn 형식으로 변경 (재공품 BD-XX-길이와 구분) 2026-03-21 11:09:46 +09:00
김보곤
f583e947db feat: [bending] 품목코드 BD-XX-nn 자동 채번 + code 수정 불가 + prefixes API 2026-03-21 11:01:29 +09:00
김보곤
e402b03452 feat: [공정관리] 공정 복제 API 추가 2026-03-21 08:38:47 +09:00
김보곤
da1ea6d3b4 feat: [작업지시/작업자화면] items.item 관계 로드, 부서 필터 개선, BD 재질 자동 매칭, 전개도 폭 매칭 2026-03-21 07:59:53 +09:00
김보곤
244a1f7a24 feat: [재고] 적정재고 관리 기능 추가 (max_stock + over 상태 + update API) 2026-03-21 07:59:53 +09:00
김보곤
5860262d87 feat: [입고/수입검사] 검사완료 상태 추가, 관리자 삭제 권한, 재고 연동 개선 2026-03-21 07:59:53 +09:00
6c67d80e25 feat: [workorder] 절곡 작업일지 bending_images R2 presigned URL 반환
- getWorkLog()에 bending_images 맵 추가 (22개 정적 이미지)
- buildBendingImageUrls() 메서드 추가
- Storage import 추가
- document->data null 체크 추가
- stats에 draft 상태를 reception_count에 포함
2026-03-20 23:04:28 +09:00
78ff01d6b1 fix: [생산지시] 보조공정 품목 미배정 문제 수정
- 부자재(감기샤프트, 각파이프 등)가 "재고생산"(보조공정) 매핑으로 미배정 생성되던 문제
- 보조공정(is_auxiliary) 및 미매핑(none) 품목을 메인 공정으로 자동 병합
- 메인 공정 중 품목 수가 가장 많은 공정에 배정
2026-03-20 17:08:37 +09:00
4c9526d9d5 fix: [quality] 부적합 접수 통계에 draft 상태 합산 2026-03-20 17:04:14 +09:00
1767944a14 fix: [document] formatTemplateForReact 클로저에 $methodCodes 누락 수정
- use ($methodCodes) 추가하여 검사방식 한글 변환 정상화
2026-03-20 17:04:14 +09:00
2df43187bf fix: [inspection] 완료된 검사 수정 차단
- InspectionService.update()에 완료 상태 검증 추가
- 완료된 검사 수정 시 400 에러 반환
- error.php에 cannot_modify_completed 메시지 추가
2026-03-20 17:04:14 +09:00
1231ee6302 feat: [document] 검사 템플릿 섹션에 image_url(presigned URL) 추가
- DocumentService: 섹션 데이터에 image_url 반환
- QmsLotAuditService: 동일하게 image_url 반환
- file_id 또는 image_path 기반으로 R2 presigned URL 생성
2026-03-20 12:37:23 +09:00
김보곤
786bb20d86 feat: [finance] 계정별원장 API 서비스 보강 (카드거래 상세, 분리전표 필터링) 2026-03-20 08:35:07 +09:00
fc673be0c1 fix: [pricing] 단가 목록/상세에서 품목코드·품목명 미표시 수정
- Price 모델에 item() BelongsTo 관계 추가
- index/show에서 item:id,code,name,item_category eager load
2026-03-19 23:58:02 +09:00
bb4d9d8fbd fix: [QA] 수주 날짜 필터 COALESCE + 배차 상태 자동 전환 + 견적 날짜 캐스트 수정
- OrderService: 날짜 필터를 COALESCE(received_at, created_at)로 NULL 안전 처리
- VehicleDispatchService: update() 시 freight_cost_type 유무로 status 자동 결정
- Quote 모델: date 캐스트를 date:Y-m-d로 변경 (UTC 직렬화 방지)
2026-03-19 23:57:56 +09:00
6952ae9667 fix: [stat] 출하 집계 shipping_cost 컬럼 참조 오류 수정
- shipments.shipping_cost 컬럼이 3/18 배차 분리 시 삭제되었으나 집계 코드 미수정
- shipment_vehicle_dispatches.options->total_amount JOIN으로 변경
2026-03-19 21:09:49 +09:00
강영보
c29090a0b8 feat: [bending] 절곡품 전용 테이블 분리 API
- bending_items 전용 테이블 생성 (items.options → 정규 컬럼 승격)
- bending_models 전용 테이블 생성 (가이드레일/케이스/하단마감재 통합)
- bending_data JSON 통합 (별도 테이블 → bending_items.bending_data 컬럼)
- bending_item_mappings 테이블 DROP (bending_items.code에 흡수)
- BendingItemService/BendingCodeService → BendingItem 모델 전환
- GuiderailModelService component 이미지 자동 복사
- ItemsFileController bending_items/bending_models 폴백 지원
- Swagger 스키마 업데이트
2026-03-19 20:00:18 +09:00
유병철
623298dd82 fix: [dashboard] 생산현황 shipments.shipping_cost 컬럼 미존재 에러 수정
- shipments 테이블에 shipping_cost 컬럼이 없어서 500 에러 발생
- 컬럼 추가 전까지 금액 0 고정, 건수만 집계
- TODO: shipping_cost 컬럼 추가 시 금액 집계 복원

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 19:33:25 +09:00
김보곤
d22850a9e3 fix: [finance] 계정별원장 홈택스 분개 UNION 제거 (일반전표만 조회) 2026-03-19 17:36:51 +09:00
김보곤
01c9d5fca0 feat: [loan] 대시보드 API에 경조사비 요약 데이터 추가
- condolence_expenses 테이블에서 경조사비 통계를 조회하여 dashboard 응답에 포함
- condolence_summary: total_count, total_amount, congratulation_amount, condolence_amount
- 대시보드 날짜 필터(start_date, end_date)를 event_date 기준으로 적용
2026-03-19 17:18:55 +09:00
김보곤
abb024f0bd feat: [finance] 경조사비 관리 API 구현
- Model: CondolenceExpense (BelongsToTenant, Auditable, SoftDeletes)
- Service: CRUD + summary 통계 (total_amount 자동 계산)
- Controller: 6개 엔드포인트 (목록/등록/상세/수정/삭제/통계)
- FormRequest: Store/Update 검증 규칙 분리
- Route: /api/v1/condolence-expenses
- Migration: updated_by, deleted_by 컬럼 추가
2026-03-19 16:02:19 +09:00
김보곤
c68cf5dfcf feat: [finance] 손익계산서 월별 조회 API + 리팩토링
- GET /api/v1/income-statement/monthly?year=2026&unit=won 추가
- buildSections 공통 로직 분리
- getAccountCodes, getFiscalYear 헬퍼 분리
2026-03-19 12:49:04 +09:00
김보곤
ea5591c812 fix: [finance] 손익계산서 기수 수정 (1기=2025년, 코드브릿지엑스 설립 기준) 2026-03-19 12:33:06 +09:00
김보곤
a07b15066d feat: [finance] 계정별원장·손익계산서 API 추가
- GET /api/v1/account-ledger: 계정별원장 조회 (이월잔액, 월별소계/누계)
- GET /api/v1/income-statement: 손익계산서 조회 (당기/전기 비교, 단위변환)
- KIS 표준 계정과목 sub_category 기반 자동 매핑
- 일반전표 + 홈택스 분개 UNION ALL 통합 집계
2026-03-19 11:43:24 +09:00
김보곤
6e50fbd1fa feat: [material] 부적합관리 결재 연동 구현
- Migration: approval_id FK 추가
- Model: approval() BelongsTo 관계
- Service: submitForApproval() 결재상신 (결재문서+결재선 생성)
- ApprovalService: 승인→CLOSED, 반려/회수→approval_id 해제
- Controller: POST /{id}/submit-approval 엔드포인트
- Route: submit-approval 라우트 등록
2026-03-19 09:03:12 +09:00
김보곤
847c60b03d feat: [material] 부적합관리 API Phase 1-A 구현
- Migration: nonconforming_reports, nonconforming_report_items 테이블
- Model: NonconformingReport, NonconformingReportItem (관계, cast, scope)
- FormRequest: Store/Update 검증 (items 배열 포함)
- Service: CRUD + 채번(NC-YYYYMMDD-NNN) + 비용 자동 계산 + 상태 전이
- Controller: REST 7개 엔드포인트 (목록/통계/상세/등록/수정/삭제/상태변경)
- Route: /api/v1/material/nonconforming-reports
- i18n: 부적합관리 에러 메시지 (ko)
2026-03-19 08:39:24 +09:00
d8a57f71c6 fix: [quality] 출하 상세에 order_id 추가 + 검사완료 건 수정 차단
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 23:15:57 +09:00
b3869cfadb fix: [production-order] 생산지시 상세 개선 - 수량을 개소수로 변경, BOM 공정그룹 한글 라벨 매핑
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 23:15:55 +09:00
f70ec4155e feat: [items] 품목 목록 API에 공정 배정 정보(assigned_processes) 응답 추가
- exclude_process_id 파라미터 시 품목 제외 대신 배정 공정 정보 포함하여 응답
- 프론트에서 다른 공정 배정 품목을 disabled 처리하도록 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 23:15:54 +09:00
6563d977ee refactor: [shipment] 배차 정보를 shipment_vehicle_dispatches로 일원화
- shipments 테이블에서 배차 관련 컬럼 8개 삭제 (vehicle_no, driver_name 등)
- shipping 전환 시 배차 정보를 vehicle_dispatches에 저장
- delivery_method ENUM → VARCHAR 변경 (common_codes 기반)
- VehicleDispatchService에 수주/작성자 관계 로딩 추가
- Swagger delivery_method enum 제약 제거

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 23:15:47 +09:00
김보곤
5e52293454 fix: [stock] work_orders에도 deleted_by 컬럼 없는 오류 수정 2026-03-18 22:24:23 +09:00
김보곤
6497a7ab8f fix: [stock] work_order_items에 deleted_by 컬럼 없는 오류 수정 2026-03-18 22:23:21 +09:00
김보곤
d8b8df6f47 fix: [stock] 재고생산 삭제 허용 (IN_PROGRESS + 작업지시 함께 정리)
- STOCK 타입: IN_PROGRESS 상태에서도 삭제 허용 (IN_PRODUCTION부터 불가)
- STOCK 타입: 작업지시(workOrders)가 있어도 삭제 허용
- cleanupStockWorkOrders(): 작업지시 soft delete + 재고예약 해제
- destroy(), bulkDestroy() 양쪽 적용
- 일반 수주(ORDER)는 기존 규칙 유지
2026-03-18 22:21:04 +09:00
유병철
8f8eae92f2 fix: [bending] 품목 resolveItem eager loading 컬럼 수정
- item 관계 로드 시 specification → attributes로 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 21:13:24 +09:00
김보곤
673f521543 feat: [stock] 재고생산 저장 시 자동 확정+생산지시 생성
- 기존: 저장(DRAFT) → 확정(CONFIRMED) → 생산지시 생성 (3단계)
- 변경: 저장 즉시 확정 + 생산지시 자동 생성 (1단계)
- store()에서 STOCK 타입 감지 시 CONFIRMED 전환 + 재고 예약 + createProductionOrder 호출
2026-03-18 20:45:47 +09:00
김보곤
8dc21bdda8 fix: [bending] LOT 채번에서 일련번호 제거
- generateLotNumber() 시그니처 변경: lotBase → prod/spec/length/date
- 일련번호(-001) 로직 제거: 같은 날 같은 조합은 동일 LOT
- generate-lot API 응답에서 lot_base/date_code 필드 제거
- 미사용 Order 모델 import 제거
2026-03-18 20:14:24 +09:00
유병철
55f97f67d3 feat: [finance] 경비계정 동기화에 증빙번호(receipt_no) 지원 추가
- StoreManualJournalRequest/UpdateJournalRequest에 receipt_no 필드 추가
- GeneralJournalEntryService: store/update 시 receipt_no 전달
- JournalSyncService: saveForSource에 receiptNo 파라미터 추가
- SyncsExpenseAccounts: 증빙번호 결정 우선순위 (명시 전달 > 바로빌 승인번호 > null)
- SOURCE_BAROBILL_CARD를 카드결제 payment_method에 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:07:17 +09:00
김보곤
b7c6e7f69d fix: [numbering] scopeKey 누적 할당 오류 수정
- scopeKey = value → scopeKey .= value 수정 (param, mapping 세그먼트)
- stock_production 문서유형 추가
2026-03-18 19:56:16 +09:00
김보곤
6af9162ce4 feat: [bending] 절곡품 품목 일괄 등록 + LOT 매핑 (222건 신규)
- BendingCodeService에 42(4200mm) 길이코드 복원
- 품목 일괄 등록 스크립트 추가 (scripts/register-bending-items.php)
- 신규 종류(RW/RF/SW/SF/TE/GH) + 신규 길이(06/17/20/45) 조합 등록
- bending_item_mappings 320건 매핑 동시 등록
2026-03-18 19:43:15 +09:00