# 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`) | | Centro de agentes (sigma-robot) | Registrado como `Agente drop.sigmac.app` vía API REST (`https://sigma-bot.telcotronics.com/ecosistema/v1/agentes`) — pendiente de autorización | --- ## 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` | | `SIGMA_AGENTE_SOLICITUD_ID` | ID de solicitud en sigma-robot (nunca commitear) | (local `.env`) | | `SIGMA_AGENTE_CODIGO` | Código secreto en sigma-robot (nunca commitear) | (local `.env`) | | `SIGMA_AGENTE_TOKEN` | Token bearer permanente tras autorización (nunca commitear) | (local `.env`) | --- ## Para arrancar en local ```bash # 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) ├── reglas.md # Normas operativas y técnicas inviolables ├── tareas.md # Control ágil de tareas y backlog └── 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 |