Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
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>
209 lines
5.1 KiB
Markdown
209 lines
5.1 KiB
Markdown
# 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:
|
|
|
|
1. **Bucket STANDARD**
|
|
- Propósito: Archivos generales de usuarios
|
|
- Contenido típico:
|
|
- Imágenes de perfil
|
|
- Avatares
|
|
- Documentos subidos
|
|
- Recursos educativos multimedia
|
|
|
|
2. **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 usuario
|
|
- `educational_content.media_resources` - Recursos multimedia educativos
|
|
- `content_management.media_files` - Archivos de contenido
|
|
- `gamification_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:
|
|
|
|
1. Crea y gestiona buckets según el tipo
|
|
2. Sube archivos al bucket apropiado
|
|
3. Genera URLs firmadas para acceso controlado
|
|
4. Aplica transformaciones de imagen
|
|
5. Gestiona políticas de acceso
|
|
|
|
**Ejemplo conceptual:**
|
|
|
|
```typescript
|
|
// 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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
1. **Uso de almacenamiento** por bucket
|
|
2. **Número de archivos** por tipo
|
|
3. **Ancho de banda** consumido
|
|
4. **Errores de upload/download**
|
|
5. **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 sistema
|
|
- `TEMP` - Para archivos temporales con auto-delete
|
|
- `ARCHIVE` - Para archivos archivados (cold storage)
|
|
|
|
---
|
|
|
|
## 🎯 Próximos Pasos
|
|
|
|
1. Documentar servicio de storage en backend
|
|
2. Crear políticas RLS para buckets
|
|
3. Implementar gestión de cuotas por tenant
|
|
4. Configurar CDN y transformaciones de imagen
|
|
5. Crear sistema de limpieza de archivos huérfanos
|
|
|
|
---
|
|
|
|
**Creado:** 2025-11-08
|
|
**Tipo:** Documentación retroactiva
|
|
**Estado:** ✅ Documentación básica completa
|