Commit Graph

808 Commits

Author SHA1 Message Date
김보곤
192610e7fa feat: [inventory] 원자재 입고 테스트 데이터 생성 커맨드 추가
- receiving:generate-test-data 커맨드 생성
- RM 품목 기반 Receiving/Stock/StockLot/IQC Inspection 일괄 생성
- SUS/EGI 품목별 실제적 공급업체(포스코/현대제철/동국제강 등) 매핑
- 수입검사항목 자동 구성 (외관/두께/치수/재질 검사)
- --dry-run, --tenant, --date 옵션 지원
2026-03-21 21:21:39 +09:00
김보곤
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
25db0df38b fix: [절곡] bending_models lot_no 제거 — legacy_code로 이관
- bending_models에는 LOT 개념 없음, lot_no 컬럼 불필요
- lot_no 값 → legacy_code로 이관 후 컬럼 DROP
- BendingModel fillable에서 lot_no 제거
- GuiderailModelResource에서 lot_no 제거
- BendingModelImport: lot_no → legacy_code
- 마이그레이션 rollback 로직 수정
2026-03-21 15:39:09 +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
88d6547e69 refactor: [절곡] import 스크립트 + GuiderailModel code/lot_no 분리 적용
- BendingCleanReimport: code→앞2자리, lot_no→전체코드, 중복체크 lot_no 기준
- BendingImportMissing: 동일 적용
- BendingModelImport: code→접두사(GR/SB/BB), lot_no→전체코드
- MigrateBendingItemsToNewTable: 동일 적용
- GuiderailModelResource: lot_no 필드 추가
- BendingModel: fillable에 lot_no 추가
2026-03-21 15:11:51 +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
김보곤
cce4798643 fix: [files] presigned-url-by-path 화이트리스트 추가 (문서양식 섹션 이미지) 2026-03-21 13:28:26 +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
김보곤
917b75d4b4 feat: [bending] 가이드레일/케이스 부품 조합에 기초자료 품목코드(item_code) 매핑 추가 2026-03-21 11:42:13 +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
김보곤
ccdc28c44e fix: [bending] 절곡품 API 화이트리스트 추가 및 presignedUrl 에러 핸들링
- bending-items, guiderail-models 등 MNG→API 호출 라우트 화이트리스트 등록
- BendingItemResource에서 S3 미설정 환경 presignedUrl 에러 try-catch 처리
2026-03-21 09:40:11 +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
김보곤
41177f8f6c fix: [주문/재고생산] item_id 검증 제거 및 options.reg_date validation 추가 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
d8ac3db239 Revert "feat: [auth] 자동산출 API Sanctum 인증 예외 추가"
This reverts commit 5df2c2afce8de1356c021545e2d3650a82bb74be.
2026-03-20 17:05:00 +09:00
4c9526d9d5 fix: [quality] 부적합 접수 통계에 draft 상태 합산 2026-03-20 17:04:14 +09:00
31b3b49f48 feat: [auth] 자동산출 API Sanctum 인증 예외 추가
- quotes/calculate/* 경로를 API Key만으로 접근 허용
- MNG에서 API Key + X-TENANT-ID로 접근하는 자동산출용
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
김보곤
4f30de2d28 fix: [입고] order_qty validation을 required로 변경하여 SQL 에러 대신 명확한 안내 반환 2026-03-20 15:03:02 +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
1e7a84d516 feat: [file] path 기반 presigned URL 엔드포인트 추가
- POST /api/v1/files/presigned-url-by-path 추가
- file_id 없이 image_path만 있는 레거시 데이터 지원
2026-03-20 11:24:24 +09:00
700722d5d2 feat: [file] API Resource에서 image_url (presigned URL) 반환
- File 모델에 presignedUrl() 메서드 추가
- GuiderailModelResource: image_url + components[].image_url 반환
- BendingItemResource: image_url 반환
- 소비자(MNG, React)가 별도 처리 없이 R2 직접 로드 가능
2026-03-20 10:22:00 +09:00
9bdb81d8ff fix: presignedUrl에서 R2 exists() 체크 제거
- exists()가 매 요청마다 R2 HTTP HEAD 호출 → 개발서버에서 지연/500 발생
- temporaryUrl()은 로컬 서명 생성만 하므로 R2 접근 불필요
- 파일 미존재 시 브라우저가 R2에서 직접 404 수신

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:17:53 +09:00
844a0458ad feat: R2 presigned URL 엔드포인트 추가
- FileStorageController에 presignedUrl() 메서드 추가 (30분 유효)
- GET /api/v1/files/{id}/presigned-url 라우트 추가
- 파일 프록시 스트리밍 대신 R2 직접 접근 지원

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 08:50:39 +09:00
강영보
ce4a61e0ce fix: [auth] Swagger publicRoutes + File 모델 네임스페이스 수정
- publicRoutes에 api/documentation/* 추가 (Swagger UI 공개 접근)
- web.php /files/{id}/view: App\Models\File → App\Models\Commons\File
2026-03-20 08:49:51 +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
강영보
949efc27e2 fix: [auth] ApiKeyMiddleware allowWithoutAuth 화이트리스트 제거
- bending-items, guiderail-models, files/view, files/download, quotes/calculate 등
- MNG에서 Bearer 인증 포함하여 호출하도록 변경
- 불필요한 인증 예외 제거로 보안 강화
2026-03-19 21:59:59 +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
유병철
5e5aecd992 feat: [material] 부적합보고서 morph map 등록
- NonconformingReport 모델 morph map에 'nonconforming_report' 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:28:25 +09:00
유병철
6681bf7e79 fix: [material] 부적합보고서 User 모델 경로 수정
- App\Models\Users\User → App\Models\Members\User

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:06:33 +09:00