export type ReportAccuracy = number | null; export type DashboardReportType = 'daily' | 'end_cycle'; export interface DashboardReportCountingRow { date: string; day: number; countBefore: number | null; mortality: number | null; harvest: number | null; harvestWeight: number | null; countAfter: number | null; iotCount: number | null; accuracy: ReportAccuracy; } export interface DashboardReportWeightRow { date: string; day: number; avgManual: number | null; avgIot: number | null; uniformity: number | null; difference: number | null; accuracy: ReportAccuracy; } export interface DashboardReportFeedInRow { date: string; manualIn: number | null; iotIn: number | null; accuracy: ReportAccuracy; } export interface DashboardReportFeedUseRow { date: string; day: number; manualUse: number | null; iotUse: number | null; accuracy: ReportAccuracy; } export interface DashboardReportFeedOutRow { date: string; manualOut: number | null; iotOut: number | null; accuracy: ReportAccuracy; } export interface DashboardReportFcrRow { day: number; iotFcr: number | null; feedTotal: number | null; iotWeight: number | null; chickenLife: number | null; harvestWeightTotal: number | null; } export interface DashboardReportEefRow { day: number; iotEef: number | null; chickenLifePercentage: number | null; iotAverageHarvestBw: number | null; iotAverageDayWeight: number | null; iotFcr: number | null; } export interface DashboardReportPayload { cycleId: string; cycleStart: string; cycleEnd: string; kandangId: number; kandangName: string; area: string; upToDay: number; /** DOC / chick-in weight in grams from cycle settings */ docWeight: number | null; generatedAt: string; reportType: DashboardReportType; counting: DashboardReportCountingRow[]; weight: DashboardReportWeightRow[]; feedIn: DashboardReportFeedInRow[]; feedUse: DashboardReportFeedUseRow[]; feedOut: DashboardReportFeedOutRow[]; fcr: DashboardReportFcrRow[]; eef: DashboardReportEefRow[]; }