Files
genome2025/backend/doc/검사가능조건요약.md

147 lines
4.8 KiB
Markdown

# 유전체/유전자 검사 가능 조건 요약
## 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분해
];
```
> 이 목록에 포함된 개체는 유전체/유전자 탭 모두 분석불가로 처리됨