Ir al contenido

Modelos de datos

Serconsa utiliza SQLAlchemy 2.0 con estilo Mapped y Pydantic v2 para los esquemas de API. Las tablas comparten una base común con auditoría y borrado lógico.

Definidos en backend/app/models/base.py:

  • Base: DeclarativeBase de SQLAlchemy.
  • AuditMixin: añade created_at, updated_at, created_by, updated_by.
  • SoftDeleteMixin: añade deleted_at para borrado lógico.
  • UUIDPrimaryKeyMixin: PK id de tipo UUID v4.
class Budget(Base, AuditMixin, SoftDeleteMixin, UUIDPrimaryKeyMixin):
__tablename__ = "budgets"
  • Tablas en snake_case plural: budgets, budget_items, users.
  • Claves foráneas: {entidad}_id.
  • Timestamps automáticos: created_at, updated_at.
  • Auditoría: created_by, updated_by.
  • Borrado lógico: deleted_at en entidades principales.
Entidad Fichero Descripción
Presupuesto backend/app/models/budget.py Cabecera del presupuesto, estado, totales, configuración.
Partida / Capítulo backend/app/models/budget_item.py Árbol jerárquico de conceptos.
Medición backend/app/models/budget_measurement.py Líneas de medición N×L×A×H por partida.
Descompuesto backend/app/models/budget_breakdown.py Recursos que componen una partida.
Certificación backend/app/models/certification.py Certificaciones mensuales y líneas.
Variables backend/app/models/budget_variable.py Variables de cálculo del presupuesto.
Usuario / Rol / Permiso backend/app/models/user.py, role.py, permission.py RBAC.
Proyecto backend/app/models/project.py Datos del proyecto de obra.
Project 1──────* Budget 1──────* BudgetItem 1──────* BudgetBreakdown
│
* BudgetMeasurement 1──* BudgetMeasurementLine
│
* BudgetItemScenario
Budget 1──────* BudgetVariable
Project 1──────* Certification 1──────* CertificationLine
│
* CertificationSummary
* CertificationCollection
User *──────* Role *──────* Permission