필터 및 화면 수정사항 반영
This commit is contained in:
@@ -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('아이디 또는 비밀번호가 틀렸습니다');
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user