from django.db import models class Country(models.Model): code = models.CharField(max_length=3, unique=True) name = models.CharField(max_length=100) class Meta: verbose_name = 'País' verbose_name_plural = 'Países' def __str__(self): return self.name class GeoScenario(models.Model): name = models.CharField(max_length=255, help_text='Nombre del escenario geográfico base') upload_date = models.DateTimeField(auto_now_add=True) country = models.ForeignKey(Country, on_delete=models.SET_NULL, null=True) geographic_field_name = models.CharField(max_length=100, help_text='Columna con el identificador geográfico (ej. N_URBANO, PUEBLO)') csv_file = models.FileField(upload_to='geo_scenarios/') class Meta: verbose_name = 'Escenario Geográfico' verbose_name_plural = 'Escenarios Geográficos' def __str__(self): return f"{self.name} ({self.country})" class OptScenario(models.Model): geo_scenario = models.ForeignKey(GeoScenario, on_delete=models.CASCADE, related_name='opt_scenarios') name = models.CharField(max_length=255, help_text='Nombre del escenario de optimización') type_of_waste = models.CharField(max_length=100, help_text='Tipo de residuo (ej. orgánico, reciclable)') strategy = models.CharField(max_length=100, help_text='Método de optimización utilizado') upload_date = models.DateTimeField(auto_now_add=True) optimized_csv = models.FileField(upload_to='opt_scenarios/') # Nuevo campo: dispatch_json = models.FileField( upload_to='opt_scenarios/json/', blank=True, null=True, help_text='Archivo JSON con el resultado de despacho por ruta' ) class Meta: verbose_name = 'Escenario de Optimización' verbose_name_plural = 'Escenarios de Optimización' def __str__(self): return f"{self.name} ({self.type_of_waste})"