diff --git a/.agente/objetivos.md b/.agente/objetivos.md index 6875f04..8aa6bbd 100644 --- a/.agente/objetivos.md +++ b/.agente/objetivos.md @@ -37,3 +37,6 @@ | 2026-10-13 | Cuentas registradas (Google y WebControl) con almacenamiento permanente | Cuentas no-guest exentas de borrado a las 24h | | 2026-10-13 | Panel / lista de "Mis Archivos" para usuarios registrados con opción de borrado | Interfaz `/mis-archivos` con métricas de visitas y eliminación | | 2026-10-14 | Scripts de despliegue estándar (`desplegar.sh`, `init.sh`) y servicio para SIAX Monitor | Compilación Go estática, scp, servers.conf y systemd | +| 2026-10-17 | Registro oficial en MCP Infraestructura (ID 34) | Ficha técnica completa registrada en MariaDB bajo categoría application | +| 2026-10-17 | Registro en centro de comunicaciones de agentes (sigma-robot) | Identidad `Agente drop.sigmac.app` registrada vía REST; credenciales en `.env` | +| 2026-10-17 | Sincronización de normas y archivos base del ecosistema | Creación de `id_agente.md`, `reglas.md`, `tareas.md` y espejo de `infraestructura.md` | diff --git a/.agente/proyecto_estructura.md b/.agente/proyecto_estructura.md index 998deea..da9e661 100644 --- a/.agente/proyecto_estructura.md +++ b/.agente/proyecto_estructura.md @@ -15,7 +15,9 @@ app_compartir/ │ ├── objetivos.md │ ├── proyecto_errores.md │ ├── proyecto_estructura.md -│ └── proyecto_memoria.md +│ ├── proyecto_memoria.md +│ ├── reglas.md +│ └── tareas.md ├── internal/ │ ├── auth/ │ │ └── auth.go # Manejo de sesiones, WebControl y Google OAuth2 diff --git a/.agente/reglas.md b/.agente/reglas.md new file mode 100644 index 0000000..6366c8f --- /dev/null +++ b/.agente/reglas.md @@ -0,0 +1,47 @@ +# reglas.md — Reglas operativas y técnicas de app_compartir (drop.sigmac.app) + +> Normas inviolables que todo agente o desarrollador debe respetar al interactuar con este proyecto. + +--- + +## 1. Identidad del Agente +- Mantener siempre el archivo [`id_agente.md`](../id_agente.md) en la raíz del repositorio según la norma del ecosistema. +- **No inventar nombres ni identificadores de agente**: El nombre oficial y el ID numérico son potestad exclusiva de la confirmación emitida por `sigma-robot` y autorizada por `pablinux`. +- Al inicio de cada sesión ("carga proyecto"), leer `id_agente.md` y `agents.md` para conocer el estado y credenciales. +- Nunca commitear tokens, contraseñas ni códigos secretos (`SIGMA_AGENTE_SOLICITUD_ID`, `SIGMA_AGENTE_CODIGO`, `SIGMA_AGENTE_TOKEN`). + +--- + +## 2. Infraestructura y MCP +- **Prohibido asumir o inventar IPs, puertos o servidores**: + - Servidor de producción asignado: `server-webapps` CT 132 (`192.168.10.160`). + - Puerto de producción interno: `2006` (puerto local de desarrollo: `8085`). + - Dominio público: `https://drop.sigmac.app` (Reverse Proxy Apache con SSL/TLS Let's Encrypt). + - Servicio systemd: `siax-app-DROP_SIGMAC_APP.service` (gestionado y supervisado por SIAX Monitor en el puerto `8080`). + - Base de datos: SQLite en modo WAL (`data/compartir.db`) sin dependencias de MySQL ni MongoDB. + - Registro central MCP: Ficha técnica registrada en MariaDB con **ID 34** (categoría `application`, tipo `web`). +- El archivo [`.agente/infraestructura.md`](infraestructura.md) es un espejo local de solo lectura del documento maestro `/home/pablinux/Projects/infraestructura.md`. Nunca modificarlo de forma independiente sin sincronizar con el maestro. + +--- + +## 3. Reglas de Negocio y Ciclo de Vida de Archivos +- **Política de Retención Estricta**: + - **Invitados (Guest)**: Cero fricción (sin login requerido). Todo archivo, nota o código subido como invitado tiene una vida útil máxima e inmutable de **24 horas**. El worker en segundo plano (`cleaner.go`) purga periódicamente tanto el archivo físico en disco como su fila en SQLite. + - **Usuarios Registrados (WebControl / Google OAuth)**: Disponen de almacenamiento **permanente**. Sus archivos nunca expiran ni son tocados por el limpiador automático. Tienen gestión completa desde `/mis-archivos`. +- **Generación de Código QR**: + - Se genera de forma nativa en backend Go vía `github.com/skip2/go-qrcode` en endpoint `/qr/{id}` como imagen PNG. Cero dependencias pesadas de librerías JS cliente para la generación del código QR. +- **Visor Universal Embebido**: + - El visor `/v/{id}` debe renderizar vista previa directa según el MIME type (imágenes con modal zoom, reproductor HTML5 de video/audio, visualizador embebido de PDF, y código formateado con botón de copia con un clic). + +--- + +## 4. Comandos de Contexto del Ecosistema +- **"carga proyecto"**: Leer `agents.md`, `id_agente.md` y la carpeta `.agente/` para absorber el contexto, reglas, objetivos y memoria técnica antes de ejecutar modificaciones. +- **"actualizar proyecto"**: Ejecutar tests automatizados (`go test -v ./...`), realizar commit estructurado de los cambios pendientes, actualizar `agents.md`, `README.md` y `.agente/proyecto_estructura.md`. + +--- + +## 5. Seguridad y Dependencias +- Compilar binarios de producción sin CGO (`CGO_ENABLED=0 GOOS=linux GOARCH=amd64`), utilizando la implementación pura en Go de SQLite (`modernc.org/sqlite`). +- Mantener las rutas de almacenamiento dentro de `DATA_DIR` y utilizar nombres generados criptográficamente (slugs no predecibles) para prevenir ataques de Path Traversal. +- Toda sesión web debe utilizar cookies seguras HTTP-only protegidas por `SESSION_SECRET`. diff --git a/.agente/tareas.md b/.agente/tareas.md new file mode 100644 index 0000000..9320aaa --- /dev/null +++ b/.agente/tareas.md @@ -0,0 +1,56 @@ +# tareas.md — Control de tareas de app_compartir (drop.sigmac.app) + +> Registro ágil de tareas completadas, en progreso y backlog priorizado. + +--- + +## ✅ Tareas Completadas + +- [x] **Base de Datos y Esquema:** SQLite DAL (`modernc.org/sqlite`) con tablas `shares`, `users`, `sessions` en modo WAL. +- [x] **Subida de Archivos y Texto:** Endpoints `/api/upload` (multipart hasta 500 MB) y `/api/share-text` (notas rápidas y código). +- [x] **Visor Universal Adaptativo (`/v/{id}`):** Vista previa nativa para imágenes con zoom, video HTML5, audio HTML5, lector de PDF embebido y visualizador de código con botón de copia. +- [x] **Generador de QR Nativo:** Endpoint `/qr/{id}` con salida PNG (256x256) generado en Go nativo vía `github.com/skip2/go-qrcode`. +- [x] **Worker de Purga Automática 24h:** Goroutine en segundo plano (`cleaner.go`) que elimina archivos físicos y filas de BD vencidas de usuarios Guest. +- [x] **Autenticación Dual:** Login corporativo con Telcotronics WebControl (`api.siax-system.net`) y Google OAuth2. +- [x] **Panel "Mis Archivos":** Interfaz `/mis-archivos` para usuarios autenticados con almacenamiento permanente, estadísticas y borrado manual. +- [x] **Scripts de Despliegue:** `desplegar.sh` (compilación Linux amd64, transferencia scp/rsync) e `init.sh` (ejecutor en servidor). +- [x] **Integración con SIAX Monitor:** Servicio systemd `siax-app-DROP_SIGMAC_APP.service` para supervisión en puerto 2006 / 8080. +- [x] **Soporte de Reverse Proxy:** Manejo dinámico de encabezados Apache (`X-Forwarded-Proto`, `Host`, `X-Forwarded-For`). +- [x] **Pruebas Automatizadas:** Suite de tests unitarios y de integración en `main_test.go` verificando la retención 24h vs permanencia. +- [x] **Registro en MCP de Infraestructura:** Registrado oficialmente con **ID 34** en MariaDB (`http://192.168.10.160:3007/api/services/34`). +- [x] **Espejo de Infraestructura:** Sincronizado `.agente/infraestructura.md` con `/home/pablinux/Projects/infraestructura.md`. +- [x] **Identidad del Agente:** Creación de `id_agente.md` en la raíz del repositorio. +- [x] **Centro de Comunicaciones sigma-robot:** Solicitud de registro enviada como `Agente drop.sigmac.app` (Vía B REST); credenciales guardadas en `.env` (modo 600). + +--- + +## 🚀 En Progreso / Inmediatas + +- [ ] **Autorización en sigma-robot:** + - Aguardar confirmación de Pablinux en el panel de `sigma-robot`. + - Consultar `POST /ecosistema/v1/agentes/estado` para recibir el token definitivo y guardarlo en `.env` como `SIGMA_AGENTE_TOKEN`. + - Actualizar `id_agente.md` con el ID numérico asignado por `sigma-robot`. +- [ ] **Despliegue inicial a producción:** + - Ejecutar `./desplegar.sh` hacia `server-webapps` CT 132 (`192.168.10.160`). + - Verificar respuesta pública en `https://drop.sigmac.app` y estado en SIAX Monitor (`:8080`). +- [ ] **Creación del Repositorio Git Remoto:** + - Crear repo en `git.telcotronics.net/pablinux/app_compartir.git`. + - Configurar `git remote add origin ...` y realizar primer push. + +--- + +## 📋 Backlog Priorizado + +### Fase 2: Experiencia y Utilidades +- [ ] **Descarga Multi-archivo Comprimida (.zip):** + - Empaquetar múltiples archivos en un único archivo zip descargable al vuelo. +- [ ] **Protección por PIN / Contraseña opcional:** + - Permitir a quien comparte proteger el visor con una clave de 4-6 dígitos. +- [ ] **Modo de un solo uso (Burn after reading):** + - Auto-destrucción inmediata del archivo tras la primera descarga o visualización. + +### Fase 3: Integraciones del Ecosistema +- [ ] **Notificaciones a sigma-robot:** + - Enviar eventos al bot o a Pablinux cuando se descargue un archivo relevante. +- [ ] **Widget publicitario app_marketing:** + - Integrar widget ligero de `ads.sigmac.app` opcional en la pantalla de descarga de invitados. diff --git a/README.md b/README.md index 19bcf52..af55ff9 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,16 @@ app_compartir/ --- -## 🏢 Ecosistema Telcotronics +## 🏢 Ecosistema Telcotronics e Infraestructura -Este proyecto forma parte del ecosistema Telcotronics y se encuentra registrado en la infraestructura compartida del MCP (`mcp.telcotronics.net` / `infraestructura.md`). -Para más detalles técnicos y reglas del agente, consultar [`agents.md`](agents.md). +Este proyecto forma parte oficial del **Ecosistema Telcotronics** y se encuentra integrado con las siguientes especificaciones: + +| Entorno / Servicio | Detalle de Conexión | +|---|---| +| **Registro Central MCP** | Registrado en MariaDB como **Servicio ID 34** (Categoría: `application`) | +| **Centro de Agentes (sigma-robot)** | Solicitud `Agente drop.sigmac.app` vía API REST (`https://sigma-bot.telcotronics.com`) | +| **Servidor de Producción** | `server-webapps` CT 132 (`192.168.10.160`), puerto interno `2006` | +| **Dominio y Proxy Apache** | `https://drop.sigmac.app` con terminación SSL/TLS Let's Encrypt | +| **Supervisión de Procesos** | Servicio `siax-app-DROP_SIGMAC_APP.service` en [SIAX Monitor](http://192.168.10.160:8080) | +| **Identidad y Normas** | Consultar [`id_agente.md`](id_agente.md), [`agents.md`](agents.md) y [`.agente/reglas.md`](.agente/reglas.md) | +| **Espejo de Infraestructura** | Sincronizado en [`.agente/infraestructura.md`](.agente/infraestructura.md) desde `/home/pablinux/Projects/infraestructura.md` | diff --git a/agents.md b/agents.md index eedd6f7..736ce0a 100644 --- a/agents.md +++ b/agents.md @@ -126,6 +126,8 @@ app_compartir/ ├── 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 ```