Files
app_compartir/agents.md
T

145 lines
6.9 KiB
Markdown

# 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 | `2008` (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) | Activo como **Agente ID 86** (autorizado por pablinux vía API REST) |
---
## 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 |