|
| 1 | +# 🌟 Sistema de Estrellas - Resumen de Cambios |
| 2 | + |
| 3 | +## Descripción General |
| 4 | +Se ha reemplazado completamente el sistema de votos (upvote/downvote) por un sistema de estrellas más simple y directo. |
| 5 | + |
| 6 | +## Cambios Principales |
| 7 | + |
| 8 | +### 1. Base de Datos |
| 9 | +- ✅ **Tabla `votos` → `estrellas`**: Renombrada la tabla |
| 10 | +- ✅ **Eliminada columna `tipo`**: Ya no hay "arriba" o "abajo" |
| 11 | +- ✅ **Agregada columna `vistas`** en tabla `pregunta`: Para contar visualizaciones |
| 12 | +- ✅ **Eliminada columna `votos`** de tabla `comentarios`: Los comentarios ya no tienen votos |
| 13 | + |
| 14 | +### 2. Modelos |
| 15 | +- ✅ **Modelo Voto → Estrella**: Renombrado y simplificado |
| 16 | +- ✅ **Modelo Preguntum**: |
| 17 | + - Métodos: `total_estrellas()`, `tiene_estrella_de?(usuario)`, `incrementar_vista!()` |
| 18 | + - Relaciones: `has_many :estrellas`, `has_many :usuarios_que_dieron_estrella` |
| 19 | +- ✅ **Modelo Usuario**: |
| 20 | + - Métodos: `total_estrellas_otorgadas()`, `total_estrellas_recibidas()` |
| 21 | + - Relaciones: `has_many :estrellas`, `has_many :preguntas_favoritas` |
| 22 | +- ✅ **Modelo Comentario**: Eliminada toda lógica de votos |
| 23 | + |
| 24 | +### 3. Controladores |
| 25 | +- ✅ **PreguntaController**: |
| 26 | + - Nuevo: `toggle_estrella` - Agregar/quitar estrella |
| 27 | + - Nuevo: `quien_dio_estrella` - Ver quién dio estrella (solo autor) |
| 28 | + - Nuevo: `favoritos` - Ver preguntas favoritas del usuario |
| 29 | + - Eliminado: `votar_arriba`, `votar_abajo`, `procesar_voto` |
| 30 | +- ✅ **ComentariosController**: Eliminadas acciones de votos |
| 31 | +- ✅ **UsuariosController**: Actualizado para mostrar estadísticas de estrellas |
| 32 | + |
| 33 | +### 4. Rutas |
| 34 | +```ruby |
| 35 | +# Nuevas rutas |
| 36 | +post 'pregunta/:id/toggle_estrella' |
| 37 | +get 'pregunta/:id/quien_dio_estrella' |
| 38 | +get 'favoritos' |
| 39 | + |
| 40 | +# Rutas eliminadas |
| 41 | +patch 'pregunta/:id/votar_arriba' |
| 42 | +patch 'pregunta/:id/votar_abajo' |
| 43 | +patch 'comentarios/:id/votar_arriba' |
| 44 | +patch 'comentarios/:id/votar_abajo' |
| 45 | +``` |
| 46 | + |
| 47 | +### 5. Vistas |
| 48 | + |
| 49 | +#### Menú Lateral |
| 50 | +- ✅ Agregado enlace "Favoritos" (solo para usuarios autenticados) |
| 51 | + |
| 52 | +#### Index de Preguntas (`pregunta/index.html.erb`) |
| 53 | +- ✅ Muestra: `★ X estrellas` y `X vistas` |
| 54 | +- ✅ Eliminados: Botones ▲ ▼ |
| 55 | + |
| 56 | +#### Show de Pregunta (`pregunta/show.html.erb`) |
| 57 | +- ✅ Botón: "☆ Dar Estrella" / "★ Quitar Estrella" (según estado) |
| 58 | +- ✅ Para el autor: Link para ver quiénes le dieron estrella |
| 59 | +- ✅ Contador de vistas incrementado automáticamente |
| 60 | + |
| 61 | +#### Comentarios (`comentarios/_comentario.html.erb`) |
| 62 | +- ✅ Eliminados: Botones de votar y contador de votos |
| 63 | +- ✅ Mantenido: Sistema de respuestas anidadas |
| 64 | + |
| 65 | +#### Nueva Vista: Favoritos (`pregunta/favoritos.html.erb`) |
| 66 | +- ✅ Lista de preguntas a las que el usuario dio estrella |
| 67 | +- ✅ Ordenadas por fecha de creación descendente |
| 68 | + |
| 69 | +#### Nueva Vista: Quién Dio Estrella (`pregunta/quien_dio_estrella.html.erb`) |
| 70 | +- ✅ Solo visible para el autor de la pregunta |
| 71 | +- ✅ Muestra lista de usuarios con avatar y enlace a perfil |
| 72 | +- ✅ Contador total de estrellas |
| 73 | + |
| 74 | +#### Perfil Usuario (`usuarios/show.html.erb`) |
| 75 | +- ✅ Estadísticas actualizadas: |
| 76 | + - ★ Estrellas otorgadas (total, sin mostrar a quién) |
| 77 | + - ★ Estrellas recibidas (total) |
| 78 | + - Preguntas realizadas |
| 79 | +- ✅ Cada pregunta muestra su total de estrellas |
| 80 | + |
| 81 | +## Reglas del Sistema |
| 82 | + |
| 83 | +### ⭐ Estrellas en Preguntas |
| 84 | +1. ✅ Una persona solo puede dar UNA estrella por pregunta |
| 85 | +2. ✅ NO puedes dar estrella a tus propias preguntas |
| 86 | +3. ✅ Puedes quitar tu estrella haciendo clic nuevamente |
| 87 | +4. ✅ SOLO el autor puede ver quiénes le dieron estrella |
| 88 | +5. ✅ Todos pueden ver CUÁNTAS estrellas tiene una pregunta |
| 89 | +6. ✅ Todos pueden ver CUÁNTAS vistas tiene una pregunta (pero no quiénes) |
| 90 | + |
| 91 | +### 💬 Comentarios |
| 92 | +1. ✅ Ya NO tienen sistema de votos |
| 93 | +2. ✅ Mantienen funcionalidad de respuestas anidadas |
| 94 | +3. ✅ Mantienen edición y eliminación por el autor |
| 95 | + |
| 96 | +### 📊 Estadísticas Públicas del Perfil |
| 97 | +- ✅ Cuántas estrellas has OTORGADO (pero no a quién) |
| 98 | +- ✅ Cuántas estrellas has RECIBIDO (suma de todas tus preguntas) |
| 99 | +- ✅ Número de preguntas realizadas |
| 100 | + |
| 101 | +### 🔒 Privacidad |
| 102 | +- ✅ Solo el AUTOR de la pregunta puede ver la lista completa de usuarios que le dieron estrella |
| 103 | +- ✅ Las vistas son públicas en número, pero NO se revela quiénes vieron |
| 104 | +- ✅ Las estadísticas de perfil muestran totales, NO detalles |
| 105 | + |
| 106 | +## Migración Ejecutada |
| 107 | +```bash |
| 108 | +rails db:migrate |
| 109 | +# ✅ Migración 20260618041917_update_votos_to_estrellas.rb ejecutada exitosamente |
| 110 | +``` |
| 111 | + |
| 112 | +## Testing |
| 113 | +- ✅ Sin errores de diagnóstico |
| 114 | +- ✅ Base de datos actualizada correctamente |
| 115 | +- ✅ Todas las vistas renderizadas correctamente |
| 116 | + |
| 117 | +## Próximos Pasos Sugeridos (Opcional) |
| 118 | +1. Probar manualmente todas las funcionalidades |
| 119 | +2. Agregar índices a la tabla estrellas para mejorar rendimiento: |
| 120 | + - `add_index :estrellas, [:usuario_id, :preguntum_id], unique: true` |
| 121 | +3. Considerar agregar notificaciones cuando alguien da estrella |
| 122 | +4. Agregar ordenamiento por "más estrellas" en el index de preguntas |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +**Fecha de implementación**: 2026-06-18 |
| 127 | +**Estado**: ✅ Completado y funcional |
0 commit comments