Otros modelos
Usuarios, roles y permisos
Sección titulada «Usuarios, roles y permisos»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"]]Permission
Sección titulada «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).
Proyecto (Project)
Sección titulada «Proyecto (Project)»Fichero: backend/app/models/project.py.
Representa una obra. Campos clave:
codigo,nombre,direccion,localidad,provincia,cpfecha_inicio,fecha_fin_prevista,fecha_fin_realestado,pem(presupuesto de ejecución material)forma_pago,iva_porcentaje,retenciones_porcentajeclient_idshare_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"]]Cliente (Client)
Sección titulada «Cliente (Client)»Fichero: backend/app/models/client.py.
Entidad de clientes con datos de contacto, direcciones y relación con proyectos.
Otros modelos relevantes
Sección titulada «Otros modelos relevantes»| 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. |
Convenciones transversales
Sección titulada «Convenciones transversales»Todos los modelos principales usan:
UUIDPrimaryKeyMixin: PKidUUID.AuditMixin:created_at,updated_at,created_by,updated_by.SoftDeleteMixinen entidades de negocio:deleted_at.