미사용 파일정리

This commit is contained in:
2025-12-24 08:25:44 +09:00
parent 1644fcf241
commit 05d89fdfcd
120 changed files with 817 additions and 85913 deletions

View File

@@ -12,69 +12,30 @@
* ============================================================
*/
/**
* 랭킹 기준 타입
* - GENOME: 유전체 형질 기반 랭킹 (35개 형질 EBV 가중 평균)
*/
export enum RankingCriteriaType {
GENOME = 'GENOME',
}
import {
IsEnum,
IsOptional,
IsArray,
IsString,
IsNumber,
Min,
Max,
ValidateNested,
} from 'class-validator';
import { Type } from 'class-transformer';
import {
FilterCondition,
SortOption,
PaginationOption,
FilterEngineOptions,
} from '../../shared/filter/interfaces/filter.interface';
import { RankingCriteriaType } from '../../common/const/RankingCriteriaType';
// Re-export for convenience
export { RankingCriteriaType };
// ============================================================
// 필터 관련 타입 (FilterEngine에서 사용)
// ============================================================
export type FilterOperator =
| 'eq' // 같음
| 'ne' // 같지 않음
| 'gt' // 초과
| 'gte' // 이상
| 'lt' // 미만
| 'lte' // 이하
| 'like' // 포함 (문자열)
| 'in' // 배열 내 포함
| 'between'; // 범위
export type SortOrder = 'ASC' | 'DESC';
/**
* 필터 조건
* 예: { field: 'cowSex', operator: 'eq', value: 'F' }
*/
export interface FilterCondition {
field: string;
operator: FilterOperator;
value: any;
}
/**
* 정렬 옵션
*/
export interface SortOption {
field: string;
order: SortOrder;
}
/**
* 페이지네이션 옵션
*/
export interface PaginationOption {
page: number; // 페이지 번호 (1부터 시작)
limit: number; // 페이지당 개수
}
/**
* 필터 엔진 옵션
* - 개체 목록 필터링에 사용
*/
export interface FilterEngineOptions {
filters?: FilterCondition[];
sorts?: SortOption[];
pagination?: PaginationOption;
}
// ============================================================
// 랭킹 조건 타입
// 랭킹 조건 DTO
// ============================================================
/**
@@ -84,21 +45,62 @@ export interface FilterEngineOptions {
*
* 예: { traitNm: '도체중', weight: 8 }
*/
export interface TraitRankingCondition {
traitNm: string; // 형질명 (예: '도체중', '근내지방도')
weight?: number; // 가중치 1~10 (기본값: 1)
export class TraitRankingConditionDto {
@IsString()
traitNm: string; // 형질명 (예: '도체중', '근내지방도')
@IsOptional()
@IsNumber()
@Min(1)
@Max(10)
weight?: number; // 가중치 1~10 (기본값: 1)
}
/**
* 랭킹 옵션
* 랭킹 옵션 DTO
*/
export interface RankingOptions {
criteriaType: RankingCriteriaType; // 랭킹 기준 타입
traitConditions?: TraitRankingCondition[]; // GENOME용: 형질별 가중치
export class RankingOptionsDto {
@IsEnum(RankingCriteriaType)
criteriaType: RankingCriteriaType; // 랭킹 기준 타입
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => TraitRankingConditionDto)
traitConditions?: TraitRankingConditionDto[]; // GENOME용: 형질별 가중치
@IsOptional()
@IsNumber()
@Min(1)
limit?: number;
@IsOptional()
@IsNumber()
@Min(0)
offset?: number;
}
// ============================================================
// 필터 옵션 DTO (FilterEngine용)
// ============================================================
/**
* 필터 엔진 옵션 DTO
* - 개체 목록 필터링에 사용
*/
export class FilterEngineOptionsDto implements FilterEngineOptions {
@IsOptional()
@IsArray()
filters?: FilterCondition[];
@IsOptional()
@IsArray()
sorts?: SortOption[];
@IsOptional()
pagination?: PaginationOption;
}
// ============================================================
// 메인 요청 DTO
// ============================================================
@@ -123,7 +125,13 @@ export interface RankingOptions {
* }
* }
*/
export interface RankingRequestDto {
filterOptions?: FilterEngineOptions; // 필터/정렬/페이지네이션
rankingOptions: RankingOptions; // 랭킹 조건
export class RankingRequestDto {
@IsOptional()
@ValidateNested()
@Type(() => FilterEngineOptionsDto)
filterOptions?: FilterEngineOptionsDto; // 필터/정렬/페이지네이션
@ValidateNested()
@Type(() => RankingOptionsDto)
rankingOptions: RankingOptionsDto; // 랭킹 조건
}