backend/issues/models.py

94 lines
3.1 KiB
Python
Raw Permalink Normal View History

2025-03-23 21:24:08 +10:00
from django.db import models
class IssueCategory(models.Model):
"""Категории проблем"""
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Zone(models.Model):
"""Зоны, где возникают проблемы"""
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Issue(models.Model):
"""Конкретные проблемы"""
category = models.ForeignKey(IssueCategory, on_delete=models.CASCADE, related_name="issues")
zone = models.ForeignKey(Zone, on_delete=models.CASCADE, related_name="issues")
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.category.name} - {self.zone.name}: {self.description[:50]}"
"""GET /api/categories/ список категорий
POST /api/categories/ создать категорию
GET /api/zones/ список зон
POST /api/zones/ создать зону
GET /api/issues/ список проблем
POST /api/issues/ добавить проблему
DELETE /api/issues/<id>/ удалить проблему"""
"""Модели справочника номенклатура и сообщения"""
class Nomenclature(models.Model):
name = models.CharField(max_length=255)
short_name = models.CharField(max_length=100)
gtin = models.CharField(max_length=14, unique=True)
groupe_water = models.CharField(max_length=255)
groupe_names = models.CharField(max_length=255)
def __str__(self):
return self.name
class Message(models.Model):
identifier = models.CharField(max_length=100, unique=True)
text = models.TextField()
def __str__(self):
return f"{self.identifier}: {self.text[:30]}"
class Plant(models.Model):
"""Справочник заводов"""
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class ProductionLine(models.Model):
"""Справочник производственных линий"""
name = models.CharField(max_length=255, unique=True)
plant = models.ForeignKey(Plant, on_delete=models.CASCADE, related_name="lines")
def __str__(self):
return f"{self.plant.name} - {self.name}"
class ProductionZone(models.Model):
"""Справочник производственных зон"""
name = models.CharField(max_length=255)
line = models.ForeignKey(ProductionLine, on_delete=models.CASCADE, related_name="zones")
class Meta:
unique_together = ('name', 'line') # Зона уникальна в пределах линии
def __str__(self):
return f"{self.line.name} - {self.name}"
class DowntimeReason(models.Model):
"""Справочник причин простоев"""
name = models.CharField(max_length=255, unique=True)
description = models.TextField(blank=True)
def __str__(self):
return self.name