# US-PERF-003: Accesibilidad y Gamificación Personalizada ## Información Básica | Campo | Valor | |-------|-------| | **ID** | US-PERF-003 | | **Épica** | EXT-004 - Perfiles Avanzados | | **Título** | Configuración de Accesibilidad, Audio y Preferencias de Gamificación | | **Prioridad** | Media (P2) | | **Story Points** | 5 SP | | **Estado** | NOT STARTED | | **Fase** | Mes 3 (Extensiones Primera Ola) | | **Presupuesto** | $2,500 MXN | --- ## Historia de Usuario **Como** usuario con necesidades específicas de accesibilidad o preferencias de experiencia gamificada **Quiero** configurar opciones de accesibilidad (alto contraste, lector de pantalla, movimiento reducido) y personalizar mi experiencia de gamificación (rankings, notificaciones de XP, celebraciones) **Para** adaptar la plataforma a mis capacidades y disfrutar de una experiencia cómoda y motivadora --- ## Valor de Negocio ### Impacto - **Inclusión**: Accesible para usuarios con discapacidades visuales, motoras, cognitivas - **Compliance**: Cumplimiento WCAG 2.1 AA (legal requirement) - **Personalización**: Usuarios controlan nivel de gamificación - **Experiencia**: Flexibilidad mejora satisfacción 25% ### Métricas de Éxito - >15% usuarios activan al menos 1 opción de accesibilidad - >30% usuarios ajustan preferencias de gamificación - Tiempo de carga con alto contraste < 2s - 100% compatibilidad screen readers (JAWS, NVDA, VoiceOver) --- ## Criterios de Aceptación ### CA-01: Configuración de Accesibilidad **Dado** que el usuario configura accesibilidad **Cuando** accede a la sección **Entonces** puede activar: - **Alto Contraste**: aumenta contraste de texto/fondo a ratio 7:1 mínimo - **Movimiento Reducido**: desactiva animaciones y transiciones (respeta prefers-reduced-motion) - **Navegación por Teclado**: indicadores de foco visibles mejorados - **Lector de Pantalla**: optimizaciones adicionales para ARIA labels - **Subtítulos**: activar para todos los videos - **Descripción de Imágenes**: mostrar alt text siempre visible - **Focus Visible**: indicadores de foco extra visibles (3px border) - Link a guía completa de accesibilidad - Explicación de beneficios de cada opción ### CA-02: Configuración de Audio y Sonido **Dado** que la plataforma tiene efectos de audio **Cuando** el usuario configura audio **Entonces** puede ajustar: - **Efectos de Sonido**: ON/OFF (clicks, notificaciones, logros) - **Música de Fondo**: ON/OFF (si aplicable) - **Volumen General**: slider 0-100% - **Volumen de Efectos**: slider 0-100% - **Volumen de Música**: slider 0-100% - **Sonidos de Notificación**: ON/OFF - Preview de sonidos al ajustar (reproducir muestra) - Guardar preferencias localmente (localStorage) - Mute rápido con botón global ### CA-03: Preferencias de Gamificación **Dado** que el usuario personaliza su experiencia gamificada **Cuando** ajusta preferencias de gamificación **Entonces** puede configurar: - **Mostrar en Rankings**: Sí / No (ocultar de leaderboards públicos) - **Comparaciones Sociales**: Activadas / Solo Amigos / Desactivadas - **Notificaciones de XP/Cacao**: Siempre / Solo grandes cantidades (>50) / Nunca - **Celebraciones Animadas**: Todas / Solo importantes (logros, level up) / Ninguna - **Showcasear Logros**: Público / Solo Amigos / Privado - **Multiplicadores Visibles**: Sí / No (mostrar bonos activos) - Mantener motivación sin presión social - Efectos reflejados inmediatamente en interfaz ### CA-04: Modo de Lectura Optimizado **Dado** que el usuario prefiere lectura clara **Cuando** activa modo de lectura **Entonces** se aplica: - Fuente optimizada para dislexia (OpenDyslexic opcional) - Espaciado de línea aumentado (1.5x) - Ancho máximo de párrafo (70 caracteres) - Reducción de distracciones visuales - Fondo crema en lugar de blanco puro - Resaltado de línea actual al leer ### CA-05: Configuración de Navegación **Dado** que el usuario necesita navegación adaptada **Cuando** configura navegación **Entonces** puede: - Activar **Breadcrumbs** siempre visibles - Tamaño de botones: Normal / Grande / Extra Grande (touch targets 44px+) - Posición de menú: Lateral / Superior / Inferior - Mostrar **Tooltips** siempre / Al pasar mouse / Nunca - Confirmaciones extra: Siempre pedir confirmación antes de acciones importantes ### CA-06: Atajos de Teclado Personalizados **Dado** que el usuario usa navegación por teclado **Cuando** accede a atajos **Entonces** puede: - Ver lista completa de atajos disponibles (modal con Tab) - Atajos predefinidos: - `Ctrl+K`: Búsqueda rápida - `Ctrl+H`: Ir a Home/Dashboard - `Ctrl+P`: Perfil - `Ctrl+N`: Notificaciones - `G+M`: Ir a Mis Mecánicas - `G+L`: Ir a Leaderboard - `?`: Mostrar ayuda - Personalizar atajos (opcional) - Export/import de configuración de atajos ### CA-07: Experiencia Sensorial Reducida **Dado** que el usuario tiene sensibilidad sensorial **Cuando** activa modo reducido **Entonces** se aplica: - Desactivar todas las animaciones - Eliminar efectos de parallax - Reducir colores vibrantes a paleta suave - Eliminar videos auto-play - Desactivar efectos de hover complejos - Mantener funcionalidad completa sin estética distractora ### CA-08: Idioma y Localización **Dado** que el usuario configura idioma **Cuando** selecciona preferencias **Entonces** puede: - **Idioma de Interfaz**: Español / Inglés - **Formato de Fecha**: DD/MM/YYYY / MM/DD/YYYY / YYYY-MM-DD - **Formato de Hora**: 12h (AM/PM) / 24h - **Zona Horaria**: Auto-detectar / Seleccionar manualmente - **Moneda**: MXN / USD (para referencia de costos) - Cambios aplicados inmediatamente - Persistencia en backend para sincronizar dispositivos ### CA-09: Configuración de Densidad Visual **Dado** que el usuario ajusta densidad de interfaz **Cuando** cambia la configuración **Entonces** puede elegir: - **Compacta**: máxima información en pantalla, espaciado mínimo - **Cómoda**: balance entre información y espacio (default) - **Espaciosa**: máximo espacio, ideal para touch y accesibilidad - Preview en tiempo real del cambio - Afecta: padding de cards, tamaño de fuente, espaciado entre elementos ### CA-10: Persistencia y Sincronización **Dado** que el usuario configura preferencias **Cuando** guarda cambios **Entonces** el sistema debe: - Guardar en base de datos (backend) - Sincronizar entre todos los dispositivos del usuario - Aplicar cambios inmediatamente sin reload - Cache en localStorage para carga rápida inicial - Detectar conflictos entre dispositivos (usar más reciente) - Export de configuración como archivo JSON - Import de configuración desde archivo --- ## Especificaciones Técnicas ### Frontend Components ``` src/pages/preferences/ ├── AccessibilitySection.tsx ├── AudioSection.tsx ├── GamificationSection.tsx ├── NavigationSection.tsx ├── KeyboardShortcutsSection.tsx ├── LocalizationSection.tsx └── components/ ├── VolumeSlider.tsx ├── ShortcutKeyBinder.tsx ├── DensityPreview.tsx └── AccessibilityChecker.tsx ``` ### TypeScript Interfaces ```typescript interface AccessibilitySettings { highContrast: boolean; reducedMotion: boolean; keyboardNavigation: boolean; screenReaderOptimizations: boolean; alwaysShowCaptions: boolean; alwaysShowAltText: boolean; enhancedFocus: boolean; dyslexiaFont: boolean; readingMode: boolean; } interface AudioSettings { soundEffects: boolean; backgroundMusic: boolean; masterVolume: number; // 0-100 effectsVolume: number; musicVolume: number; notificationSounds: boolean; } interface GamificationSettings { showInRankings: boolean; socialComparisons: 'all' | 'friends' | 'none'; rewardNotifications: 'always' | 'large' | 'never'; celebrations: 'all' | 'important' | 'none'; showcaseVisibility: 'public' | 'friends' | 'private'; showMultipliers: boolean; } interface NavigationSettings { breadcrumbsAlwaysVisible: boolean; buttonSize: 'normal' | 'large' | 'xlarge'; menuPosition: 'side' | 'top' | 'bottom'; tooltipBehavior: 'always' | 'hover' | 'never'; extraConfirmations: boolean; } ``` ### API Endpoints ```typescript // PUT /api/preferences/:userId/accessibility // PUT /api/preferences/:userId/audio // PUT /api/preferences/:userId/gamification // GET /api/preferences/:userId/export // POST /api/preferences/:userId/import ``` --- ## Definición de Terminado (DoD) - [ ] Sección de accesibilidad implementada - [ ] Alto contraste funcional (ratio 7:1) - [ ] Reduced motion respeta prefers-reduced-motion - [ ] Screen reader compatible (ARIA completo) - [ ] Configuración de audio con sliders - [ ] Preview de sonidos funcional - [ ] Preferencias de gamificación - [ ] Modo de lectura optimizado - [ ] Fuente para dislexia disponible - [ ] Atajos de teclado documentados - [ ] Configuración de navegación - [ ] Idioma y localización - [ ] Densidad visual con preview - [ ] Persistencia en backend - [ ] Sincronización multi-dispositivo - [ ] Export/import de configuración - [ ] Tests de accesibilidad (axe-core, WAVE) - [ ] Compliance WCAG 2.1 AA verificado - [ ] Tests con screen readers - [ ] Documentación de accesibilidad --- ## Dependencias ### Depende de - **US-PERF-001**: Sistema de preferencias de usuario - **EAI-003**: Sistema de gamificación --- ## Riesgos y Mitigaciones | Riesgo | Probabilidad | Impacto | Mitigación | |--------|--------------|---------|------------| | Alto contraste rompe diseño | Media | Medio | Testing exhaustivo, CSS variables | | Reduced motion elimina feedback visual | Media | Bajo | Alternativas visuales estáticas | | Screen readers no funcionan | Baja | Alto | Testing con JAWS, NVDA, VoiceOver | | Sincronización falla entre dispositivos | Media | Bajo | Fallback a localStorage, retry logic | --- ## Estimación Detallada (5 SP) | Tarea | Horas | Responsable | |-------|-------|-------------| | Diseño UX/UX accesible | 6h | UX Designer | | Implementar alto contraste | 5h | Frontend Dev | | Reduced motion | 4h | Frontend Dev | | Screen reader optimizations | 6h | Frontend Dev | | Audio controls | 5h | Frontend Dev | | Gamificación preferences | 5h | Frontend Dev | | Modo lectura | 4h | Frontend Dev | | Atajos de teclado | 5h | Frontend Dev | | Navegación y densidad | 4h | Frontend Dev | | Idioma y localización | 6h | Frontend Dev | | Backend API | 4h | Backend Dev | | Sincronización | 4h | Backend Dev | | Testing accesibilidad | 8h | QA + Accessibility Specialist | | Documentación | 4h | Tech Lead | | **TOTAL** | **70h** | | **Presupuesto**: $2,500 MXN (~$145 USD) **Duración Estimada**: 2 días (equipo de 4-5 personas) --- ## Tareas de Implementación ### Backend (9h - 45%) - [ ] Diseñar schema para preferencias de accesibilidad y gamificación (1.5h) - [ ] Implementar endpoints PUT /api/preferences/:userId/accessibility (2h) - [ ] Crear endpoints para configuración de audio y gamificación (2h) - [ ] Desarrollar sistema de sincronización multi-dispositivo (2h) - [ ] Implementar export/import de configuración como JSON (1.5h) ### Frontend (7h - 35%) - [ ] Crear AccessibilitySection con toggles (1.5h) - [ ] Implementar AudioSection con sliders de volumen (1h) - [ ] Desarrollar GamificationSection con previews (1.5h) - [ ] Crear modo de lectura optimizado con fuente para dislexia (1h) - [ ] Implementar atajos de teclado personalizados (1h) - [ ] Desarrollar configuración de densidad visual con preview (1h) ### Testing y QA (3h - 15%) - [ ] Realizar tests de accesibilidad con axe-core y WAVE (1.5h) - [ ] Testing con screen readers (JAWS, NVDA, VoiceOver) (1h) - [ ] Verificar compliance WCAG 2.1 AA (0.5h) ### Deploy y Documentación (1h - 5%) - [ ] Documentar API de preferencias (0.5h) - [ ] Crear documentación de accesibilidad para usuarios (0.5h) **Total Estimado**: 20h --- ## Cronograma | Fase | Fecha Inicio Planificada | Fecha Fin Estimada | Horas | Estado | |------|--------------------------|-------------------|-------|--------| | Backend | 28 Oct 2024 | 29 Oct 2024 | 9h | Planificado | | Frontend | 29 Oct 2024 | 30 Oct 2024 | 7h | Planificado | | Testing | 30 Oct 2024 | 31 Oct 2024 | 3h | Planificado | | Deploy | 31 Oct 2024 | 31 Oct 2024 | 1h | Planificado | --- ## Tags #ext-004 #accesibilidad #wcag #audio #gamificacion #personalizacion #inclusividad #mes-3 --- **Creado**: 2025-11-02 **Última Actualización**: 2025-11-02 **Autor**: Sistema de Migración - Subagente EXT 4-6 **Estado**: Pendiente de Aprobación **Versión**: 1.0 **Origen**: Migrado desde EP005/US-005-05-settings-page.md (secciones accesibilidad/audio/gamificación extraídas) **Compliance**: PF-001 (383 líneas < 400L límite)