Files
sam-docs/plans/bending-lot-auto-generation-plan.md
김보곤 75a025aca4 docs: [bending] 재고생산 LOT 자동 채번 기획서 추가
- 품종+종류+길이 선택 시 LOT 자동 생성 흐름 설계
- 일련번호 제거, 같은 날 같은 조합 = 동일 LOT
- API/React 수정 범위 정리
2026-03-18 20:11:45 +09:00

7.6 KiB

절곡품 재고생산 LOT 자동 채번 기획

작성일: 2026-03-18 상태: 기획 확정 관련: rules/bending-lot-numbering-policy.md


1. 목표

재고생산 등록 화면에서 품종 + 종류 + 모양&길이 3가지를 선택하면:

  1. 매핑된 품목이 자동 식별
  2. 제조일과 결합하여 LOT 번호가 자동 채번되어 프리뷰에 표시됨
  3. 일련번호 없음 — 같은 날 같은 조합은 동일 LOT 번호

2. LOT 번호 생성 규칙

{제품코드}{종류코드}{날짜코드4자리}-{길이코드}
입력 예시 값 코드
제조일 2026-03-18 6318
품종 케이스 C
종류 린텔부 L
모양&길이 3000mm 30
결과 CL6318-30

같은 날(03-18) 케이스 린텔부 3000mm를 2번 생산하면, 두 건 모두 LOT CL6318-30이다.


3. 화면 흐름

┌──────────────────────────────────────────────────────┐
│  절곡품 재고생산 등록                                   │
├──────────────────────────────────────────────────────┤
│                                                      │
│  ① 기본 정보                                          │
│  ┌─────────────────┬─────────────────┐               │
│  │ 제조일: 2026-03-18│ 수량: 50         │               │
│  └─────────────────┴─────────────────┘               │
│                                                      │
│  ② 품목 선택 (3개 드롭다운)                             │
│  ┌─────────────┬──────────────┬──────────────┐       │
│  │ 품종 *       │ 분류(종류) *  │ 모양&길이 *    │       │
│  │ [케이스    ▾]│ [린텔부    ▾] │ [3000     ▾]  │       │
│  └─────────────┴──────────────┴──────────────┘       │
│                                                      │
│  ┌──────────────────────────────────────────┐        │
│  │ ✅ 매핑 품목: BD-CL-30 케이스 린텔부 3000mm  │        │
│  └──────────────────────────────────────────┘        │
│                                                      │
│  ③ LOT 정보 (자동 채번)                                │
│  ┌─────────────────────────────────────────┐         │
│  │ 생산품 LOT:  CL6318-30                    │ ← 자동  │
│  │ 원자재 재질:  EGI 1.55T                    │ ← 자동  │
│  └─────────────────────────────────────────┘         │
│  ┌─────────────────────────────────────────┐         │
│  │ 원자재 LOT:  [🔍 선택]                     │ ← 수동  │
│  └─────────────────────────────────────────┘         │
│                                                      │
│  ╔══════════════════════════════════════════╗         │
│  ║  ✕ 취소                          💾 저장 ║         │
│  ╚══════════════════════════════════════════╝         │
└──────────────────────────────────────────────────────┘

3.1 자동 채번 트리거

조건 동작
품종 선택 종류 드롭다운 필터링 (해당 제품의 종류만 표시)
종류 선택 길이 드롭다운 필터링 (연기차단재면 연기차단재 길이, 그 외 일반 길이)
모양&길이 선택 resolveItem API 호출 → 매핑 품목 표시 ② LOT 프리뷰 자동 생성
제조일 변경 LOT 프리뷰의 날짜 코드 부분 갱신

3.2 에러 상태

상태 표시
3가지 미선택 LOT 프리뷰 비어있음
매핑 품목 없음 ⚠️ "해당 조합에 매핑된 품목이 없습니다" (저장 가능 — 품목 없이도 LOT 생성)
매핑 품목 있음 "BD-CL-30 케이스 린텔부 3000mm" 표시

4. 수정 범위

4.1 API 수정 (BendingCodeService)

현재 문제: generateLotNumber()이 일련번호(-001)를 추가함

// 변경 전
public function generateLotNumber(string $lotBase): string
{
    // ... 기존 LOT 수 조회 → -001 suffix 추가
    return "{$lotBase}-{$seq}";
}

// 변경 후
public function generateLotNumber(
    string $prodCode,
    string $specCode,
    string $lengthCode,
    string $date
): string {
    $dateCode = self::generateDateCode($date);
    return "{$prodCode}{$specCode}{$dateCode}-{$lengthCode}";
}

일련번호 로직 제거. 같은 날 같은 조합은 동일 LOT.

4.2 API 엔드포인트 수정 (BendingController)

POST /api/v1/bending/generate-lot 응답 변경:

// 변경 전
{ "lot_number": "CL6318-30-001", "material": "EGI 1.55T" }

// 변경 후
{ "lot_number": "CL6318-30", "material": "EGI 1.55T" }

4.3 React 수정 (BendingLotForm.tsx)

현재 LOT 프리뷰 (270~276행): 이미 올바른 형태로 동작함

// 이미 올바름 — 일련번호 없이 {prod}{spec}{dateCode}-{length}
const lotPreview = useMemo(() => {
    const dateCode = generateDateCode(form.regDate);
    const base = `${form.prodCode}${form.specCode}${dateCode}`;
    return form.lengthCode ? `${base}-${form.lengthCode}` : base;
}, [form.prodCode, form.specCode, form.lengthCode, form.regDate]);

저장 시 (348~362행): generateBendingLot() API 호출 결과가 달라지므로 연동 확인 필요

4.4 수정 파일 목록

파일 변경 내용 프로젝트
app/Services/BendingCodeService.php generateLotNumber() 일련번호 제거 API
app/Http/Controllers/Api/V1/BendingController.php generate-lot 응답 수정 API
src/components/stocks/BendingLotForm.tsx 저장 로직에서 API 응답 연동 확인 React

5. 테스트 체크리스트

  • 품종+종류+길이 선택 시 LOT 프리뷰 자동 표시
  • 제조일 변경 시 LOT 프리뷰 갱신
  • 같은 날 같은 조합 2건 저장 → 동일 LOT 번호 확인
  • 매핑 품목 있는 조합 → 품목명 자동 표시
  • 매핑 품목 없는 조합 → 경고 표시, 저장은 가능
  • 연기차단재(G) 선택 시 연기차단재 전용 길이 표시

관련 문서

  • rules/bending-lot-numbering-policy.md — LOT 채번 규칙 (일련번호 없음 확정)
  • plans/bending-item-registration-plan.md — 품목 등록 계획 (완료)

최종 업데이트: 2026-03-18