80 lines
3.2 KiB
Markdown
80 lines
3.2 KiB
Markdown
|
|
# [체크리스트] 품번 수동 접두어 채번 - 접두어별 독립 순번 생성
|
||
|
|
|
||
|
|
> 관련 문서: [계획서](./MPN[계획]-품번-수동접두어채번.md) | [맥락노트](./MPN[맥락]-품번-수동접두어채번.md)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 공정 상태
|
||
|
|
|
||
|
|
- 전체 진행률: **85%** (코드 구현 + DB 마이그레이션 완료, 검증 대기)
|
||
|
|
- 현재 단계: 검증 대기
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 구현 체크리스트
|
||
|
|
|
||
|
|
### 1단계: 구조적 변경 (행위 변경 없음)
|
||
|
|
|
||
|
|
- [x] `numberingRuleService.ts`에서 수동 값 추출 로직을 `extractManualValuesFromInput` private 메서드로 분리
|
||
|
|
- [x] 기존 `allocateCode` 내부에서 분리한 메서드 호출로 교체
|
||
|
|
- [x] 기존 동작과 동일한지 확인 (구조적 변경만, 행위 변경 없음)
|
||
|
|
|
||
|
|
### 2단계: buildPrefixKey 수정
|
||
|
|
|
||
|
|
- [x] `buildPrefixKey` 시그니처에 `manualValues?: string[]` 파라미터 추가
|
||
|
|
- [x] 수동 파트 처리 로직 변경: `continue` → `manualValues`에서 값 꺼내 `prefixParts`에 추가
|
||
|
|
- [x] `previewCode` 호출부에 영향 없음 확인 (optional 파라미터)
|
||
|
|
|
||
|
|
### 3단계: allocateCode 순서 변경 + 폴백 정리
|
||
|
|
|
||
|
|
- [x] 수동 값 추출 로직을 `buildPrefixKey` 호출 전으로 이동
|
||
|
|
- [x] 수동 파트 1개 + 추출 실패 시 `userInputCode` 전체를 수동 값으로 사용하는 폴백 추가
|
||
|
|
- [x] `buildPrefixKey` 호출 시 `extractedManualValues`를 세 번째 인자로 전달
|
||
|
|
- [x] 코드 조합 단계에서 `part.manualConfig?.value` 폴백 제거
|
||
|
|
|
||
|
|
### 4단계: DB 마이그레이션
|
||
|
|
|
||
|
|
- [x] `db/migrations/1053_remove_bulk1_manual_config_value.sql` 작성
|
||
|
|
- [x] `manual_config->>'value' = 'BULK1'` 조건으로 JSONB에서 `value` 키 제거
|
||
|
|
- [x] 마이그레이션 실행 (9건 정리 완료)
|
||
|
|
|
||
|
|
### 5단계: 연속 구분자(--) 방지
|
||
|
|
|
||
|
|
- [x] `joinPartsWithSeparators`에서 빈 파트 뒤 연속 구분자 방지 로직 추가
|
||
|
|
- [x] `extractManualValuesFromInput`에서 카테고리/참조 빈 값 시 `""` 반환 (템플릿 정합성)
|
||
|
|
|
||
|
|
### 6단계: 검증
|
||
|
|
|
||
|
|
- [ ] 카테고리 선택 + 수동입력 "ㅁㅁㅁ" → 카테고리값-ㅁㅁㅁ-001 생성 확인
|
||
|
|
- [ ] 카테고리 미선택 + 수동입력 "ㅁㅁㅁ" → -ㅁㅁㅁ-001 생성 확인 (-- 아님)
|
||
|
|
- [ ] 같은 접두어 "ㅁㅁㅁ" 재등록 → -ㅁㅁㅁ-002 순번 증가 확인
|
||
|
|
- [ ] 다른 접두어 "ㅇㅇㅇ" 등록 → -ㅇㅇㅇ-001 독립 시퀀스 확인
|
||
|
|
- [ ] 수동 파트 없는 채번 규칙 동작 영향 없음 확인
|
||
|
|
- [ ] previewCode (미리보기) 동작 영향 없음 확인
|
||
|
|
- [ ] BULK1이 더 이상 생성되지 않음 확인
|
||
|
|
|
||
|
|
### 7단계: 정리
|
||
|
|
|
||
|
|
- [x] 린트 에러 없음 확인
|
||
|
|
- [x] 계획서/맥락노트/체크리스트 최신화
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 알려진 이슈 (보류)
|
||
|
|
|
||
|
|
| 이슈 | 설명 | 상태 |
|
||
|
|
|------|------|------|
|
||
|
|
| 저장 실패 시 순번 갭 | allocateCode와 saveFormData가 별도 트랜잭션이라 저장 실패해도 순번 소비됨 | 보류 |
|
||
|
|
| 유령 데이터 | 중복 품명으로 간헐적 저장 성공 + 리스트 미노출 | 보류 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 변경 이력
|
||
|
|
|
||
|
|
| 날짜 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| 2026-03-11 | 계획서, 맥락노트, 체크리스트 작성 완료 |
|
||
|
|
| 2026-03-11 | 1-4단계 구현 완료 |
|
||
|
|
| 2026-03-11 | 5단계 추가 구현 (연속 구분자 방지 + 템플릿 정합성 복원) |
|
||
|
|
| 2026-03-11 | 계맥체 최신화 완료. 문제 4-5 보류 |
|