Ir al contenido principal

Documentación detallada de cada módulo:

MÓDULO 1: LOGIN

Información General

Nombre del módulo: Login
Descripción: Módulo de autenticación y acceso a la aplicación.
Punto de entrada: Pantalla inicial de la aplicación
Estado: Disponible

Rutas

  • Ruta principal: /LoginView

  • Nombre constante: LoginView.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Pantalla inicial (sin menú)
Opción: N/A
Acceso: Automático al iniciar la aplicación

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/Login/

├── LoginNew.dart                          # Pantalla principal de login

├── Bloc/

│   └── login_bloc.dart                    # Lógica de negocio (BLoC)

├── Models/

│   ├── domains.dart                       # Modelo de dominios

│   └── station.dart                       # Modelo de estación

└── Service/

    └── login_service.dart                 # Servicio de comunicación con API


Backend - Endpoints API

Base URL: https://sistemacargonew.gppcargo.com/

Funcionalidad

Método

Endpoint

Parámetros

Autenticación

POST

api/login-app-markings

user, password, domain

Obtener Dominios

GET

api/domains

-

Guardar Registro

POST

api/login-app-markings

user, version

Validar Token

POST

api/validate-token

token

Modelos de Datos

Domains.dart

- token: String

- domain: String

- id: int


Station.dart

- id: int

- name: String

- latitude: double

- longitude: double


Funciones Principales

Función

Descripción

Parámetros

loginS()

Autentica el usuario en el sistema

Map<String, dynamic> body

saveRegister()

Guarda el registro de versión

String? user

obtainDomain()

Obtiene los dominios disponibles

-

obtainDomain() (BLoC)

Solicita dominios en el BLoC

BuildContext context

Tablas Relacionadas (Backend)

  • login_app_markings: Tabla de autenticación

  • domains: Tabla de dominios/clientes

  • stations: Tabla de estaciones

Flujo Principal

  1. Usuario abre la aplicación

  2. Se cargan los dominios disponibles

  3. Usuario ingresa credenciales

  4. Sistema valida contra API

  5. Se guarda sesión en SharedPreferences

  6. Se redirige a HomeView

Preferencias Locales Almacenadas

  • username: Usuario guardado

  • password: Contraseña guardada

  • stateUserSaveLogin: Booleano para recordar credenciales

  • ultimaPagina: Última página visitada

 


 

MÓDULO 2: HOME

Información General

Nombre del módulo: Home / Inicio
Descripción: Panel principal con resumen de marcaciones, información del usuario y navegación a otros módulos.
Estado: Disponible

Rutas

  • Ruta principal: /HomeView

  • Nombre constante: HomeView.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Menú desplegable (Drawer)
Opciones:

  • Mi Perfil

  • Marcaciones

  • Asistencia

  • Términos y Condiciones

  • Cerrar Sesión

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/Home/

├── home_view.dart                         # Pantalla principal

├── Bloc/

│   └── home_bloc.dart                     # Lógica de negocio

├── Models/

│   └── resumen.dart                       # Modelo de resumen de marcaciones

├── Services/

│   └── home_services.dart                 # Servicios de API

└── Widgets/

    ├── boxes.dart                         # Cajas de información

    ├── drawer.dart                        # Menú desplegable

    ├── newPost.dart                       # Componente de nuevas publicaciones

    ├── post_target.dart                   # Componente de publicaciones dirigidas

    └── tile.dart                          # Componentes tipo lista


Backend - Servicios

El módulo Home utiliza servicios de otros módulos:

  • LoginService: Para validar sesión

  • PerfilService: Para obtener datos del usuario

  • AsistenciaService: Para estadísticas de asistencia

Modelos de Datos

AttendanceResume (resumen.dart)

- totalMarcaciones: int

- marcacionesHoy: int

- estadoActual: String

- horaUltimaActividad: DateTime


Person (person.dart)

- id: int

- userid: String

- nombre: String

- apellido: String

- email: String

- telefono: String


Funciones Principales

Función

Descripción

obtenerResumen()

Obtiene el resumen de marcaciones del usuario

cargarDatosUsuario()

Carga información del perfil

cargarEstadisticas()

Obtiene estadísticas de asistencia

cerrarSesion()

Cierra la sesión del usuario

Componentes Visuales

  • Header: Información del usuario y bienvenida

  • Cajas de Estadísticas: Resumen de marcaciones

  • Drawer: Menú de navegación lateral

  • Confetti Animation: Animación de celebración

Tablas Relacionadas (Backend)

  • users: Información de usuarios

  • markings: Historial de marcaciones

  • attendance: Asistencia del usuario

 


 

MÓDULO 3: ASISTENCIA

Información General

Nombre del módulo: Asistencia
Descripción: Módulo para visualizar y gestionar asistencia con búsqueda por fecha y calendario interactivo.
Estado: Disponible

Rutas

  • Ruta principal: /AsistenciaView

  • Nombre constante: AsistenciaView.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Accesible desde Home → Drawer → Asistencia
Ubicación: Tercera opción en el menú principal

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/Asistencia/

├── asistencia_view.dart                   # Pantalla principal

├── Bloc/

│   └── asistencia_bloc.dart               # Lógica de negocio

├── Models/

│   └── search_model.dart                  # Modelo de búsqueda

├── Services/

│   └── asistencia_service.dart            # Servicios de API

└── Widgets/

    ├── box_asistant.dart                  # Cajas de asistencia

    ├── calendart.dart                     # Calendario interactivo

    └── openCamera.dart                    # Acceso a cámara


Backend - Endpoints API

Base URL: https://sistemacargonew.gppcargo.com/

Funcionalidad

Método

Endpoint

Parámetros

Buscar Asistencia

POST

api/search-markings-attendance-by-user-date

date, user, token

Modelos de Datos

SearchModel (search_model.dart)

- date: String

- markings: List<Marking>

  - type: String (Entrada, Salida)

  - time: DateTime

  - status: String

  - location: String


Funciones Principales

Función

Descripción

Parámetros

searcAsistence()

Busca asistencias por fecha

String date

selectDate()

Selecciona una fecha del calendario

DateTime date

filterByRange()

Filtra por rango de fechas

DateTime start, DateTime end

Características

  • Calendario interactivo: Selección visual de fechas

  • Búsqueda por fecha: Obtiene marcaciones de un día específico

  • Visualización de historial: Lista detallada de entradas/salidas

  • Indicadores de estado: Puntual, Tarde, Ausente

Tablas Relacionadas (Backend)

  • markings: Registros de marcaciones

  • attendance: Registro de asistencia

  • users: Información del usuario

 


 

MÓDULO 4: MARCACIONES

Información General

Nombre del módulo: Marcaciones
Descripción: Módulo para realizar marcaciones de entrada/salida con opciones de QR, geolocalización, cámara y registro de motivos.
Estado: Disponible
Permisos requeridos: Cámara, GPS, Almacenamiento

Rutas

  • Ruta principal: /MarcacionesGPP

  • Nombre constante: MarcacionesGPP.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Accesible desde Home → Drawer → Marcaciones
Ubicación: Segunda opción en el menú principal

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/Marcaciones/

├── marcaciones_view_GPP.dart              # Pantalla principal (511 líneas)

├── Bloc/

│   └── marcaciones_Bloc.dart              # Lógica de negocio

├── Logic/

│   └── marcaciones_Logic.dart             # Lógica de procesamiento

├── Models/

│   ├── marcaciones_Model.dart             # Modelo de marcación

│   └── marcaciones_obtain.dart            # Modelo de datos obtenidos

├── Services/

│   └── Marcaciones_Services.dart          # Servicios de API (120 líneas)

└── Widgets/

    └── (Widgets específicos del módulo)


Backend - Endpoints API

Base URL: https://sistemacargonew.gppcargo.com/
Base URL (RRHH): https://rrhh.gppcargo.com/

Funcionalidad

Método

Endpoint

Parámetros

Crear Marcación

POST

api/marking

type_marking, user, station, file_id, token, motive

Buscar Marcaciones

POST

api/search-markings-attendance-by-user

date, user, token

Obtener Datos Actuales

POST

api/markings-date-now-by-user

user, token

Validar Geovalla

POST

api/verify-latitude-longitude-geofence

latitude, longitude, station, token

Validar QR

POST

api/method/rr_hh.recursos_humanos.doctype.asistencia.api.validate_qr_by_station

qr_id, station_id, fecha

Validar Uso Fuera de Sede

POST

api/method/rr_hh.recursos_humanos.doctype.asistencia.api.validate_use_number

number, token

Modelos de Datos

MarcacionesObtain

- id: int

- user: String

- type: String (Entrada, Salida)

- timestamp: DateTime

- latitude: double

- longitude: double

- station: int

- motive: String

- status: String


MarcacionesModel

- typeMarking: String

- userId: String

- stationId: int

- fileId: String

- motive: String

- token: String


Funciones Principales

Función

Descripción

Parámetros

generateMarcacion()

Genera una nueva marcación

String type, String file, String motive

validateGeocerca()

Valida si está dentro de la geovalla

num latitude, num longitude

validateQR()

Valida un código QR

String scanQR, String fecha

validateToken()

Verifica validez del token

-

showMarcaciones()

Obtiene marcaciones por fecha

String fecha

obtainDataMarcaciones()

Obtiene marcaciones actuales

-

validateFueraSede()

Valida si puede usar función fuera de sede

-

Opciones de Marcación

  1. Por QR: Escaneo de código QR

  2. Por Geolocalización: Validación de ubicación GPS

  3. Por Cámara: Captura de foto como evidencia

  4. Con Motivo: Registro de razón de marcación

Validaciones

  • ✅ Verificación de permisos de cámara

  • ✅ Verificación de permisos de GPS

  • ✅ Validación de token

  • ✅ Validación de geovalla (geofence)

  • ✅ Validación de QR por estación

  • ✅ Validación de uso fuera de sede

Tablas Relacionadas (Backend)

  • markings: Registros de marcaciones

  • users: Información de usuarios

  • stations: Estaciones de trabajo

  • qr_codes: Códigos QR registrados

  • geofence: Áreas permitidas

  • marking_motives: Motivos de marcación

 


 

MÓDULO 5: PERFIL

Información General

Nombre del módulo: Perfil / Mi Cuenta
Descripción: Módulo para visualizar y editar información personal del usuario.
Estado: Disponible

Rutas

  • Ruta principal: /PerfilGPP

  • Nombre constante: PerfilGPP.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Accesible desde Home → Drawer → Mi Perfil
Ubicación: Primera opción en el menú principal

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/Perfil/

├── perfilnewGpp.dart                      # Pantalla principal

├── Bloc/

│   └── perfil_bloc.dart                   # Lógica de negocio

├── Models/

│   ├── perfil.dart                        # Modelo de datos del perfil

│   └── person.dart                        # Modelo de persona

├── Services/

│   └── perfil_service.dart                # Servicios de API

└── Widgets/

    ├── header.dart                        # Encabezado con foto

    └── list_deteails.dart                 # Lista de detalles


Backend - Servicios

Los servicios de perfil se integran con:

  • LoginService: Para validación de credenciales

  • Endpoints de usuario en api/user o similar

Modelos de Datos

PerfilDatos (perfil.dart)

- id: int

- nombre: String

- apellido: String

- email: String

- telefono: String

- departamento: String

- puesto: String

- fechaIngreso: DateTime

- fotoUrl: String

- estado: String


Person (person.dart)

- id: int

- userid: String

- nombre: String

- apellido: String

- email: String

- telefono: String

- departamento: String

- rol: String


Funciones Principales

Función

Descripción

obtenerDatosUsuario()

Obtiene información completa del usuario

actualizarPerfil()

Actualiza los datos del perfil

cambiarContraseña()

Cambia la contraseña del usuario

cargarFoto()

Carga la foto de perfil

Información Mostrada

  • Foto de perfil

  • Nombre completo

  • Email

  • Teléfono

  • Departamento

  • Puesto

  • Fecha de ingreso

  • Estado del usuario

Tablas Relacionadas (Backend)

  • users: Información de usuarios

  • employees: Datos de empleados

  • departments: Departamentos

 


 

MÓDULO 6: TÉRMINOS Y CONDICIONES

Información General

Nombre del módulo: Términos y Condiciones
Descripción: Módulo para visualizar y aceptar términos y condiciones de uso.
Estado: Disponible

Rutas

  • Ruta principal: /TerminosView (inferido)

  • Nombre constante: TerminosView.name

  • Tipo: Widget con estado (StatefulWidget)

Ubicación en el Sistema

Menú: Accesible desde Home → Drawer → Términos y Condiciones
Ubicación: Última opción en el menú principal

Estructura de Carpetas y Archivos - Frontend

lib/src/Pages/TerminosYCondiciones/

├── termino_View.dart                      # Pantalla principal

├── Bloc/

│   └── (Lógica de negocio)

└── Services/

    └── (Servicios específicos)


Funciones Principales

  • Visualizar términos y condiciones

  • Aceptar términos

  • Rechazar y cerrar sesión

Información Asociada

  • Versión de términos

  • Fecha de última actualización

  • Estado de aceptación del usuario