Skip to content

Sistema de puntos por progreso y mostrarlos en perfil #10

@MarxMad

Description

@MarxMad

Descripción

Implementar un sistema de puntos basado en el progreso real del usuario (lecciones y cursos completados) y mostrar esos puntos en el perfil del usuario. Los puntos se calculan a partir de los datos guardados en Supabase (issue de progreso).


Pasos

1. Reglas de puntos

  • Definir reglas claras y documentadas, por ejemplo:
    • X puntos por cada lección/sección completada (ej. 10 puntos).
    • Y puntos bonus al completar el 100% de un curso (ej. 50 puntos).
    • (Opcional) Puntos por aprobar cuestionarios en primer intento, etc.
  • Documentar las reglas en el repo (ej. docs/PUNTOS.md) y dejarlas fáciles de cambiar (constantes o config).

2. Cálculo y almacenamiento

  • Decidir dónde se calcula el total de puntos:
    • Opción A: Calcular on-the-fly desde progreso_lecciones + inscripciones (consultas a Supabase).
    • Opción B: Mantener campo puntos en perfiles y actualizarlo al completar cada lección/curso (trigger en Supabase o desde frontend).
  • Si es Opción B: al guardar progreso en progreso_lecciones, actualizar también perfiles.puntos (o una tabla puntos_historial si se quiere historial).
  • Asegurar que el cálculo sea idempotente (no sumar dos veces la misma lección).

3. API o consultas desde el frontend

  • Si el cálculo es en frontend: crear función/servicio que, dado wallet_address, consulte progreso y devuelva { puntos, desglosePorCurso }.
  • Si hay backend (API o Edge): exponer endpoint tipo GET /api/usuario/puntos o GET /api/usuario/perfil que devuelva puntos y progreso (protegido por wallet o sesión).

4. UI de perfil

  • En la página o sección de perfil del usuario:
    • Mostrar puntos totales de forma visible (ej. badge, número grande, “X puntos”).
    • (Opcional) Mostrar desglose: “Curso A: 3/5 lecciones”, “Curso B: completado”, etc.
  • Asegurar que solo se muestre cuando el usuario tenga wallet conectada (o sesión) y que los datos vengan de Supabase.

5. Consistencia

  • Si un usuario completa una lección en dos dispositivos, los puntos deben ser coherentes (una sola fuente de verdad en Supabase).

Criterios de aceptación

  • Existe un conjunto de reglas de puntos documentado.
  • Los puntos se calculan o actualizan a partir del progreso real en Supabase.
  • El usuario puede ver sus puntos en su perfil (y opcionalmente el desglose por curso).
  • No se duplican puntos por la misma lección completada.

Relación con otros issues

  • Bloqueado por: “Sincronizar progreso de lecciones con Supabase”.
  • Bloquea: ninguno (es el último del epic).

Labels sugeridos

frontend, perfil, puntos, gamificación, epic: progreso y puntos

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions