177 lines
7.1 KiB
Python
177 lines
7.1 KiB
Python
from django.db import models
|
|
|
|
from apps.farms.models import Cycle, Flock
|
|
|
|
|
|
class IotPanel(models.Model):
|
|
panel_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
timestamp = models.DateTimeField(null=True, blank=True)
|
|
wind_speed = models.FloatField(default=0.0)
|
|
humidity = models.FloatField(default=0.0)
|
|
water_total = models.FloatField(default=0.0)
|
|
average_temperature = models.FloatField(default=0.0)
|
|
experience_temperature = models.FloatField(default=0.0)
|
|
flock = models.ForeignKey(Flock, on_delete=models.CASCADE, related_name="iot_panels")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "iot_panel"
|
|
ordering = ["-date"]
|
|
verbose_name = "IoT Panel"
|
|
verbose_name_plural = "IoT Panels"
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["flock", "timestamp"], name="uniq_iot_panel_flock_timestamp")
|
|
]
|
|
|
|
|
|
class AIInsight(models.Model):
|
|
date = models.DateField()
|
|
insight_text = models.TextField()
|
|
alert = models.CharField(max_length=100)
|
|
section = models.CharField(max_length=100)
|
|
session = models.CharField(max_length=100)
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="ai_insights")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "ai_insight"
|
|
ordering = ["-date"]
|
|
constraints = [
|
|
models.UniqueConstraint(
|
|
fields=["cycle", "date", "section", "session"],
|
|
name="uniq_ai_insight_cycle_date_section_session",
|
|
)
|
|
]
|
|
|
|
|
|
class FeedSacks(models.Model):
|
|
fs_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
in_today = models.IntegerField(default=0)
|
|
out_today = models.IntegerField(default=0)
|
|
in_total = models.IntegerField(default=0)
|
|
out_total = models.IntegerField(default=0)
|
|
feed_use_today = models.IntegerField(default=0)
|
|
feed_use_total = models.IntegerField(default=0)
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="feed_sacks")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "feed_sacks"
|
|
ordering = ["-date"]
|
|
verbose_name_plural = "Feed sacks"
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["cycle", "date"], name="uniq_feed_sacks_cycle_date")
|
|
]
|
|
|
|
|
|
class ChickenCounting(models.Model):
|
|
cc_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
total_count = models.IntegerField(default=0)
|
|
mortality_count = models.IntegerField(default=0)
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="chicken_countings")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "chicken_counting"
|
|
ordering = ["-date"]
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["cycle", "date"], name="uniq_chicken_counting_cycle_date")
|
|
]
|
|
|
|
|
|
class ChickenWeight(models.Model):
|
|
cw_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
age = models.IntegerField()
|
|
doc_weight = models.IntegerField()
|
|
average_weight = models.FloatField()
|
|
chicken_count = models.IntegerField()
|
|
uniformity = models.FloatField()
|
|
average_daily_gain = models.FloatField()
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="chicken_weights")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "chicken_weight"
|
|
ordering = ["-date"]
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["cycle", "date"], name="uniq_cw_cycle_date")
|
|
]
|
|
|
|
|
|
class ManualInput(models.Model):
|
|
manual_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
age_manual = models.IntegerField(default=0)
|
|
mortality_manual = models.IntegerField(default=0)
|
|
mortality_manual_total = models.IntegerField(default=0)
|
|
feed_in_manual = models.IntegerField(default=0)
|
|
feed_use_manual = models.IntegerField(default=0)
|
|
feed_in_manual_total = models.IntegerField(default=0)
|
|
feed_use_manual_total = models.IntegerField(default=0)
|
|
feed_out_manual = models.IntegerField(default=0)
|
|
feed_out_manual_total = models.IntegerField(default=0)
|
|
harvest_manual = models.IntegerField(default=0)
|
|
harvest_manual_total = models.IntegerField(default=0)
|
|
harvest_weight_manual = models.FloatField(default=0.0)
|
|
harvest_weight_manual_total = models.FloatField(default=0.0)
|
|
manual_weight = models.FloatField(default=0.0)
|
|
average_harvest_day_manual = models.FloatField(default=0.0)
|
|
average_harvest_weight_manual = models.FloatField(default=0.0)
|
|
fcr_manual = models.FloatField(default=0.0)
|
|
eef_manual = models.FloatField(default=0.0)
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="manual_inputs")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "manual_input"
|
|
ordering = ["-date"]
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["cycle", "date"], name="uniq_manual_input_cycle_date")
|
|
]
|
|
|
|
|
|
class KPI(models.Model):
|
|
kpi_id = models.BigAutoField(primary_key=True)
|
|
date = models.DateField()
|
|
age = models.IntegerField(default=0)
|
|
mortality = models.IntegerField(default=0)
|
|
mortality_total = models.IntegerField(default=0)
|
|
feed = models.IntegerField(default=0)
|
|
feed_total = models.IntegerField(default=0)
|
|
harvest = models.IntegerField(default=0)
|
|
harvest_total = models.IntegerField(default=0)
|
|
harvest_weight = models.FloatField(default=0.0)
|
|
harvest_weight_total = models.FloatField(default=0.0)
|
|
chicken_life = models.IntegerField(default=0)
|
|
chicken_life_percentage = models.FloatField(default=0.0)
|
|
iot_weight = models.FloatField(default=0.0)
|
|
average_harvest_day = models.FloatField(default=0.0)
|
|
average_harvest_weight = models.FloatField(default=0.0)
|
|
fcr = models.FloatField(default=0.0)
|
|
eef = models.FloatField(default=0.0)
|
|
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name="kpis")
|
|
cc = models.ForeignKey(ChickenCounting, on_delete=models.RESTRICT, related_name="kpis")
|
|
cw = models.ForeignKey(ChickenWeight, on_delete=models.RESTRICT, related_name="kpis")
|
|
fs = models.ForeignKey(FeedSacks, on_delete=models.RESTRICT, related_name="kpis")
|
|
manual = models.ForeignKey(ManualInput, on_delete=models.RESTRICT, related_name="kpis")
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "kpi"
|
|
ordering = ["-date"]
|
|
verbose_name_plural = "KPIs"
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["cycle", "date"], name="uniq_kpi_cycle_date")
|
|
]
|