Releases: kiwooso-front-end/utils
Releases · kiwooso-front-end/utils
Release list
v0.2.1
v0.2.0
🎉 새로운 기능
소 이표번호 포맷팅 유틸리티 추가
한국 축산업에서 사용하는 소 이표번호(12자리)를 표준 포맷으로 변환하는 유틸리티 함수를 추가했습니다.
추가된 함수
formatEarTagNumber(earTagNo, part?)
- 12자리 소 이표번호를
XXX XXXX XXXX X포맷으로 변환 - 선택적으로 특정 부분만 추출 가능
part=1: 확장코드 + 코드구분 (3자리)part=2: 일련번호 앞 4자리part=3: 일련번호 뒤 4자리part=4: 체크번호 (1자리)part=5: 일련번호 + 체크번호 (9자리)
normalizeEarTagNumber(formatted)
- 포맷팅된 이표번호에서 공백을 제거하여 원본 형태로 변환
사용 예시
import { formatEarTagNumber, normalizeEarTagNumber } from '@kiwooso-front-end/utils/k-cow';
// 전체 포맷팅
formatEarTagNumber('002123456789'); // '002 1234 5678 9'
// 특정 부분 추출
formatEarTagNumber('002123456789', 1); // '002'
formatEarTagNumber('002123456789', 5); // '1234 5678 9'
// 정규화
normalizeEarTagNumber('002 1234 5678 9'); // '002123456789'기술 사양
- 이표번호 구조: 확장코드(2자리) + 코드구분(1자리) + 일련번호(8자리) + 체크번호(1자리)
- 유효하지 않은 입력은 원본 문자열 그대로 반환
- 완전한 타입 안정성 보장
- 100% 테스트 커버리지
📦 설치
npm install @kiwooso-front-end/utils@0.2.0🔗 관련 이슈
- 한국 축산업 표준 이표번호 포맷 지원
v0.1.2
🔄 Breaking Changes
Date 유틸 함수들이 이제 string만 받습니다.
// ❌ Before
getGradeExpirationRemainingTime(new Date('2025-11-30T23:59:59'));
// ✅ After
getGradeExpirationRemainingTime('2025-11-30T23:59:59');✨ Changes
- Date 객체 파라미터 제거 (string만 허용)
- formatDate의 useUTC 옵션 제거 (한국 전용)
- 1분 미만일 때 "1분 미만 남았습니다" 메시지로 개선
- 한국(KST) 기준 명시
v0.1.1 - CI/CD 자동화
🤖 CI/CD 자동화
✨ 새로운 기능
- GitHub Actions 자동 배포: Release 발행 시 NPM에 자동 배포
- Slack 알림 통합:
- 📌 Main 브랜치 푸시 알림
- 🎉 배포 성공 알림
- 🚨 배포 실패 알림
🛠️ 기술 스택
- GitHub Actions workflow
- NPM provenance 적용
- Slack Incoming Webhooks
📦 배포 프로세스
- Release 발행
- 자동 테스트 & 빌드
- NPM 배포
- Slack 알림 전송
v0.1.0 - 한우 정액 코드 유효성 검사 기능 추가
🐂 한우 정액 코드 유효성 검사 기능 추가
✨ 새로운 기능
- 한우 정액 코드 검증 함수 추가 (
isValidKCowSemen)- 5개 기관 코드 지원: KPN, GPN, JBPN, JYG, YKG
- 3~4자리 숫자 형식 검증
- 대소문자 구분 없이 처리
🔍 검증 규칙
- ✅ 유효한 기관 코드 + 3~4자리 숫자
- ✅ 대소문자 무관 (KPN123 = kpn123)
- ✅ 앞뒤 공백 자동 제거
- ❌ 한글, 특수문자 거부
- ❌ 2자리 이하 / 5자리 이상 거부
📋 사용 예시
import { isValidKCowSemen } from '@kiwooso-front-end/utils';
isValidKCowSemen('KPN950') // ✅ true
isValidKCowSemen('GPN0100') // ✅ true
isValidKCowSemen('KPN1420') // ✅ true
isValidKCowSemen('알수없음') // ❌ false
isValidKCowSemen('KPN12') // ❌ false (2자리)🧪 테스트
- 유효한 케이스 8개 시나리오
- 무효한 케이스 10개 시나리오
- Edge case 포함 (null, undefined, 특수문자 등)
📝 관련 파일
validation.ts- 검증 함수validation.test.ts- 테스트 코드
📦 설치
npm install @kiwooso-front-end/utils🛠️ 기술 스택
- TypeScript 5.3+
- Rollup (ESM + CJS)
- Jest (테스트)
v0.0.5 - FileValidator 추가
새로운 기능
- ✨ FileValidator 클래스 추가
- 체인 방식 파일 검증 (크기, 이름길이, 확장자, MIME 타입)
- 긴 파일명 자동 변경 기능
- 메시지 콜백 지원
개선사항
- 📝 JSDoc 문서화 완료
- 🧪 Jest 테스트 커버리지 100%
설치
npm install @kiwooso-front-end/utils