| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from flask_sqlalchemy import SQLAlchemy
- db = SQLAlchemy()
- class CatalogoPaneles(db.Model):
- __tablename__ = 'catalogo_paneles'
- id_panel = db.Column(db.Integer, primary_key=True)
- marca = db.Column(db.String(50), nullable=False)
- modelo = db.Column(db.String(50), nullable=False)
- eficiencia_r = db.Column(db.Float, nullable=False)
- area_m2 = db.Column(db.Float, nullable=False)
- precio_unitario = db.Column(db.Float, nullable=False)
- class DatosSolaresCiudad(db.Model):
- __tablename__ = 'datos_solares_ciudad'
- id_ciudad = db.Column(db.Integer, primary_key=True)
- nombre_ciudad = db.Column(db.String(100), nullable=False)
- provincia = db.Column(db.String(100), nullable=False)
- irradiacion_h_promedio = db.Column(db.Float, nullable=False)
- class Casa(db.Model):
- __tablename__ = 'casas'
- id_casa = db.Column(db.Integer, primary_key=True)
- nombre = db.Column(db.String(100), nullable=False)
- area_techo = db.Column(db.Float, nullable=False) # Área disponible en m2
- orientacion = db.Column(db.String(20), nullable=False, default='Norte')
- inclinacion = db.Column(db.Float, nullable=False, default=0.0)
- id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False)
-
- ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('casas', lazy=True))
- class ProyectosUsuario(db.Model):
- __tablename__ = 'proyectos_usuario'
- id_proyecto = db.Column(db.Integer, primary_key=True)
- nombre_cliente = db.Column(db.String(100), nullable=False)
- # Vinculamos opcionalmente a una casa
- id_casa = db.Column(db.Integer, db.ForeignKey('casas.id_casa'), nullable=True)
- id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False)
- id_panel = db.Column(db.Integer, db.ForeignKey('catalogo_paneles.id_panel'), nullable=False)
- cantidad_paneles = db.Column(db.Integer, nullable=False)
- energia_estimada_mensual = db.Column(db.Float, nullable=False)
- ahorro_estimado = db.Column(db.Float, nullable=True)
- consumo_actual_kwh = db.Column(db.Float, nullable=True)
- costo_actual_mensual = db.Column(db.Float, nullable=True)
- created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
- fecha_referencia = db.Column(db.DateTime, nullable=False, default=db.func.current_timestamp())
- ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('proyectos', lazy=True))
- panel = db.relationship('CatalogoPaneles', backref=db.backref('proyectos', lazy=True))
- casa = db.relationship('Casa', backref=db.backref('proyectos', lazy=True))
- class Configuracion(db.Model):
- __tablename__ = 'configuracion'
- id_config = db.Column(db.Integer, primary_key=True)
- clave = db.Column(db.String(50), unique=True, nullable=False)
- valor = db.Column(db.String(100), nullable=False)
|