/**
 * MPT(혈액검사) 관련 타입 정의
 * 백엔드 MptModel Entity 기준으로 작성
 */

import { BaseFields } from './base.types';

/**
 * MPT 혈액검사 정보
 * 백엔드 MptModel Entity와 일치
 */
export interface MptDto extends BaseFields {
  pkMptNo: number; // MPT 번호 (PK)
  cowShortNo?: string; // 개체 요약번호
  fkFarmNo?: number; // 농장번호 FK
  testDt?: string; // 검사일자
  monthAge?: number; // 월령
  milkYield?: number; // 유량
  parity?: number; // 산차

  // 에너지 (3개)
  glucose?: number; // 혈당 (mg/dL)
  cholesterol?: number; // 콜레스테롤 (mg/dL)
  nefa?: number; // 유리지방산(NEFA) (μEq/L)
  bcs?: number; // BCS

  // 단백질 (5개)
  totalProtein?: number; // 총단백질 (g/dL)
  albumin?: number; // 알부민 (g/dL)
  globulin?: number; // 총글로불린 (g/dL)
  agRatio?: number; // A/G 비율
  bun?: number; // 요소태질소(BUN) (mg/dL)

  // 간기능 (3개)
  ast?: number; // AST (U/L)
  ggt?: number; // GGT (U/L)
  fattyLiverIdx?: number; // 지방간지수

  // 미네랄 (5개)
  calcium?: number; // 칼슘 (mg/dL)
  phosphorus?: number; // 인 (mg/dL)
  caPRatio?: number; // 칼슘/인 비율
  magnesium?: number; // 마그네슘 (mg/dL)
  creatinine?: number; // 크레아틴 (mg/dL)

  delDt?: string; // 삭제일시 (Soft Delete)
}

/**
 * MPT 혈액검사 목록 응답
 */
export interface MptListResponseDto {
  totalCount: number; // 전체 검사 수
  mpts: MptDto[]; // MPT 검사 목록
}

/**
 * MPT 혈액검사 상세 응답 (프론트엔드 확장)
 */
export interface MptDetailResponseDto extends MptDto {
  cowInfo?: {
    cowNo: string; // 개체번호
    cowBirthDt?: string; // 생년월일
    grade?: string; // 등급
  };
}

/**
 * 프론트엔드 호환용 ReproMpt 인터페이스
 * 기존 코드와의 호환성을 위해 유지
 */
export interface ReproMpt {
  pkMptNo?: number;
  cowShortNo?: string;
  fkFarmNo?: number;
  reproMptDate?: string; // testDt 매핑
  monthAge?: number;

  // 에너지
  bloodSugar?: number; // glucose 매핑
  cholesterol?: number;
  nefa?: number;

  // 단백질
  totalProtein?: number;
  albumin?: number;
  totalGlobulin?: number; // globulin 매핑
  agRatio?: number;
  bun?: number;

  // 간기능
  ast?: number;
  ggt?: number;
  fattyLiverIndex?: number; // fattyLiverIdx 매핑

  // 미네랄
  calcium?: number;
  phosphorus?: number;
  caPRatio?: number;
  magnesium?: number;
  creatinine?: number;

  reproMptNote?: string;
  regDt?: string;
  updtDt?: string;
}

// 타입 alias (호환성)
export type Mpt = MptDto;
export type MptList = MptListResponseDto;
export type MptDetail = MptDetailResponseDto;
