Gamilit: - Backend: Teacher services, assignments, gamification, exercise submissions - Frontend: Admin/Teacher/Student portals, module 4-5 mechanics, monitoring - Database: DDL functions, seeds for dev/prod, auth/gamification schemas - Docs: Architecture, features, guides cleanup and reorganization Core/Orchestration: - New workspace directives index - Documentation directive Trading-platform: - Database seeds and inventory updates - Tech leader validation report 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.1 KiB
Sistema de Almacenamiento (Storage)
Schema: storage
Propósito: Integración con sistema de almacenamiento de archivos (Storage compatible)
Estado: ✅ Implementado
Última actualización: 2025-11-08
📋 Descripción
El schema storage proporciona tipos y estructuras para la integración con el sistema de almacenamiento de archivos de Storage compatible, utilizado para gestionar archivos multimedia de la plataforma (imágenes, videos, documentos, etc.).
🗂️ Objetos del Schema
Enum: buckettype
Archivo: apps/database/ddl/schemas/storage/enums/buckettype.sql
Descripción: Define los tipos de buckets de almacenamiento disponibles.
Valores:
STANDARD- Bucket estándar para archivos generales (imágenes de perfil, documentos, etc.)ANALYTICS- Bucket para datos de analytics y métricas
Uso: Este enum probablemente se utiliza en el backend para categorizar y gestionar diferentes tipos de buckets de almacenamiento con políticas y configuraciones específicas.
🔗 Integración
Storage compatible
El schema storage está diseñado para integrarse con un sistema de almacenamiento S3-compatible, que proporciona:
- Almacenamiento de archivos con CDN global
- Transformaciones de imágenes automáticas
- Políticas de acceso (RLS)
- Gestión de cuotas y límites
Buckets Esperados
Basado en el enum, se esperan al menos 2 buckets:
-
Bucket STANDARD
- Propósito: Archivos generales de usuarios
- Contenido típico:
- Imágenes de perfil
- Avatares
- Documentos subidos
- Recursos educativos multimedia
-
Bucket ANALYTICS
- Propósito: Datos de analytics y reportes
- Contenido típico:
- Reportes exportados (PDF, CSV)
- Gráficos y visualizaciones
- Logs de sistema
📊 Relaciones con Otros Schemas
Tablas que Referencian Storage
Es probable que las siguientes tablas hagan referencia a archivos en storage:
auth_management.profiles- Avatar de usuarioeducational_content.media_resources- Recursos multimedia educativoscontent_management.media_files- Archivos de contenidogamification_system.achievements- Imágenes de logros/insignias
Nota: Las referencias no están en la BD directamente, sino que se manejan como URLs o paths desde el backend.
🔧 Uso en Backend
Servicio de Storage
El backend debería tener un servicio de storage que:
- Crea y gestiona buckets según el tipo
- Sube archivos al bucket apropiado
- Genera URLs firmadas para acceso controlado
- Aplica transformaciones de imagen
- Gestiona políticas de acceso
Ejemplo conceptual:
// apps/backend/src/modules/storage/storage.service.ts
enum BucketType {
STANDARD = 'STANDARD',
ANALYTICS = 'ANALYTICS'
}
class StorageService {
async uploadFile(file: File, bucketType: BucketType) {
const bucket = this.getBucketName(bucketType);
// Upload to Storage compatible
}
}
📝 Configuraciones Recomendadas
Bucket STANDARD
{
"name": "gamilit-standard",
"public": false,
"file_size_limit": 52428800, // 50MB
"allowed_mime_types": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"application/pdf"
]
}
Bucket ANALYTICS
{
"name": "gamilit-analytics",
"public": false,
"file_size_limit": 104857600, // 100MB
"allowed_mime_types": [
"application/pdf",
"text/csv",
"application/json"
]
}
🛡️ Seguridad
Políticas RLS Recomendadas
Para el bucket STANDARD:
- Usuarios autenticados pueden subir a su carpeta personal
- Administradores pueden acceder a todos los archivos
- Archivos públicos (avatares) accesibles sin auth
Para el bucket ANALYTICS:
- Solo administradores y teachers pueden acceder
- Exportaciones personales solo por el usuario creador
📈 Métricas y Monitoring
Métricas Importantes
- Uso de almacenamiento por bucket
- Número de archivos por tipo
- Ancho de banda consumido
- Errores de upload/download
- Transformaciones de imagen ejecutadas
🔗 Referencias
- Schema:
apps/database/ddl/schemas/storage/ - Enum:
apps/database/ddl/schemas/storage/enums/buckettype.sql - Storage compatible Docs: S3/Storage compatible
- Backend (estimado):
apps/backend/src/modules/storage/
⚠️ Notas
- ✅ Enum definido y listo para uso
- ⚠️ No hay tablas en este schema (integración externa)
- ⚠️ Backend y políticas de storage requieren implementación/documentación
- 📋 Considerar agregar más tipos de buckets si es necesario:
BACKUPS- Para respaldos de sistemaTEMP- Para archivos temporales con auto-deleteARCHIVE- Para archivos archivados (cold storage)
🎯 Próximos Pasos
- Documentar servicio de storage en backend
- Crear políticas RLS para buckets
- Implementar gestión de cuotas por tenant
- Configurar CDN y transformaciones de imagen
- Crear sistema de limpieza de archivos huérfanos
Creado: 2025-11-08 Tipo: Documentación retroactiva Estado: ✅ Documentación básica completa