# 유전체/유전자 검사 가능 조건 요약 ## 1. DB 상태값 정의 ### chipSireName (아비명) | DB 값 | 의미 | 분석 가능 여부 | |-------|------|----------------| | `일치` | 친자감별 일치 | 가능 | | `불일치` | 친자감별 불일치 | 유전체 불가 / 유전자 가능 | | `분석불가` | 모근 오염/불량 등 기타 사유 | 불가 | | `정보없음` | 개체 식별번호/형식 오류 | 불가 | | `null` | 미분석 (의뢰 없음) | - 표시 | ## - 아비명 가능한 개체에 대해서 어미명 판단 진행 ### chipDamName (어미명) | DB 값 | 의미 | 분석 가능 여부 | |-------|------|----------------| | `일치` | 친자감별 일치 | 통과 | | `불일치` | 친자감별 불일치 | 유전체 불가 / 유전자 가능 | | `이력제부재` | 모 이력제 정보 없음 | 유전체 불가 / 유전자 가능 | | `정보없음` | 정보 없음 | 통과 | | `null` | 정보 없음 | 통과 | --- ## 2. 탭별 검사 가능 조건 ### 유전체 탭 ``` 유효 조건 (모두 충족해야 함): 1. chipSireName === '일치' 2. chipDamName !== '불일치' 3. chipDamName !== '이력제부재' 4. cowId가 EXCLUDED_COW_IDS에 포함되지 않음 ``` ### 유전자 탭 ``` 유효 조건: 1. chipSireName !== '분석불가' 2. chipSireName !== '정보없음' 3. cowId가 EXCLUDED_COW_IDS에 포함되지 않음 ※ 불일치/이력제부재도 유전자 데이터가 있으면 표시 가능 ``` --- ## 3. 개체 목록 배지 표시 (unavailableReason) ### 분석일자 컬럼 | unavailableReason | 배지 색상 | 표시 텍스트 | |-------------------|-----------|-------------| | `null` | - | `-` | | `분석불가` | 회색 | 분석불가 | | `부 불일치` | 빨간색 | 부 불일치 | | `모 불일치` | 주황색 | 모 불일치 | | `모 이력제부재` | 주황색 | 모 이력제부재 | | `형질정보없음` | 회색 | 형질정보없음 | ### unavailableReason 결정 로직 (cow.service.ts) ```typescript if (!latestRequest || !latestRequest.chipSireName) { unavailableReason = null; // '-' 표시 } else if (chipSireName === '분석불가' || chipSireName === '정보없음') { unavailableReason = '분석불가'; } else if (chipSireName !== '일치') { unavailableReason = '부 불일치'; } else if (chipDamName === '불일치') { unavailableReason = '모 불일치'; } else if (chipDamName === '이력제부재') { unavailableReason = '모 이력제부재'; } // 형질 데이터 없으면 unavailableReason = '형질정보없음'; ``` --- ## 4. 개체 상세 페이지 배지 ### 부 KPN 배지 (renderSireBadge) | 조건 | 배지 색상 | 표시 | |------|-----------|------| | `EXCLUDED_COW_IDS` 포함 | 회색 | 분석불가 | | `chipSireName === '분석불가'` | 회색 | 분석불가 | | `chipSireName === '정보없음'` | 회색 | 분석불가 | | `chipSireName === '일치'` | 초록색 | 일치 | | 그 외 | 빨간색 | 불일치 | | `null` | - | 표시 안 함 | ### 모 개체 배지 (renderDamBadge) | 조건 | 배지 색상 | 표시 | |------|-----------|------| | `chipDamName === '일치'` | 초록색 | 일치 | | `chipDamName === '불일치'` | 빨간색 | 불일치 | | `chipDamName === '이력제부재'` | 주황색 | 이력제부재 | | 그 외/null | - | 표시 안 함 | --- ## 5. 분석불가 안내 문구 | 상태 | 안내 문구 | |------|-----------| | `분석불가` (DB) | 모근 오염 및 불량 등 기타 사유로 유전체 분석 보고서를 제공할 수 없습니다. | | `정보없음` (DB) | 개체 식별번호 및 형식오류로 유전체 분석 보고서를 제공할 수 없습니다. | | `부 불일치` | 부 친자감별 결과가 불일치하여 유전체 분석 보고서를 제공할 수 없습니다. | | `모 불일치` | 모 친자감별 결과가 불일치하여 유전체 분석 보고서를 제공할 수 없습니다. | | `모 이력제부재` | 모 이력제 정보가 부재하여 유전체 분석 보고서를 제공할 수 없습니다. | | `EXCLUDED_COW_IDS` | 모근 오염 및 불량 등 기타 사유로 유전체 분석 보고서를 제공할 수 없습니다. | --- ## 6. 관련 파일 ### 백엔드 - `backend/src/common/config/GenomeAnalysisConfig.ts` - 유효성 검사 함수 - `backend/src/cow/cow.service.ts` - unavailableReason 결정 로직 ### 프론트엔드 - `frontend/src/lib/utils/genome-analysis-config.ts` - 유효성 검사, 메시지 함수 - `frontend/src/app/cow/page.tsx` - 개체 목록 배지 - `frontend/src/app/cow/[cowNo]/page.tsx` - 개체 상세 배지, 탭 조건 --- ## 7. 제외 개체 목록 (EXCLUDED_COW_IDS) 특수 사유로 분석 불가한 개체를 하드코딩으로 관리: ```typescript export const EXCLUDED_COW_IDS = [ 'KOR002191642861', // 모근상태 불량으로 인한 DNA분해 ]; ``` > 이 목록에 포함된 개체는 유전체/유전자 탭 모두 분석불가로 처리됨