```mermaid sequenceDiagram participant Cliente as Cliente API/Vue participant Servicio as Servicio participant DAO as UsuarioDao participant Singleton as ConexionBD participant BD as SQLite Cliente->>Servicio: login(username, password) Servicio->>DAO: login(username, password) DAO->>Singleton: instancia() Singleton-->>DAO: ConexionBD unica DAO->>Singleton: obtener_conexion() Singleton-->>DAO: sqlite3.Connection DAO->>BD: SELECT WHERE username BD-->>DAO: Row DAO->>DAO: check_password_hash() alt Contrasena OK DAO->>DAO: generar token UUID DAO->>BD: UPDATE session_token BD-->>DAO: OK DAO-->>Servicio: Usuario(id, username, token) Servicio-->>Cliente: user Usuario else Contrasena incorrecta DAO-->>Servicio: None Servicio-->>Cliente: error Credenciales invalidas end ```