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
-
Usuario abre la aplicación
-
Se cargan los dominios disponibles
-
Usuario ingresa credenciales
-
Sistema valida contra API
-
Se guarda sesión en SharedPreferences
-
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
-
Por QR: Escaneo de código QR
-
Por Geolocalización: Validación de ubicación GPS
-
Por Cámara: Captura de foto como evidencia
-
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
No hay comentarios para mostrar
No hay comentarios para mostrar