first commit
This commit is contained in:
commit
b54624be96
226 files changed
+108840
No files matched your search
+324
@@ -0,0 +1,324 @@
|
||||
export type Paginated<T> = {
|
||||
count: number;
|
||||
next: string | null;
|
||||
previous: string | null;
|
||||
results: T[];
|
||||
};
|
||||
|
||||
export type UserStatus =
|
||||
| 'inactive'
|
||||
| 'gm'
|
||||
| 'gm_admin'
|
||||
| 'buh'
|
||||
| 'bu_admin'
|
||||
| 'director'
|
||||
| 'director_admin'
|
||||
| 'account_admin'
|
||||
| 'superuser';
|
||||
|
||||
export type User = {
|
||||
id: number;
|
||||
user_name: string;
|
||||
status: UserStatus;
|
||||
is_superuser?: boolean;
|
||||
managed_by?: number | null;
|
||||
managed_by_name?: string | null;
|
||||
managed_by_pending?: number | null;
|
||||
managed_by_pending_name?: string | null;
|
||||
managed_by_requested_at?: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type UserWrite = {
|
||||
user_name: string;
|
||||
status: UserStatus;
|
||||
password?: string;
|
||||
managed_by?: number | null;
|
||||
};
|
||||
|
||||
export type CitySite = {
|
||||
id: number;
|
||||
code: string;
|
||||
name: string;
|
||||
api_base_url: string;
|
||||
has_api_key: boolean;
|
||||
registered_by?: number | null;
|
||||
registered_by_name?: string | null;
|
||||
is_active: boolean;
|
||||
last_synced_at: string | null;
|
||||
last_sync_status: string;
|
||||
last_sync_message: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type CitySiteWrite = {
|
||||
code: string;
|
||||
name: string;
|
||||
api_base_url: string;
|
||||
api_key?: string;
|
||||
is_active?: boolean;
|
||||
};
|
||||
|
||||
export type Site = {
|
||||
id: number;
|
||||
site_name: string;
|
||||
user: number;
|
||||
owner_name?: string;
|
||||
city_site?: number | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type Kandang = {
|
||||
id: number;
|
||||
kandang_name: string;
|
||||
site: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type Flock = {
|
||||
id: number;
|
||||
flock_name: string;
|
||||
kandang: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type CycleStatus = 'active' | 'pending_close' | 'closed';
|
||||
|
||||
export type Cycle = {
|
||||
id: number;
|
||||
kandang: number;
|
||||
kandang_name: string;
|
||||
total_days: number;
|
||||
current_day: number;
|
||||
visible_through_date: string;
|
||||
soft_end_date?: string;
|
||||
start_date: string;
|
||||
end_date: string | null;
|
||||
chick_in_weight: number;
|
||||
doc_in_count: number;
|
||||
feed_initial_balance: number;
|
||||
feed_initial_balance_date?: string | null;
|
||||
status: CycleStatus;
|
||||
city_site?: number | null;
|
||||
source_cycle_id?: number | null;
|
||||
proposed_end_date?: string | null;
|
||||
close_requested_at?: string | null;
|
||||
close_requested_by?: number | null;
|
||||
close_approved_by?: number | null;
|
||||
close_approved_at?: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type KPI = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
age: number;
|
||||
mortality: number;
|
||||
mortality_total: number;
|
||||
feed: number;
|
||||
feed_total: number;
|
||||
harvest: number;
|
||||
harvest_total: number;
|
||||
harvest_weight: number;
|
||||
harvest_weight_total: number;
|
||||
chicken_life: number;
|
||||
chicken_life_percentage: number;
|
||||
iot_weight: number;
|
||||
average_harvest_day: number;
|
||||
average_harvest_weight: number;
|
||||
fcr: number;
|
||||
eef: number;
|
||||
cc: number;
|
||||
cw: number;
|
||||
fs: number;
|
||||
manual: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type ManualInput = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
age_manual: number;
|
||||
mortality_manual: number;
|
||||
mortality_manual_total: number;
|
||||
feed_in_manual: number;
|
||||
feed_use_manual: number;
|
||||
feed_in_manual_total: number;
|
||||
feed_use_manual_total: number;
|
||||
feed_out_manual: number;
|
||||
feed_out_manual_total: number;
|
||||
harvest_manual: number;
|
||||
harvest_manual_total: number;
|
||||
harvest_weight_manual: number;
|
||||
harvest_weight_manual_total: number;
|
||||
manual_weight: number;
|
||||
average_harvest_day_manual: number;
|
||||
average_harvest_weight_manual: number;
|
||||
fcr_manual: number;
|
||||
eef_manual: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type ChickenCounting = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
total_count: number;
|
||||
mortality_count: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type ChickenWeight = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
age: number;
|
||||
doc_weight: number;
|
||||
average_weight: number;
|
||||
chicken_count: number;
|
||||
uniformity: number;
|
||||
average_daily_gain: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type LatestAvg = {
|
||||
average_weight: number;
|
||||
date: string;
|
||||
age: number;
|
||||
uniformity: number;
|
||||
average_daily_gain: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
};
|
||||
|
||||
export type Karung = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
in_today: number;
|
||||
out_today: number;
|
||||
in_total: number;
|
||||
out_total: number;
|
||||
feed_use_today: number;
|
||||
feed_use_total: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type PanelIoT = {
|
||||
id: number;
|
||||
flock: number;
|
||||
flock_id: number;
|
||||
kandang: number | null;
|
||||
date: string;
|
||||
timestamp: string | null;
|
||||
wind_speed: number;
|
||||
humidity: number;
|
||||
water_total: number;
|
||||
average_temperature: number;
|
||||
experience_temperature: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type AIInsight = {
|
||||
id: number;
|
||||
cycle: number;
|
||||
kandang: number;
|
||||
flock_id: number;
|
||||
date: string;
|
||||
insight_text: string;
|
||||
alert: string;
|
||||
section: string;
|
||||
session: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
};
|
||||
|
||||
export type KarungRequestResult = {
|
||||
karung: Karung;
|
||||
upstream: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CycleFilter = {
|
||||
cycle_id?: number;
|
||||
kandang_id?: number;
|
||||
site_id?: number;
|
||||
flock_id?: number;
|
||||
date?: string;
|
||||
status?: CycleStatus;
|
||||
};
|
||||
|
||||
export type SiteWrite = { site_name: string; user: number };
|
||||
export type KandangWrite = {
|
||||
kandang_name: string;
|
||||
site: number;
|
||||
};
|
||||
export type FlockWrite = {
|
||||
flock_name: string;
|
||||
kandang: number;
|
||||
};
|
||||
export type CycleWrite = {
|
||||
kandang: number;
|
||||
total_days?: number;
|
||||
current_day?: number;
|
||||
start_date: string;
|
||||
end_date?: string | null;
|
||||
chick_in_weight: number;
|
||||
doc_in_count: number;
|
||||
feed_initial_balance?: number;
|
||||
feed_initial_balance_date?: string | null;
|
||||
status?: CycleStatus;
|
||||
};
|
||||
|
||||
export type InitialBalanceResult = {
|
||||
cycle: number;
|
||||
date: string;
|
||||
feed_initial_balance: number;
|
||||
feed_initial_balance_date: string | null;
|
||||
manual: number;
|
||||
manual_total: number;
|
||||
iot: number | null;
|
||||
accuracy: number | null;
|
||||
sync_error: string | null;
|
||||
};
|
||||
export type CountingWrite = {
|
||||
cycle: number;
|
||||
date: string;
|
||||
total_count?: number;
|
||||
mortality_count?: number;
|
||||
};
|
||||
export type ManualInputWrite = {
|
||||
cycle: number;
|
||||
date?: string;
|
||||
age_manual?: number;
|
||||
mortality_manual?: number;
|
||||
feed_in_manual?: number;
|
||||
feed_use_manual?: number;
|
||||
feed_out_manual?: number;
|
||||
harvest_manual?: number;
|
||||
harvest_weight_manual?: number;
|
||||
manual_weight?: number;
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
export type View =
|
||||
| 'dashboard'
|
||||
| 'dataManagement'
|
||||
| 'weightMonitoring'
|
||||
| 'weightStandard'
|
||||
| 'feedSackCounting'
|
||||
| 'cobbStandard'
|
||||
| 'iotPanel'
|
||||
| 'fcrDashboard'
|
||||
| 'eefDashboard'
|
||||
| 'kandangRanking'
|
||||
| 'kandangSettings'
|
||||
| 'userManagement';
|
||||
@@ -0,0 +1,86 @@
|
||||
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[];
|
||||
}
|
||||
Reference in new issue
Block a user