first commit

This commit is contained in:
Alberto-Audrix committed 2026-09-08 15:21:23 +07:00
commit b54624be96
226 files changed
+108840

No files matched your search

+324
View File
@@ -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;
};
+13
View File
@@ -0,0 +1,13 @@
export type View =
| 'dashboard'
| 'dataManagement'
| 'weightMonitoring'
| 'weightStandard'
| 'feedSackCounting'
| 'cobbStandard'
| 'iotPanel'
| 'fcrDashboard'
| 'eefDashboard'
| 'kandangRanking'
| 'kandangSettings'
| 'userManagement';
+86
View File
@@ -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[];
}