필터 및 화면 수정사항 반영

This commit is contained in:
2025-12-18 17:01:24 +09:00
parent 4d0f8f3b6b
commit abc2f20495
19 changed files with 417 additions and 5574 deletions

View File

@@ -59,6 +59,8 @@ export class AuthService {
}
const isPasswordValid = await bcrypt.compare(userPassword, user.userPw);
const inputHash = await bcrypt.hash(userPassword, 10);
this.logger.log(`[DEBUG] 입력 해시: ${inputHash}, DB 해시: ${user.userPw}`);
if (!isPasswordValid) {
this.logger.warn(`[LOGIN] 비밀번호 불일치 - userId: ${userId}`);
throw new UnauthorizedException('아이디 또는 비밀번호가 틀렸습니다');

View File

@@ -26,8 +26,12 @@ export const INVALID_CHIP_DAM_NAMES = ['불일치', '이력제부재'];
/** ===============================개별 제외 개체 목록 (분석불가 등 특수 사유) 하단 개체 정보없음 확인필요=================*/
export const EXCLUDED_COW_IDS = [
'KOR002191642861',
// 일치인데 정보가 없음 / 김정태님 유전체 내역 빠짐 1두
// 일치인데 정보가 없음
// 김정태님 유전체 내역 빠짐 1두
// 근데 유전자 검사내역은 있음
// 일단 모근 1회분량이고 재검사어려움 , 모근상태 불량으로 인한 DNA분해로 인해 분석불가 상태로 넣음
// 분석불가로 넣으면 유전자가 조회가 안됨
// 유전자가 조회될수 있는 조건은 불일치와 이력제부재만 가능 // 분석불가는 아예안되는듯
];
//=================================================================================================================
@@ -60,13 +64,7 @@ export function isValidGenomeAnalysis(
chipDamName: string | null | undefined,
cowId?: string | null,
): boolean {
// 1. 아비 일치 확인
if (chipSireName !== VALID_CHIP_SIRE_NAME) return false;
// 2. 어미 제외 조건 확인
if (chipDamName && INVALID_CHIP_DAM_NAMES.includes(chipDamName)) return false;
// 3. 개별 제외 개체 확인
// 개별 제외 개체만 확인 (부/모 불일치여도 유전자 데이터 있으면 표시)
if (cowId && EXCLUDED_COW_IDS.includes(cowId)) return false;
return true;
@@ -74,15 +72,15 @@ export function isValidGenomeAnalysis(
/**
* SQL WHERE 조건 생성 (TypeORM QueryBuilder용)
* 주의: cowId 제외 목록은 SQL에 포함되지 않으므로 별도 필터링 필요
* 부/모 불일치여도 유전자 데이터 있으면 표시하므로 조건 제거
*
* @param alias - 테이블 별칭 (예: 'request', 'genome')
* @returns SQL 조건 문자열
* @returns SQL 조건 문자열 (항상 true)
*
* @example
* queryBuilder.andWhere(getValidGenomeConditionSQL('request'));
*/
export function getValidGenomeConditionSQL(alias: string): string {
const damConditions = INVALID_CHIP_DAM_NAMES.map(name => `${alias}.chipDamName != '${name}'`).join(' AND ');
return `${alias}.chipSireName = '${VALID_CHIP_SIRE_NAME}' AND (${alias}.chipDamName IS NULL OR (${damConditions}))`;
// 부/모 불일치 조건 제거 - 유전자 데이터 있으면 모두 표시
return '1=1';
}

View File

@@ -9,6 +9,32 @@
* @constant
*/
export const MPT_NORMAL_RANGES = {
// ========== 에너지 카테고리 ==========
/**
* 혈당 (Glucose)
* 단위: mg/dL
*/
glucose: { min: 40, max: 84 },
/**
* 콜레스테롤 (Cholesterol)
* 단위: mg/dL
*/
cholesterol: { min: 74, max: 252 },
/**
* 유리지방산 (NEFA)
* 단위: μEq/L
*/
nefa: { min: 115, max: 660 },
// ========== 단백질 카테고리 ==========
/**
* 총단백질 (Total Protein)
* 단위: g/dL
*/
totalProtein: { min: 6.2, max: 7.7 },
/**
* 알부민 (Albumin)
* 단위: g/dL
@@ -17,7 +43,7 @@ export const MPT_NORMAL_RANGES = {
/**
* 총 글로불린 (Total Globulin)
* 단위: g/L
* 단위: g/dL
*/
totalGlobulin: { min: 9.1, max: 36.1 },
@@ -74,6 +100,13 @@ export const MPT_NORMAL_RANGES = {
* 단위: mg/dL
*/
magnesium: { min: 1.6, max: 3.3 },
// ========== 기타 카테고리 ==========
/**
* 크레아티닌 (Creatinine)
* 단위: mg/dL
*/
creatinine: { min: 1.0, max: 1.3 },
} as const;
/**