Structure: - control-plane/: Registries, SIMCO directives, CI/CD templates - projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics - shared/: Libs catalog, knowledge-base Key features: - Centralized port, domain, database, and service registries - 23 SIMCO directives + 6 fundamental principles - NEXUS agent profiles with delegation rules - Validation scripts for workspace integrity - Dockerfiles for all services - Path aliases for quick reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
18 KiB
US-PERF-006: Showcasing de Logros
Información Básica
| Campo | Valor |
|---|---|
| ID | US-PERF-006 |
| Épica | EXT-004 - Perfiles Avanzados |
| Título | Sistema de Exhibición y Showcasing de Logros |
| Prioridad | Alta (P1) |
| Story Points | 7 SP |
| Estado | NOT STARTED |
| Fase | Mes 3 (Extensiones Primera Ola) |
| Presupuesto | $3,500 MXN |
Historia de Usuario
Como estudiante de la plataforma Gamilit Quiero exhibir mis logros, insignias y estadísticas destacadas en mi perfil y compartirlas Para mostrar mis logros a amigos, motivarme a conseguir más y celebrar mis éxitos
Valor de Negocio
Impacto
- Motivación: Showcasing aumenta participación en gamificación 55%
- Engagement: Usuarios con logros destacados juegan 40% más
- Social Proof: Compartir logros genera efecto viral
- Retention: Coleccionistas de badges tienen 50% menos churn
Métricas de Éxito
-
75% usuarios destacan al menos 3 insignias en perfil
-
60% comparten logros en redes sociales
-
80% interactúan con galería de logros semanalmente
- Incremento 35% en completación de logros difíciles
Criterios de Aceptación
CA-01: Galería de Logros
Dado que un estudiante accede a su galería Cuando visualiza logros Entonces debe ver:
- Vista Grid: Todas las insignias en cuadrícula
- Logros Desbloqueados: Color completo, animación sutil
- Logros Bloqueados: Silueta gris, candado, tooltip "¿Cómo desbloquear?"
- Información al hacer hover/tap:
- Nombre del logro
- Descripción
- Fecha de desbloqueo (si aplica)
- Criterios para desbloquear (si bloqueado)
- Rareza: Común / Raro / Épico / Legendario
- % de usuarios que lo tienen
- Contador: "42 de 120 logros desbloqueados (35%)"
- Barra de progreso visual de colección completa
CA-02: Filtros y Búsqueda de Logros
Dado que la galería puede tener 100+ logros Cuando el usuario filtra Entonces puede usar:
- Filtros por Estado:
- Todos
- Desbloqueados
- Bloqueados
- En progreso (ej: 7/10 mecánicas completadas)
- Filtros por Categoría:
- Progreso académico
- Racha y consistencia
- Social
- Coleccionista
- Especiales/Secretos
- Filtros por Rareza: Común, Raro, Épico, Legendario
- Ordenar por:
- Fecha de desbloqueo (recientes primero)
- Rareza (legendarios primero)
- Nombre (A-Z)
- Progreso (más cercanos a desbloquear)
- Búsqueda: Por nombre o descripción
- Filtros se combinan (AND logic)
CA-03: Insignias Destacadas (Pinned Badges)
Dado que el usuario quiere exhibir sus mejores logros Cuando selecciona insignias destacadas Entonces puede:
- Seleccionar hasta 6 insignias para destacar
- Arrastrar para reordenar posición (1-6)
- Vista de selección: solo logros desbloqueados
- Insignias destacadas aparecen:
- En parte superior del perfil público
- En tarjeta de usuario en listas (ej: leaderboard)
- En tooltips de nombre de usuario
- Tamaño extra grande con animación especial
- Cambiar selección cuando quiera (sin límite de cambios)
- Preset de "Auto-destacar más raros" (IA selecciona top 6)
CA-04: Timeline de Logros
Dado que el usuario quiere ver su progresión Cuando accede a timeline Entonces debe ver:
- Cronología visual estilo timeline vertical
- Cada logro muestra:
- Insignia animada
- Nombre y descripción
- Fecha y hora exacta de desbloqueo
- Contexto: "Desbloqueado al completar Módulo 3"
- Reacciones de amigos (si compartió)
- Filtrar por periodo:
- Última semana
- Último mes
- Últimos 3 meses
- Todo el tiempo
- Scroll infinito para cargar más
- Exportar timeline como imagen o PDF
- Estadística: "Desbloqueaste 12 logros este mes (+5 vs mes pasado)"
CA-05: Showcase de Estadísticas Impresionantes
Dado que el usuario tiene estadísticas destacadas Cuando configura showcase Entonces puede exhibir:
- Top Stats Calculadas Automáticamente:
- "Top 1% en Matemáticas a nivel nacional"
- "Racha de 47 días (Top 5% de la plataforma)"
- "100% de acierto en últimas 20 mecánicas"
- "Master en Módulo 4 (primer intento)"
- "235 logros desbloqueados (Top 10 global)"
- Seleccionar hasta 4 stats para mostrar en perfil
- Stats actualizadas en tiempo real
- Diseño visual llamativo (tarjetas coloridas)
- Comparativa con promedio de plataforma
- Tooltip con explicación de cómo se calcula
CA-06: Colecciones de Insignias
Dado que algunos logros forman sets Cuando visualiza colecciones Entonces debe ver:
- Sets Temáticos:
- "Maestro Maya" (todas las insignias culturales)
- "Polímata" (excelencia en todos los módulos)
- "Social Butterfly" (todas las sociales)
- "Speedrunner" (completar bajo tiempo récord)
- Progreso de cada colección: "4/7 insignias"
- Recompensa al completar set:
- Meta-insignia especial
- Bonus de Cacao (500-2000 según rareza)
- Título especial en perfil
- Vista de galería por colecciones
- Insignias faltantes con pistas de cómo obtener
CA-07: Compartir Logros en Redes Sociales
Dado que el usuario quiere compartir un logro Cuando comparte en redes Entonces debe poder:
- Botón "Compartir" en cada logro
- Generar imagen Open Graph atractiva:
- Insignia grande centrada
- Nombre del logro
- Fecha de desbloqueo
- Estadística relevante (ej: "Solo 5% lo tiene")
- Branding de Gamilit
- Username del jugador
- Compartir en:
- Copiar enlace directo
- Preview antes de compartir
- Landing page pública del logro (si usuario permite)
- Trackear shares (analytics)
CA-08: Comparación de Logros con Amigos
Dado que el usuario tiene amigos (US-PERF-004) Cuando compara logros Entonces puede ver:
- Vista comparativa lado a lado:
- Mis logros vs Amigo
- Logros en común (verde)
- Logros únicos míos (azul)
- Logros únicos del amigo (gris)
- Estadísticas comparativas:
- "Tienes 12 logros más que Juan"
- "María tiene 3 logros épicos que no tienes"
- Filtrar por: Todos / En común / Únicos
- "Desafiar amigo": sugerir quest para empatar logros
- Leaderboard de logros entre amigos
CA-09: Logros Secretos
Dado que algunos logros deben ser sorpresa Cuando visualiza logros secretos Entonces debe:
- Aparecer en galería como "???" (sin pistas)
- Al desbloquear, animación especial "¡Logro Secreto!"
- No revelar criterios hasta desbloquear
- Aumentan engagement por curiosidad
- Ejemplos:
- "Easter Egg Hunter" (encontrar huevo de pascua oculto)
- "Night Owl" (estudiar después de medianoche)
- "Perfectionist" (100% en 10 módulos consecutivos)
- Lista de logros secretos existentes (sin detalles)
CA-10: Progreso en Tiempo Real
Dado que algunos logros tienen progreso parcial Cuando trabaja hacia un logro Entonces debe ver:
- Barra de progreso: "7/10 mecánicas completadas"
- % de avance: "70% hacia 'Experto en Módulo 2'"
- Estimación de tiempo: "~2 días al ritmo actual"
- Notificación al alcanzar hitos: "¡Mitad del camino!"
- Vista de "Más cercanos a completar" (top 5)
- Tooltip con pasos restantes específicos
CA-11: Gamificación del Showcasing
Dado que mostrar logros debe ser rewarding Cuando el usuario interactúa con sistema Entonces recibe:
- Recompensas por Exhibir:
- Primera insignia destacada: 50 Cacao
- Completar showcase completo (6 badges): Badge "Showman"
- Primer share en redes: 100 Cacao
- Compartir 10 logros: Badge "Embajador"
- Recompensas por Coleccionar:
- Desbloquear 25 logros: Badge "Coleccionista Novato"
- Desbloquear 50 logros: Badge "Coleccionista Experto"
- Desbloquear 100 logros: Badge "Maestro Coleccionista" + 1000 Cacao
- Quest semanal: "Desbloquea 3 logros nuevos" (300 Cacao)
CA-12: Exportación de Galería
Dado que el usuario quiere preservar logros Cuando exporta galería Entonces puede:
- Exportar como imagen de mosaico (todos los logros)
- Exportar como PDF detallado (con fechas, descripciones)
- Exportar como JSON (data para portfolio)
- Generar certificado digital de logros
- Imprimir galería física (formato optimizado)
- Compartir galería completa con enlace público
CA-13: Responsive y Accesibilidad
Dado que la galería debe ser accesible Cuando usuarios visualizan Entonces debe:
- Grid responsive: 6 columnas (desktop) → 3 (tablet) → 2 (mobile)
- Insignias táctiles grandes en mobile (min 80x80px)
- Navegación por teclado en galería
- Screen reader describe logros:
- Estado (desbloqueado/bloqueado)
- Nombre y descripción
- Rareza y fecha
- Alto contraste en logros bloqueados
- Animaciones respetan prefers-reduced-motion
- ARIA labels en filtros y botones
CA-14: Performance y Optimización
Dado que puede haber 200+ insignias Cuando carga galería Entonces debe:
- Virtual scrolling para grandes cantidades
- Lazy loading de imágenes de insignias
- Sprites para iconos (reducir requests)
- Cache de galería en localStorage
- Galería completa carga en <1 segundo
- Filtros aplican en <100ms
- Animaciones smooth 60 FPS
CA-15: Analytics e Insights
Dado que se quiere mejorar sistema de logros Cuando usuarios interactúan Entonces trackear:
- Logros más compartidos
- Logros más destacados
- Tiempo promedio para desbloquear cada logro
- % de usuarios que completan colecciones
- Logros más difíciles (menos desbloqueados)
- Correlación entre showcasing y engagement
- Heatmap de filtros más usados
Especificaciones Técnicas
Frontend Components
src/features/achievements/
├── pages/
│ ├── AchievementsGalleryPage.tsx
│ ├── AchievementDetailPage.tsx
│ └── CollectionsPage.tsx
├── components/
│ ├── AchievementGrid.tsx
│ ├── AchievementCard.tsx
│ ├── PinnedBadges.tsx
│ ├── AchievementTimeline.tsx
│ ├── StatsShowcase.tsx
│ ├── CollectionProgress.tsx
│ ├── ShareModal.tsx
│ ├── ComparisonView.tsx
│ ├── AchievementFilters.tsx
│ └── ProgressTracker.tsx
├── hooks/
│ ├── useAchievements.ts
│ ├── usePinnedBadges.ts
│ ├── useCollections.ts
│ └── useAchievementProgress.ts
└── utils/
├── achievementCalculator.ts
├── socialShareGenerator.ts
└── rarityCalculator.ts
TypeScript Interfaces
interface Achievement {
id: string;
name: string;
description: string;
icon: string;
category: AchievementCategory;
rarity: 'common' | 'rare' | 'epic' | 'legendary';
isSecret: boolean;
criteria: AchievementCriteria;
rewards: {
cacao: number;
xp: number;
items?: string[];
};
metadata: {
totalUsersUnlocked: number;
percentageUnlocked: number;
averageTimeToUnlock: number; // days
};
}
interface UserAchievement {
achievementId: string;
userId: string;
unlockedAt?: Date;
progress?: {
current: number;
target: number;
percentage: number;
};
isPinned: boolean;
pinnedPosition?: number; // 1-6
isShared: boolean;
shareCount: number;
}
interface AchievementCollection {
id: string;
name: string;
description: string;
achievements: string[]; // achievement IDs
reward: {
metaBadge: string;
cacao: number;
title?: string;
};
progress: {
unlocked: number;
total: number;
percentage: number;
};
}
interface ShowcaseStat {
id: string;
label: string;
value: string;
comparison: string; // "Top 1% nationally"
color: string;
icon: string;
}
interface ShareableAchievement {
achievement: Achievement;
user: {
username: string;
avatar: string;
};
unlockedAt: Date;
imageUrl: string; // generated Open Graph image
shareUrl: string;
}
API Endpoints
// Achievements
GET /api/achievements
GET /api/achievements/:id
GET /api/users/:userId/achievements
POST /api/users/:userId/achievements/:id/pin
DELETE /api/users/:userId/achievements/:id/unpin
PUT /api/users/:userId/achievements/reorder-pins
// Collections
GET /api/achievements/collections
GET /api/users/:userId/collections
// Sharing
POST /api/achievements/:id/share
GET /api/achievements/:id/share-image
GET /api/achievements/shared/:shareId (public)
// Stats
GET /api/users/:userId/showcase-stats
GET /api/users/:userId/achievements/timeline
GET /api/users/:userId/achievements/compare/:friendId
// Export
GET /api/users/:userId/achievements/export/pdf
GET /api/users/:userId/achievements/export/image
GET /api/users/:userId/achievements/export/json
Technology Stack
Frontend:
- framer-motion para animaciones de insignias
- react-grid-layout para reordenar pinned badges
- html-to-image para exportación de galería
- react-share para compartir en redes sociales
- recharts para timeline visual
Backend:
- Puppeteer/Playwright para generar Open Graph images
- Sharp para procesamiento de imágenes
- Canvas API para generar certificados
- PostgreSQL para almacenar achievements y progreso
- Redis para cache de estadísticas
Diferenciación con Alcance Inicial (EAI)
Alcance Inicial (EAI)
- EP004: Sistema básico de logros y badges
- Logros se desbloquean y aparecen en perfil
- Sin galería, sin showcasing, sin compartir
Esta Historia (EXT-004)
- Galería completa de logros con 200+ insignias
- Sistema de destacado (6 badges pinnados)
- Colecciones y sets de logros
- Timeline de progresión
- Estadísticas impresionantes (Top %)
- Compartir en redes sociales con OG images
- Comparación con amigos
- Exportación y certificados
- Esto es extensión premium del sistema de logros
Dependencias
Depende de
- EAI-003: Sistema de gamificación y logros base
- US-PERF-001: Sistema de perfiles
- US-PERF-004: Amigos (para comparación)
Bloquea a
- EXT-007: Portal de Comunidad (usa showcasing)
Definición de Terminado (DoD)
- Galería de logros con grid responsive
- Sistema de filtros y búsqueda
- 6 insignias destacadas configurables
- Timeline de logros con scroll infinito
- Showcase de estadísticas impresionantes
- Sistema de colecciones (5+ sets)
- Compartir en redes sociales (FB, Twitter, WhatsApp)
- Generación de Open Graph images
- Comparación con amigos
- Logros secretos (10+ implementados)
- Progreso en tiempo real
- Exportación (PDF, imagen, JSON)
- Gamificación del showcasing
- Tests unitarios >80% coverage
- Tests de integración
- Performance: galería <1s
- Accesibilidad WCAG 2.1 AA
- API endpoints documentados
- Guía de usuario
- Video tutorial
Riesgos y Mitigaciones
| Riesgo | Probabilidad | Impacto | Mitigación |
|---|---|---|---|
| Performance con 200+ insignias | Media | Alto | Virtual scrolling, lazy loading, sprites |
| Generación de OG images lenta | Media | Medio | Queue con workers, cache de imágenes |
| Usuarios comparten contenido inapropiado | Baja | Medio | Moderación de shares, reportes |
| Colecciones muy difíciles desmotivan | Media | Medio | Balance testing, adjust rewards |
Estimación Detallada (7 SP)
| Tarea | Horas | Responsable |
|---|---|---|
| Diseño UI/UX | 8h | UX Designer |
| Galería de logros | 10h | Frontend Dev |
| Sistema de filtros | 6h | Frontend Dev |
| Pinned badges | 6h | Frontend Dev |
| Timeline | 8h | Frontend Dev |
| Showcase stats | 6h | Frontend Dev |
| Colecciones | 8h | Frontend Dev |
| Social sharing + OG images | 10h | Frontend Dev |
| Comparación amigos | 6h | Frontend Dev |
| Exportación | 8h | Backend Dev |
| API endpoints | 8h | Backend Dev |
| Puppeteer OG generator | 6h | Backend Dev |
| Testing | 10h | QA + Devs |
| Documentación | 4h | Tech Lead |
| TOTAL | 104h |
Presupuesto: $3,500 MXN (~$200 USD) Duración Estimada: 2-3 días (equipo de 5-6 personas)
Tareas de Implementación
Backend (12.6h - 45%)
- Diseñar schema para achievements, user_achievements y collections (2h)
- Implementar API de galería de logros con filtros (2h)
- Crear sistema de pinned badges (destacar 6 insignias) (1.5h)
- Desarrollar motor de colecciones de logros (2h)
- Implementar generación de Open Graph images con Puppeteer (2.5h)
- Crear API de sharing en redes sociales (1.5h)
- Desarrollar sistema de exportación (PDF, imagen, JSON) (1.1h)
Frontend (9.8h - 35%)
- Crear AchievementsGalleryPage con grid responsive (2h)
- Implementar sistema de filtros y búsqueda de logros (1.5h)
- Desarrollar componente de pinned badges con drag & drop (1.5h)
- Crear AchievementTimeline con scroll infinito (1.5h)
- Implementar ShareModal para compartir en redes sociales (1.5h)
- Desarrollar ComparisonView para comparar con amigos (1h)
- Crear sistema de progreso en tiempo real para logros (0.8h)
Testing y QA (4.2h - 15%)
- Escribir tests unitarios para galería y logros (2h)
- Crear tests de integración para showcasing (1.5h)
- Validar performance con 200+ insignias (<1s) (0.5h)
- Testing de accesibilidad (0.2h)
Deploy y Documentación (1.4h - 5%)
- Documentar API de achievements (0.6h)
- Crear guía de usuario para showcasing (0.5h)
- Producir video tutorial de logros (0.3h)
Total Estimado: 28h
Cronograma
| Fase | Fecha Inicio Planificada | Fecha Fin Estimada | Horas | Estado |
|---|---|---|---|---|
| Backend | 01 Nov 2024 | 02 Nov 2024 | 12.6h | Planificado |
| Frontend | 02 Nov 2024 | 03 Nov 2024 | 9.8h | Planificado |
| Testing | 03 Nov 2024 | 04 Nov 2024 | 4.2h | Planificado |
| Deploy | 04 Nov 2024 | 04 Nov 2024 | 1.4h | Planificado |
Tags
#ext-004 #logros #achievements #gamificacion #showcasing #social-sharing #colecciones #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: EP004-gamification + EP008-social-features Compliance: PF-001 (XXX líneas)