Files
Krow-workspace/mock_staff_data_v3_update.md
2025-12-26 15:14:51 -05:00

595 lines
17 KiB
Markdown

# Análisis Exhaustivo de `Map<String, dynamic>` en el Proyecto
Este documento detalla todos los usos del tipo `Map<String, dynamic>` encontrados en los archivos `.dart` del proyecto, incluyendo variables, listas, parámetros y tipos de retorno de funciones.
---
### `lib/widgets/shift_card.dart`
#### 1. Tipo de Retorno de Función: `Map<String, dynamic> _calculateDuration()`
* **Propósito:** Calcula la duración de un turno en horas y devuelve también una cadena de texto para el tiempo de descanso.
* **Estructura del `Map` devuelto:**
```dart
{
'hours': int,
'breakTime': String,
}
```
---
### `lib/services/mock_service.dart`
#### 1. Parámetro de Función: `Future<void> createWorkerProfile(Map<String, dynamic> data)`
* **Propósito:** Simula la creación de un perfil de trabajador. Acepta un `Map` llamado `data` que contiene la información del perfil del nuevo trabajador.
* **Estructura Inferida (por su uso):**
```dart
{
'full_name': String,
'bio': String,
'preferred_locations': List<String>,
'max_distance_miles': double,
'skills': List<String>,
'industries': List<String>,
}
```
---
### `lib/screens/auth/profile_setup_screen.dart`
#### 1. Variable: `static const List<Map<String, dynamic>> _steps`
* **Propósito:** Define los pasos en el asistente de creación de perfiles.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'title': String,
'icon': IconData
}
```
#### 2. Argumento de Función: (Anónimo) en `mockService.createWorkerProfile`
* **Propósito:** Recopila y envía los datos del perfil del nuevo usuario al servicio mock.
* **Estructura:**
```dart
{
'full_name': String,
'bio': String,
'preferred_locations': List<String>,
'max_distance_miles': double,
'skills': List<String>,
'industries': List<String>
}
```
---
### `lib/screens/worker/benefits_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _benefitsData`
* **Propósito:** Contiene los datos de simulación (mock) para los diferentes beneficios del trabajador.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'title': String,
'current': int,
'total': int,
'color': Color,
'description': String,
'history': List<Map<String, dynamic>>, // <- Lista anidada
'requestLabel': String,
'notice': String?,
}
```
* **Estructura anidada de `history`:**
```dart
{
'date': String,
'status': String
}
```
#### 2. Parámetro de Función: `void _handleRequest(Map<String, dynamic> benefit)`
* **Propósito:** Maneja la acción cuando un usuario solicita un beneficio.
* **Estructura:** La misma que los elementos de `_benefitsData`.
#### 3. Parámetro de Widget: `final Map<String, dynamic> benefit`
* **Propósito:** El widget `_BenefitCard` recibe un `Map` para mostrar los detalles de un beneficio.
* **Estructura:** La misma que los elementos de `_benefitsData`.
---
### `lib/screens/worker/worker_profile_screen.dart`
#### 1. Variable: `final Map<String, dynamic> _user`
* **Propósito:** Almacena datos básicos de identificación del usuario.
* **Estructura:**
```dart
{
'full_name': String,
'email': String,
}
```
#### 2. Variable: `final Map<String, dynamic> _profile`
* **Propósito:** Almacena estadísticas y atributos detallados del perfil del trabajador.
* **Estructura:**
```dart
{
'level': String,
'photo_url': String?,
'total_shifts': int,
'average_rating': double,
'on_time_rate': int,
'no_show_count': int,
'cancellation_count': int,
'reliability_score': int,
'phone': String,
'skills': List,
}
```
---
### `lib/screens/worker/worker_profile/onboarding/emergency_contact_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _contacts`
* **Propósito:** Almacena una lista de los contactos de emergencia.
* **Estructura de cada elemento:**
```dart
{
'name': String,
'phone': String,
'relationship': String
}
```
#### 2. Parámetro de Función: `Widget _buildContactForm(int index, Map<String, dynamic> contact)`
* **Propósito:** Construye el widget del formulario para un contacto.
* **Estructura:** La misma que los elementos de `_contacts`.
---
### `lib/screens/worker/worker_profile/onboarding/personal_info_screen.dart`
#### 1. Variable: `final Map<String, dynamic> _user`
* **Propósito:** Almacena los datos básicos del usuario para el formulario.
* **Estructura:**
```dart
{
'full_name': String,
'email': String,
'photo_url': String?,
}
```
---
### `lib/screens/worker/worker_profile/finances/time_card_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _timesheets`
* **Propósito:** Almacena una lista de registros de hojas de tiempo (timesheets).
* **Estructura de cada elemento:**
```dart
{
'id': String,
'shift_id': String,
'date': String, // ISO 8601
'actual_start': String,
'actual_end': String,
'total_hours': double,
'hourly_rate': double,
'total_pay': double,
'status': String,
'shift_title': String,
'client_name': String,
'location': String,
}
```
#### 2. Parámetro de Función: `Widget _buildShiftHistory(List<Map<String, dynamic>> timesheets)`
* **Propósito:** Construye la sección de historial de turnos.
* **Estructura:** Una lista donde cada elemento tiene la estructura de `_timesheets`.
#### 3. Parámetro de Función: `Widget _buildTimesheetCard(Map<String, dynamic> timesheet)`
* **Propósito:** Construye la tarjeta para una sola hoja de tiempo.
* **Estructura:** La misma que los elementos de `_timesheets`.
---
### `lib/screens/worker/worker_profile/finances/bank_account_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _accounts`
* **Propósito:** Almacena una lista de las cuentas bancarias vinculadas.
* **Estructura de cada elemento:**
```dart
{
'id': int,
'bank': String,
'type': String,
'last4': String,
'isPrimary': bool,
}
```
#### 2. Parámetro de Función: `Widget _buildAccountCard(Map<String, dynamic> account)`
* **Propósito:** Construye la tarjeta para una sola cuenta bancaria.
* **Estructura:** La misma que los elementos de `_accounts`.
---
### `lib/screens/worker/worker_profile/level_up/trainings_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _courses`
* **Propósito:** Almacena una lista de cursos de capacitación.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'title': String,
'description': String,
'duration_minutes': int,
'xp_reward': int,
'thumbnail_url': String?,
'progress_percent': int,
'completed': bool,
}
```
---
### `lib/screens/worker/worker_profile/level_up/leaderboard_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _profiles`
* **Propósito:** Almacena los datos de los perfiles para la tabla de clasificación.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'name': String,
'photo_url': String?,
'xp': int,
'level': String,
'user_id': String,
}
```
#### 2. Variable: `final sortedProfiles = List<Map<String, dynamic>>.from(_profiles)`
* **Propósito:** Crea una copia mutable de la lista de perfiles para ordenarla.
* **Estructura:** Los elementos tienen la misma estructura que `_profiles`.
#### 3. Parámetro de Función: `Widget _buildPodium(List<Map<String, dynamic>> topThree)`
* **Propósito:** Construye la sección del podio con los 3 mejores perfiles.
* **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_profiles`.
#### 4. Parámetro de Función: `Map<String, dynamic> profile` (en `_buildPodiumItem`)
* **Propósito:** Construye el item para un perfil en el podio.
* **Estructura:** La misma que un elemento de `_profiles`.
#### 5. Parámetro de Función: `Widget _buildRestList(List<Map<String, dynamic>> rest, ...)`
* **Propósito:** Construye la lista para el resto de los perfiles.
* **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_profiles`.
---
### `lib/screens/worker/worker_profile/onboarding/attire_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _attireOptions`
* **Propósito:** Define las opciones de vestimenta que un trabajador puede seleccionar.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'label': String,
'icon': IconData,
'imageUrl': String,
}
```
---
### `lib/screens/worker/worker_profile/support/faqs_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _faqData`
* **Propósito:** Almacena los datos de las preguntas frecuentes, organizados por categoría.
* **Estructura de cada elemento (categoría):**
```dart
{
'category': String,
'questions': List<Map<String, dynamic>>, // <- Lista anidada
}
```
* **Estructura anidada de `questions`:**
```dart
{
'q': String, // Pregunta
'a': String, // Respuesta
}
```
---
### `lib/screens/worker/worker_profile/support/messages_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _conversations`
* **Propósito:** Contiene los datos de simulación para las conversaciones de chat.
* **Estructura de cada elemento (conversación):**
```dart
{
'sender_id': String,
'sender_name': String,
'lastMessage': String,
'lastTime': DateTime,
'unread': int,
'messages': List<Map<String, dynamic>>, // <- Lista anidada
}
```
* **Estructura anidada de `messages`:**
```dart
{
'content': String,
'sender_id': String,
}
```
#### 2. Variable: `Map<String, dynamic>? _selectedChat`
* **Propósito:** Almacena la conversación que el usuario ha seleccionado para ver.
* **Estructura:** La misma que un elemento de `_conversations`.
---
### `lib/screens/worker/payments_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _recentPayments`
* **Propósito:** Almacena registros detallados de pagos recientes.
* **Estructura de cada elemento:**
```dart
{
'date': String,
'title': String,
'location': String,
'address': String,
'workedTime': String,
'amount': double,
'status': String,
'hours': int,
'rate': int, // Debería ser double
}
```
---
### `lib/screens/worker/worker_profile/compliance/documents_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _requiredDocs`
* **Propósito:** Almacena la lista de documentos de cumplimiento requeridos.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'name': String,
'description': String,
'status': String,
}
```
#### 2. Parámetro de Función: `Widget _buildDocumentCard(Map<String, dynamic> doc)`
* **Propósito:** Construye la tarjeta de UI para un solo documento.
* **Estructura:** La misma que los elementos de `_requiredDocs`.
---
### `lib/screens/worker/worker_profile/compliance/tax_forms_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _forms`
* **Propósito:** Almacena la lista de formularios de impuestos.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'title': String,
'subtitle': String,
'description': String,
'status': String,
'icon': String, // Emoji
}
```
#### 2. Parámetro de Función: `Widget _buildFormCard(Map<String, dynamic> form)`
* **Propósito:** Construye la tarjeta de UI para un solo formulario.
* **Estructura:** La misma que los elementos de `_forms`.
---
### `lib/screens/worker/availability_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _timeSlots`
* **Propósito:** Define las propiedades de los diferentes rangos horarios para la disponibilidad.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'label': String,
'time': String,
'icon': IconData,
'bg': Color,
'iconColor': Color,
}
```
---
### `lib/screens/worker/worker_profile/compliance/certificates_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _certificates`
* **Propósito:** Almacena la lista de certificados de cumplimiento del trabajador.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'name': String,
'icon': IconData,
'color': Color,
'description': String,
'status': String,
'expiry': String?, // ISO 8601
}
```
#### 2. Parámetro de Función: `Widget _buildCertificateCard(Map<String, dynamic> cert)`
* **Propósito:** Construye la tarjeta de UI para un solo certificado.
* **Estructura:** La misma que los elementos de `_certificates`.
#### 3. Parámetro de Función: `void _showUploadModal(BuildContext context, Map<String, dynamic>? cert)`
* **Propósito:** Muestra un modal para subir un certificado.
* **Estructura:** La misma que los elementos de `_certificates`.
---
### `lib/screens/worker/worker_profile/compliance/taxforms/form_i9_screen.dart`
#### 1. Variable: `final Map<String, dynamic> _formData`
* **Propósito:** Almacena el estado de los campos del formulario I-9.
* **Estructura:**
```dart
{
'lastName': String,
'firstName': String,
'middleInitial': String,
'otherLastNames': String,
'address': String,
'aptNumber': String,
'city': String,
'state': String?,
'zipCode': String,
'dateOfBirth': String,
'ssn': String,
'email': String,
'phone': String,
'citizenshipStatus': String,
'uscisNumber': String,
'i94Number': String,
'foreignPassportNumber': String,
'countryOfIssuance': String,
'expirationDate': String,
}
```
---
### `lib/screens/worker/worker_profile/compliance/taxforms/form_w4_screen.dart`
#### 1. Variable: `final Map<String, dynamic> _formData`
* **Propósito:** Almacena el estado de los campos del formulario W-4.
* **Estructura:**
```dart
{
'firstName': String,
'lastName': String,
'address': String,
'cityStateZip': String,
'ssn': String,
'filingStatus': String,
'multipleJobs': bool,
'qualifyingChildren': int,
'otherDependents': int,
'otherIncome': String,
'deductions': String,
'extraWithholding': String,
}
```
---
### `lib/screens/worker/worker_profile/level_up/krow_university_screen.dart`
#### 1. Variable: `final Map<String, dynamic> _profile`
* **Propósito:** Almacena un subconjunto de datos del perfil relevantes para la universidad.
* **Estructura:**
```dart
{
'level': String,
'xp': int,
'badges': List<String>,
}
```
#### 2. Variable: `final List<Map<String, dynamic>> _levels`
* **Propósito:** Define los diferentes niveles de Krower y sus propiedades.
* **Estructura de cada elemento:**
```dart
{
'name': String,
'xpRequired': int,
'icon': IconData,
'colors': List<Color>,
}
```
#### 3. Variable: `final List<Map<String, dynamic>> _categories`
* **Propósito:** Define las categorías para los cursos.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'label': String,
'icon': IconData,
}
```
#### 4. Variable: `final List<Map<String, dynamic>> _courses`
* **Propósito:** Almacena la lista de cursos disponibles.
* **Estructura de cada elemento:**
```dart
{
'id': String,
'title': String,
'description': String,
'category': String,
'duration_minutes': int,
'xp_reward': int,
'level_required': String,
'is_certification': bool,
'progress_percent': int,
'completed': bool,
}
```
#### 5. Parámetro de Función: `Widget _buildCoursesList(List<Map<String, dynamic>> courses)`
* **Propósito:** Construye la lista de widgets de cursos.
* **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_courses`.
---
### `lib/screens/worker/earnings_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _recentPayments`
* **Propósito:** Almacena resúmenes de pagos recientes.
* **Estructura de cada elemento:**
```dart
{
'date': String,
'amount': double,
'shifts': int,
'status': String,
}
```
---
### `lib/screens/worker/clock_in_screen.dart`
#### 1. Variable: `final List<Map<String, dynamic>> _recentActivity`
* **Propósito:** Almacena una lista de actividades recientes de fichaje.
* **Estructura de cada elemento:**
```dart
{
'date': DateTime,
'start': String,
'end': String,
'hours': String,
}
```