docs: [numbering] 재공품 로트번호 채번 규칙 추가

- stock_production 문서유형 추가
- 5.5절 재공품 로트번호 템플릿 추가
- scope_key 복합키 설명 보완
- 현재 등록 현황에 재공품 규칙 반영
This commit is contained in:
김보곤
2026-03-18 19:56:52 +09:00
parent ae19ee0955
commit 88b44fe766

View File

@@ -38,6 +38,7 @@
| `sale` | 매출 | (예정) |
| `work_order` | 작업지시 | (예정) |
| `material_receipt` | 원자재수입검사 | `ReceivingService` |
| `stock_production` | 재고생산 | `BendingCodeService` (향후 연동) |
**리셋 주기:**
@@ -212,7 +213,48 @@ URL: admin.codebridge-x.com/numbering-rules
**결과:** `WO-20260317-0001`
### 5.5 월별 리셋 예시 (INV-YYYYMM-NNN)
### 5.5 재공품 로트번호 ({prod}{spec}{date}-{length}-NNN)
> 절곡품 LOT 번호. 제품+종류+날짜+길이 조합별 독립 시퀀스.
> 날짜코드는 `BendingCodeService::generateDateCode()`가 생성한 4자리 압축 포맷.
| 항목 | 값 |
|------|------|
| 규칙명 | `5130 재공품 로트번호` |
| 문서유형 | `stock_production` (재고생산) |
| 리셋 주기 | `daily` (일별) |
| 시퀀스 자릿수 | `3` |
**패턴:**
```json
[
{ "type": "param", "key": "prod_code", "default": "R" },
{ "type": "param", "key": "spec_code", "default": "M" },
{ "type": "param", "key": "date_code", "default": "6318" },
{ "type": "separator", "value": "-" },
{ "type": "param", "key": "length_code", "default": "30" },
{ "type": "separator", "value": "-" },
{ "type": "sequence" }
]
```
**결과:** `GI6318-53-001`, `GI6318-53-002`, ... (연기차단재 화이바원단 W50×3000)
**scope_key:** 4개 param 값이 누적되어 `GI631853`처럼 조합별 독립 시퀀스 유지.
**호출 예시:**
```php
$numberingService->generate('stock_production', [
'prod_code' => 'G', // 연기차단재
'spec_code' => 'I', // 화이바원단(W50)
'date_code' => '6318', // BendingCodeService::generateDateCode()
'length_code' => '53', // W50×3000
]);
```
### 5.6 월별 리셋 예시 (INV-YYYYMM-NNN)
| 항목 | 값 |
|------|------|
@@ -290,9 +332,10 @@ ON DUPLICATE KEY UPDATE
MySQL의 `ON DUPLICATE KEY UPDATE`로 Atomic 연산을 보장한다. 동시 요청에서도 시퀀스 충돌 없이 안전하게 번호를 생성한다.
**scope_key 분리**: `param`, `mapping` 세그먼트 값이 scope_key로 저장되어, 파라미터별 독립 시퀀스를 유지한다.
**scope_key 분리**: `param`, `mapping` 세그먼트 값이 **누적 결합**되어 scope_key로 저장된다. 복수 param이 있으면 조합별 독립 시퀀스를 유지한다.
예: 수주 `KD-SS-260317-01``KD-TE-260317-01`은 각각 독립 시퀀스.
1: 수주 `KD-SS-260317-01``KD-TE-260317-01` scope_key가 `SS`, `TE` 각각 독립 시퀀스.
예 2: 재공품 `GI6318-53-001``RM6318-30-001`은 scope_key가 `GI631853`, `RM631830`으로 조합별 독립.
---
@@ -305,6 +348,7 @@ MySQL의 `ON DUPLICATE KEY UPDATE`로 Atomic 연산을 보장한다. 동시 요
| 1 | 5130 견적번호 | quote | `KD-PR-260317-01` | 일별 | 2 |
| 2 | 5130 수주 로트번호 | order | `KD-SS-260317-01` | 일별 | 2 |
| 3 | 원자재 로트번호 | material_receipt | `260317-01` | 일별 | 2 |
| 4 | 5130 재공품 로트번호 | stock_production | `RM6318-30-001` | 일별 | 3 |
> 신규 테넌트에 규칙이 없으면 각 서비스의 레거시 로직이 자동 적용된다.
@@ -317,4 +361,4 @@ MySQL의 `ON DUPLICATE KEY UPDATE`로 Atomic 연산을 보장한다. 동시 요
---
**최종 업데이트**: 2026-03-17
**최종 업데이트**: 2026-03-18