ERP-node/docs/ycshin-node/MPN[체크]-품번-수동접두어채번.md

4.6 KiB

[체크리스트] 품번 수동 접두어 채번 - 접두어별 독립 순번 생성

관련 문서: 계획서 | 맥락노트


공정 상태

  • 전체 진행률: 100% (전체 완료)
  • 현재 단계: 완료

구현 체크리스트

1단계: 구조적 변경 (행위 변경 없음)

  • numberingRuleService.ts에서 수동 값 추출 로직을 extractManualValuesFromInput private 메서드로 분리
  • 기존 allocateCode 내부에서 분리한 메서드 호출로 교체
  • 기존 동작과 동일한지 확인 (구조적 변경만, 행위 변경 없음)

2단계: buildPrefixKey 수정

  • buildPrefixKey 시그니처에 manualValues?: string[] 파라미터 추가
  • 수동 파트 처리 로직 변경: continuemanualValues에서 값 꺼내 prefixParts에 추가
  • previewCode 호출부에 영향 없음 확인 (optional 파라미터)

3단계: allocateCode 순서 변경 + 폴백 정리

  • 수동 값 추출 로직을 buildPrefixKey 호출 전으로 이동
  • 수동 파트 1개 + 추출 실패 시 userInputCode 전체를 수동 값으로 사용하는 폴백 추가
  • buildPrefixKey 호출 시 extractedManualValues를 세 번째 인자로 전달
  • 코드 조합 단계에서 part.manualConfig?.value 폴백 제거

4단계: DB 마이그레이션

  • db/migrations/1053_remove_bulk1_manual_config_value.sql 작성
  • manual_config->>'value' = 'BULK1' 조건으로 JSONB에서 value 키 제거
  • 마이그레이션 실행 (9건 정리 완료)

5단계: 연속 구분자(--) 방지

  • joinPartsWithSeparators에서 빈 파트 뒤 연속 구분자 방지 로직 추가
  • extractManualValuesFromInput에서 카테고리/참조 빈 값 시 "" 반환 (템플릿 정합성)

6단계: 검증

  • 카테고리 선택 + 수동입력 "ㅁㅁㅁ" → 카테고리값-ㅁㅁㅁ-001 생성 확인
  • 카테고리 미선택 + 수동입력 "ㅁㅁㅁ" → -ㅁㅁㅁ-001 생성 확인 (-- 아님)
  • 같은 접두어 "ㅁㅁㅁ" 재등록 → -ㅁㅁㅁ-002 순번 증가 확인
  • 다른 접두어 "ㅇㅇㅇ" 등록 → -ㅇㅇㅇ-001 독립 시퀀스 확인
  • 수동 파트 없는 채번 규칙 동작 영향 없음 확인
  • previewCode (미리보기) 동작 영향 없음 확인
  • BULK1이 더 이상 생성되지 않음 확인

7단계: 실시간 순번 미리보기

  • 백엔드 컨트롤러: preview 엔드포인트에 manualInputValue body 파라미터 수신 추가
  • 백엔드 서비스: previewCodemanualInputValue 파라미터 추가, buildPrefixKey에 전달
  • 프론트엔드 API: previewNumberingCodemanualInputValue 파라미터 추가
  • V2Input: manualInputValue 변경 시 디바운스(300ms) preview API 호출 + suffix 갱신
  • 백엔드 서비스: 초기 상태(수동 입력 없음) 시 레거시 공용 시퀀스 조회 건너뜀 → startFrom 기본값 표시
  • V2Input: 카테고리 변경 시 초기 useEffect에서도 manualInputValue 전달 → 순번 즉시 반영
  • 린트 에러 없음 확인

8단계: 코드 정리

  • 카테고리 해석 로직 3곳 중복 → resolveCategoryFormat 헬퍼 추출 (약 100줄 감소)
  • 임시 변수명 정리 (pool2/ct2/cc2 등 복붙 흔적 제거)
  • 린트 에러 없음 확인

9단계: 정리

  • 계획서/맥락노트/체크리스트 최신화

알려진 이슈 (보류)

이슈 설명 상태
저장 실패 시 순번 갭 allocateCode와 saveFormData가 별도 트랜잭션이라 저장 실패해도 순번 소비됨 보류
유령 데이터 중복 품명으로 간헐적 저장 성공 + 리스트 미노출 보류

변경 이력

날짜 내용
2026-03-11 계획서, 맥락노트, 체크리스트 작성 완료
2026-03-11 1-4단계 구현 완료
2026-03-11 5단계 추가 구현 (연속 구분자 방지 + 템플릿 정합성 복원)
2026-03-11 계맥체 최신화 완료. 문제 4-5 보류
2026-03-12 7단계 실시간 순번 미리보기 구현 완료 (백엔드/프론트엔드 4파일)
2026-03-12 계맥체 최신화 완료
2026-03-12 초기 상태 레거시 시퀀스 조회 방지 수정 + 계맥체 반영
2026-03-12 카테고리 변경 시 수동 입력값 포함 순번 재조회 수정
2026-03-12 resolveCategoryFormat 헬퍼 추출 코드 정리 + 계맥체 최신화
2026-03-12 6단계 검증 완료. 전체 완료