- File 모델에 presignedUrl() 메서드 추가
- GuiderailModelResource: image_url + components[].image_url 반환
- BendingItemResource: image_url 반환
- 소비자(MNG, React)가 별도 처리 없이 R2 직접 로드 가능
- exists()가 매 요청마다 R2 HTTP HEAD 호출 → 개발서버에서 지연/500 발생
- temporaryUrl()은 로컬 서명 생성만 하므로 R2 접근 불필요
- 파일 미존재 시 브라우저가 R2에서 직접 404 수신
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- FileStorageController에 presignedUrl() 메서드 추가 (30분 유효)
- GET /api/v1/files/{id}/presigned-url 라우트 추가
- 파일 프록시 스트리밍 대신 R2 직접 접근 지원
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- OrderService: 날짜 필터를 COALESCE(received_at, created_at)로 NULL 안전 처리
- VehicleDispatchService: update() 시 freight_cost_type 유무로 status 자동 결정
- Quote 모델: date 캐스트를 date:Y-m-d로 변경 (UTC 직렬화 방지)
- pmis_* 21개 테이블 + daily_work_logs 2개 테이블을 codebridge DB에 생성
- 기존 sam DB의 5개 테이블 데이터 복사 후 건수 검증 → 삭제
- 안전 장치: 데이터 불일치 시 예외 발생으로 롤백
- 원칙: MNG에서 운영하는 테이블은 codebridge DB에서 관리
- 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 스키마 업데이트
- shipments 테이블에 shipping_cost 컬럼이 없어서 500 에러 발생
- 컬럼 추가 전까지 금액 0 고정, 건수만 집계
- TODO: shipping_cost 컬럼 추가 시 금액 집계 복원
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- GET /api/v1/account-ledger: 계정별원장 조회 (이월잔액, 월별소계/누계)
- GET /api/v1/income-statement: 손익계산서 조회 (당기/전기 비교, 단위변환)
- KIS 표준 계정과목 sub_category 기반 자동 매핑
- 일반전표 + 홈택스 분개 UNION ALL 통합 집계
- exclude_process_id 파라미터 시 품목 제외 대신 배정 공정 정보 포함하여 응답
- 프론트에서 다른 공정 배정 품목을 disabled 처리하도록 변경
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
- handle()에서 에러 감지 시 error/code/message/details 외 추가 필드도 전달
- error()에서 details 외 추가 필드를 error 객체에 포함
- BendingController의 expected_code 등이 API 응답에 노출됨
- 기존: 저장(DRAFT) → 확정(CONFIRMED) → 생산지시 생성 (3단계)
- 변경: 저장 즉시 확정 + 생산지시 자동 생성 (1단계)
- store()에서 STOCK 타입 감지 시 CONFIRMED 전환 + 재고 예약 + createProductionOrder 호출
- generateLotNumber() 시그니처 변경: lotBase → prod/spec/length/date
- 일련번호(-001) 로직 제거: 같은 날 같은 조합은 동일 LOT
- generate-lot API 응답에서 lot_base/date_code 필드 제거
- 미사용 Order 모델 import 제거
- 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>
- BendingCodeService에 42(4200mm) 길이코드 복원
- 품목 일괄 등록 스크립트 추가 (scripts/register-bending-items.php)
- 신규 종류(RW/RF/SW/SF/TE/GH) + 신규 길이(06/17/20/45) 조합 등록
- bending_item_mappings 320건 매핑 동시 등록