Ir al contenido

Otros modelos

Ficheros: backend/app/models/user.py, role.py, permission.py.

Campo Tipo Descripción
id UUID PK
email string(255) Único, usado para login.
hashed_password string(255) Hash bcrypt.
nombre string(255) Nombre completo.
is_active bool Usuario activo.

Relación con roles:

user_roles: Mapped[list["UserRole"]]
Campo Tipo Descripción
nombre string(100) Nombre del rol.
descripcion string(500) Descripción.
is_system bool Rol del sistema, no editable.

Relaciones:

user_roles: Mapped[list["UserRole"]]
permissions: Mapped[list["Permission"]]
Campo Tipo Descripción
role_id UUID FK a roles.
modulo string(100) Módulo.
accion string(100) leer, crear, editar, eliminar, validar, auditar.
submenu string(100) Opcional.
view string(100) Opcional.

Restricción: único por (role_id, modulo, accion).

Fichero: backend/app/models/project.py.

Representa una obra. Campos clave:

  • codigo, nombre, direccion, localidad, provincia, cp
  • fecha_inicio, fecha_fin_prevista, fecha_fin_real
  • estado, pem (presupuesto de ejecución material)
  • forma_pago, iva_porcentaje, retenciones_porcentaje
  • client_id
  • share_token: token para acceso público al Gantt.

Relaciones:

client: Mapped["Client"]
milestones: Mapped[list["ProjectMilestone"]]
status_history: Mapped[list["ProjectStatusHistory"]]
warehouses: Mapped[list["ProjectWarehouse"]]
budgets: Mapped[list["Budget"]]

Fichero: backend/app/models/client.py.

Entidad de clientes con datos de contacto, direcciones y relación con proyectos.

Entidad Fichero Propósito
Currency backend/app/models/currency.py Monedas y tipos de cambio.
Unit backend/app/models/unit.py Unidades de medida.
IvaType backend/app/models/budget_template.py Tipos de IVA.
Supplier backend/app/models/supplier.py Proveedores y subcontratas.
Warehouse backend/app/models/warehouse.py Almacenes.
Invoice backend/app/models/invoice.py Facturas cliente y proveedor.
Gantt / tareas backend/app/models/gantt.py Planificación.
SystemLog backend/app/models/system_log.py Logs de actividad.
Attachment backend/app/models/document_models.py Adjuntos.

Todos los modelos principales usan:

  • UUIDPrimaryKeyMixin: PK id UUID.
  • AuditMixin: created_at, updated_at, created_by, updated_by.
  • SoftDeleteMixin en entidades de negocio: deleted_at.