Files
app_compartir/agents.md
T

6.4 KiB

agents.md — Punto de entrada del proyecto: drop.sigmac.app (app_compartir)

Reglas:

  • Este archivo es el eslabón más importante. Leerlo siempre antes de cualquier tarea.
  • Cada cambio significativo debe reflejarse en este archivo y en los demás archivos del índice.
  • Debe ser técnico, claro y detallado para que cualquier humano, agente o IA lo entienda sin explicaciones previas.
  • "carga proyecto" = Leer este archivo (agents.md) para comprender las reglas, stack, rutas y objetivos del proyecto.
  • "actualizar proyecto" = hacer commit de los cambios pendientes, actualizar agents.md y .agente/proyecto_estructura.md con el árbol de archivos actual.

Antecedentes

Compartir archivos, fotos, PDFs, notas o fragmentos de código entre dispositivos (móvil y PC) suele terminar dependiendo de clientes de mensajería como WhatsApp, lo cual es invasivo, incómodo y comprime o altera contenidos. app_compartir resuelve esto proveyendo una webapp ligera y directa para transferir y visualizar contenido al instante con enlace directo y código QR.


Objetivo general

Proporcionar una aplicación web ágil en Go para transferir, compartir y previsualizar archivos y textos sin fricción, con soporte de sesiones invitadas efímeras y cuentas registradas con almacenamiento permanente.

  1. Compartición directa: Subida mediante Drag & Drop, selección de archivos, pegado desde portapapeles (Ctrl+V) o editor rápido de texto/código.
  2. Generación de enlaces y QR: Obtención inmediata de enlace para compartir y código QR para apertura instantánea en dispositivos móviles.
  3. Visor universal integrado (/v/{id}): Vista previa nativa de imágenes, videos, audios, PDFs, textos y código, además de descarga directa para otros tipos de archivo.
  4. Política de retención diferenciada:
    • Modo Guest (Invitado): No requiere login. El contenido subido se elimina automáticamente tras 24 horas de su subida (limpieza de archivo físico y registro en base de datos).
    • Cuentas registradas (Google OAuth y WebControl): Almacenamiento permanente (no se elimina automáticamente a las 24h). El usuario puede listar sus archivos compartidos y eliminarlos manualmente cuando desee.

Stack técnico

Componente Tecnología
Lenguaje Go 1.22+ / 1.27
Router / HTTP net/http estándar con enrutamiento nativo
Base de datos SQLite (modernc.org/sqlite o mattn/go-sqlite3)
Frontend HTML5 + Tailwind CSS + Vanilla JS / QR generator SVG
Autenticación Sesiones cookies HTTP-only, WebControl (api.siax-system.net) y Google OAuth2
Almacenamiento Almacenamiento local en disco (./uploads/) con limpieza concurrente

Módulos del sistema

1. Motor de Almacenamiento y Uploads (storage)

Estado: ✅ Completo Manejo de archivos multipart, validación de tamaños, generación de IDs únicos (slugs) y persistencia en ./uploads/.

2. Visor Universal (viewer)

Estado: ✅ Completo Interfaz de visualización responsive con detección de tipo MIME: imágenes con zoom, video/audio HTML5, visor PDF embebido, visualizador de texto/código con botón de copiar y QR de acceso rápido.

3. Autenticación y Sesiones (auth)

Estado: ✅ Completo

  • Sesión Guest por defecto (identificador anónimo/cookie).
  • Integración WebControl (https://api.siax-system.net/api/auth/login).
  • Integración Google OAuth2.

4. Worker de Limpieza 24h (cleaner)

Estado: ✅ Completo Goroutine periódica (ticker) que consulta items donde is_guest = true AND expires_at <= NOW(), borrando el archivo físico del disco y la fila de SQLite. Las cuentas registradas son ignoradas por el limpiador.


Infraestructura (referencia rápida)

⚠️ La infraestructura es compartida por todo el ecosistema Telcotronics (sigma-robot, sigma-web, sigma-c, sigmac_app, CRM, ERP y otros). La fuente de verdad es mcp.telcotronics.net — actualmente 🔧 en mantenimiento. Mientras esté en mantenimiento, la fuente alternativa es /home/pablinux/Projects/infraestructura.md. No editar .agente/infraestructura.md directamente — ver protocolo de sincronización.

Parámetro Valor
Dominio público drop.sigmac.app
Puerto interno 2006 (producción) / 8085 (local)
Servicio systemd siax-app-DROP_SIGMAC_APP.service (gestionado por SIAX Monitor)
BD principal SQLite local (data/compartir.db)
MCP ID 34 (registrado en http://192.168.10.160:3007/api/services / SSE :3006)

Variables de entorno (.env)

Variable Descripción Default
PORT Puerto de escucha HTTP 8085
BASE_URL URL base pública de la app http://localhost:8085
DATA_DIR Directorio para base de datos y uploads ./data
SESSION_SECRET Clave secreta para cookies de sesión compartir-secret-key-change-me
GOOGLE_CLIENT_ID Client ID de Google OAuth (opcional)
GOOGLE_CLIENT_SECRET Client Secret de Google OAuth (opcional)
WEBCONTROL_API_URL URL de autenticación de WebControl https://api.siax-system.net/api/auth/login

Para arrancar en local

# Descargar dependencias
go mod tidy

# Ejecutar el servidor
go run main.go

Índice de archivos del proyecto

app_compartir/
├── README.md
├── agents.md                            # ← LEER PRIMERO
├── id_agente.md                         # Identidad del agente en el ecosistema
├── go.mod
├── main.go
└── .agente/
    ├── infraestructura.md               # Ecosistema — espejo del global
    ├── proyecto_estructura.md           # Árbol de archivos y rutas
    ├── proyecto_memoria.md              # Decisiones técnicas e historial
    ├── proyecto_errores.md              # Registro de errores
    ├── objetivos.md                     # Qué debe cumplirse (sin fecha)
    └── ideas.md                         # Posibilidades sin compromiso

Estado global del proyecto

Módulo Estado
Módulo de subida y almacenamiento ✅ Completo
Visor integrado (imágenes, video, audio, PDF, texto) ✅ Completo
Purga automática 24h para cuentas Guest ✅ Completo
Autenticación Guest / WebControl / Google ✅ Completo
Panel de gestión para usuarios registrados ✅ Completo