docs: actualizar memoria, errores, ideas, infraestructura y readme detallado
This commit is contained in:
+6
-2
@@ -8,10 +8,14 @@
|
||||
|
||||
## Ideas pendientes
|
||||
|
||||
_(anota aquí las ideas con algo de forma)_
|
||||
- **Protección con PIN o contraseña opcional:** Permitir que quien comparte un archivo pueda agregar un PIN de 4 dígitos o contraseña opcional para mayor privacidad al compartir enlaces sensibles.
|
||||
- **Descargas comprimidas ZIP multi-archivo:** Si un usuario sube un lote de varios archivos a la vez, empaquetarlos en un solo enlace con opción "Descargar todo como ZIP".
|
||||
- **Límite de un solo uso (Burn after reading):** Opción para que un archivo o secreto en texto se auto-elimine inmediatamente después de la primera visualización o descarga.
|
||||
- **Integración con bot del ecosistema (sigma-robot):** Enviar alerta o notificación opcional a un canal cuando un archivo clave haya sido descargado o abierto.
|
||||
|
||||
---
|
||||
|
||||
## Ideas en borrador
|
||||
|
||||
_(anota aquí lo que se te ocurra, sin filtro)_
|
||||
- Modo P2P / WebRTC para transferir archivos pesados gigabytes directamente entre navegadores en la misma red local sin almacenarlos en el servidor.
|
||||
- Mini editor de texto con syntax highlighting enriquecido (Monaco Editor o CodeMirror ligero).
|
||||
|
||||
@@ -1328,6 +1328,55 @@ Plataforma de lealtad desarrollada para gestionar clientes y acumulación de pun
|
||||
|
||||
---
|
||||
|
||||
### app_compartir — Plataforma de Transferencia y Visor Rápido de Archivos
|
||||
|
||||
**Descripción:**
|
||||
Aplicación web en Go para transferencia inmediata de archivos, fotos, documentos y texto/código entre dispositivos (PC y móvil) sin depender de WhatsApp. Incluye un visor universal integrado con reproductores multimedia, lector de PDF y visualizador de código, además de generación instantánea de código QR para escaneo móvil.
|
||||
|
||||
| Parámetro | Valor |
|
||||
|-----------|-------|
|
||||
| Repositorio Git | [pendiente — crear repo en git.telcotronics.net] |
|
||||
| Tecnología principal | Go 1.22+ / 1.27 (`net/http` nativo) + SQLite + Tailwind CSS |
|
||||
| Responsable | pablinux |
|
||||
| Estado actual | ✅ Operativo / En pruebas |
|
||||
| Ubicación local | `siax-amd` — `/home/pablinux/Projects/GO/app_compartir` |
|
||||
| Servidor de producción | `server-webapps` CT 132 (`192.168.10.160`) — pendiente deploy |
|
||||
| Dominio público | `compartir.sigmac.app` (o `compartir.telcotronics.net`) |
|
||||
| Puerto | `8085` |
|
||||
| Servicio systemd | `app-compartir.service` |
|
||||
|
||||
**Bases de Datos:**
|
||||
* **SQLite** (`data/compartir.db` local en modo WAL): Almacena metadatos de archivos compartidos (`shares`), usuarios vinculados (`users`) y tokens de sesión (`sessions`).
|
||||
|
||||
**Política de Retención y Almacenamiento:**
|
||||
* **Sesiones Invitado (Guest):** No requieren login. Los archivos y notas tienen caducidad estricta de **24 horas**. Un worker en segundo plano (`cleaner`) purga periódicamente el archivo físico en disco y su registro en la base de datos.
|
||||
* **Cuentas Registradas (WebControl / Google OAuth):** Almacenamiento **permanente**. No se eliminan a las 24 horas y disponen de panel de gestión en `/mis-archivos`.
|
||||
|
||||
**Servicios que Consume y Expone:**
|
||||
* **Expone:**
|
||||
* **GET** `/`: Portal web de subida (drag & drop, pegar con `Ctrl+V`, compartir notas/código).
|
||||
* **POST** `/api/upload`: Subida multipart de archivos (hasta 500 MB). Retorna JSON con `viewer_url` y `download_url`.
|
||||
* **POST** `/api/share-text`: Subida rápida de fragmentos de texto o código.
|
||||
* **GET** `/v/{id}`: Visor universal (imágenes con zoom, video/audio HTML5, PDF embebido, texto/código con botón de copia, y QR móvil).
|
||||
* **GET** `/d/{id}`: Descarga directa forzada (`attachment`).
|
||||
* **GET** `/raw/{id}`: Visualización directa en el navegador (`inline`).
|
||||
* **GET** `/qr/{id}`: Código QR dinámico en PNG (256x256).
|
||||
* **DELETE** `/api/shares/{id}`: Eliminación manual de archivos por su propietario.
|
||||
* **Consume:**
|
||||
* **WebControl (Auth):** `https://api.siax-system.net/api/auth/login` para autenticación de cuentas internas Telcotronics.
|
||||
* **Google OAuth2:** Flujo de login con cuentas Google (`/auth/google`).
|
||||
|
||||
**Módulos Disponibles:**
|
||||
* **Módulo de Subida y Streaming:** Recepción de multipart y almacenamiento local con generación de slug corto. (✅ Operativo)
|
||||
* **Visor Universal:** Interfaz interactiva adaptativa según el MIME type. (✅ Operativo)
|
||||
* **Purga Automática 24h:** Goroutine en segundo plano que limpia archivos y sesiones guest expiradas. (✅ Operativo)
|
||||
* **Gestor de Cuentas y Mis Archivos:** Panel para usuarios registrados con métricas de visitas y descarga. (✅ Operativo)
|
||||
|
||||
**Dónde buscar más información:**
|
||||
* Documentación técnica del proyecto: `siax-amd:/home/pablinux/Projects/GO/app_compartir/agents.md`.
|
||||
|
||||
---
|
||||
|
||||
### sistema-gimnasio — Sistema de Administración para Gimnasio (SOCIOS)
|
||||
|
||||
Panel web de administración de gimnasios en el ecosistema SIGMA (frente 3 — Panel Admin SOCIOS). Staff del gimnasio gestiona miembros, membresías, pagos, visitas, cajas, inventario de items y ventas. SPA Vue 2 + Vuetify 2 con tema oscuro. Consume dos APIs del ecosistema: `API-SIGMA-WEBCONTROL` para autenticación y `API-SIGMA-CLOUD` para todos los datos de negocio.
|
||||
@@ -1402,16 +1451,16 @@ Backend de la app **SoundWave**. Permite controlar la reproducción de audio de
|
||||
| Parámetro | Valor |
|
||||
|---|---|
|
||||
| Repositorio Git | `https://git.telcotronics.net/pablinux/audio_control.git` |
|
||||
| Tecnología principal | Node.js (Express 4) + MariaDB + DLNA/UPnP + ffplay + EJS |
|
||||
| Tecnología principal | Node.js (Express 4) + Socket.IO + MariaDB + DLNA/UPnP + ffplay + EJS |
|
||||
| Responsable | pablinux |
|
||||
| Estado actual | ✅ Activo / Desplegado en producción |
|
||||
| Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/audio_control` |
|
||||
| Servidor de producción | `server-webaps` CT 132 (`192.168.10.160`) — `/home/user_apps/apps/audio_control` |
|
||||
| Dominio público | `audiocontrol.sigmac.app` (pendiente virtualhost/SSL en .160) |
|
||||
| Dominio público | `audiocontrol.sigmac.app` (vhost activo en .160; enrutamiento WAN sujeto a proxy en .109 / NAT) |
|
||||
| Puerto | `4005` (dev: `4000`) |
|
||||
| Servicio systemd | `siax-app-AUDIO_CONTROL.service` (activo) |
|
||||
| Registro MCP | Servicio ID `15` en `http://192.168.10.160:3006` |
|
||||
| Última actualización | 2026-09-23 |
|
||||
| Última actualización | 2026-09-24 |
|
||||
|
||||
**BD que usa:**
|
||||
|
||||
@@ -1423,25 +1472,28 @@ Backend de la app **SoundWave**. Permite controlar la reproducción de audio de
|
||||
|
||||
| Método | Endpoint | Auth | Descripción |
|
||||
|--------|----------|------|-------------|
|
||||
| POST | `/control/audio/play` | — (pendiente JWT) | Reproduce archivo MP3 local con `ffplay`. Body: `{ file: "ruta/relativa" }` |
|
||||
| POST | `/control/audio/stop` | — (pendiente JWT) | Detiene `ffplay` activo |
|
||||
| POST | `/control/youtube/download` | — | Descarga audio de YouTube como MP3. Body: `{ url: "..." }` |
|
||||
| POST | `/control/audio/play` | `verificarJWT` | Reproduce archivo MP3 local con `ffplay` y emite `player:status`. Body: `{ file: "ruta/relativa" }` |
|
||||
| POST | `/control/audio/stop` | `verificarJWT` | Detiene `ffplay` activo y emite `player:status` |
|
||||
| POST | `/control/youtube/download` | `verificarJWT` | Descarga audio de YouTube como MP3 con validación regex anti-SSRF. Body: `{ url: "..." }` |
|
||||
| GET | `/api/youtube-playlist` | — | Lista playlist YouTube (últimas 50 de MySQL) |
|
||||
| POST | `/api/youtube-playlist/add` | — | Agrega video a playlist |
|
||||
| GET | `/api/mp3-files` | — | Lista archivos MP3 en `public/files/mp3/` |
|
||||
| POST | `/api/auth/google` | — | Auth Google OAuth 2.0 → JWT propio |
|
||||
| GET | `/api-docs` | — | Swagger UI |
|
||||
| WS | Socket.IO | — | Eventos `player:status` y ajuste de `player:volume` bidireccional |
|
||||
|
||||
**Servicios que consume:**
|
||||
|
||||
| Servicio | Uso |
|
||||
|---------|-----|
|
||||
| `ffplay` (sistema — parte de `ffmpeg`) | Reproducción de audio local |
|
||||
| `ffplay` / `amixer` (sistema Linux) | Reproducción de audio local y control de volumen hardware |
|
||||
| YouTube (internet) vía `@distube/ytdl-core` | Descarga de audio |
|
||||
| Google OAuth 2.0 API | Verificación de tokens de usuario |
|
||||
| Bitácora Centralizada de Errores | `POST https://api.siax-system.net/api/errores` (`app_origen: audio_control`) |
|
||||
|
||||
**Integración con el ecosistema:**
|
||||
- Independiente actualmente — no consume APIs internas del ecosistema
|
||||
- Conectado a la bitácora centralizada de errores (`siax-system.net`)
|
||||
- Sincronizado en tiempo real vía WebSockets para pantallas y controles múltiples
|
||||
- Potencial: integrar con `sigma-robot` para notificaciones de estado vía WhatsApp
|
||||
|
||||
**Dónde buscar más información:** `siax-amd:/home/pablinux/Projects/Node/audio_control/agents.md`
|
||||
|
||||
@@ -16,4 +16,8 @@
|
||||
|
||||
## Errores registrados
|
||||
|
||||
_(ninguno aún)_
|
||||
### 2026-10-13 — Imports no utilizados en `db.go` y `handlers.go` durante compilación Go
|
||||
- **Síntoma:** Error de compilación en `go build`: `internal/db/db.go:8:2: "time" imported and not used` e `internal/handlers/handlers.go:7:2: "io" imported and not used`.
|
||||
- **Causa raíz:** Durante la reestructuración de funciones auxiliares, los paquetes `time` (en db) e `io` (en handlers) quedaron huérfanos sin llamadas directas.
|
||||
- **Solución:** Se retiraron los imports no utilizados y se recompiló exitosamente con `go build -o app_compartir main.go`.
|
||||
- **Estado:** ✅ Resuelto
|
||||
|
||||
+21
-11
@@ -9,31 +9,41 @@
|
||||
|
||||
| Fecha | Decisión | Razonamiento |
|
||||
|---|---|---|
|
||||
| 2026-10-12 | Inicialización de la estructura estándar de documentación de agentes | Estandarización bajo el ecosistema Telcotronics |
|
||||
| 2026-10-12 | Inicialización de la estructura estándar de documentación de agentes | Estandarización bajo el ecosistema Telcotronics. |
|
||||
| 2026-10-12 | Política de caducidad 24h exclusiva para usuarios Guest | El usuario solicitó explícitamente que los archivos subidos por invitados se eliminen a las 24 horas, mientras que los usuarios registrados (Google OAuth / WebControl) mantengan sus archivos de manera permanente. |
|
||||
| 2026-10-12 | Visor integrado universal para evitar depender de WhatsApp | Permite abrir imágenes, reproducir video/audio, leer PDFs y ver texto o código directamente desde el navegador sin apps externas. |
|
||||
| 2026-10-12 | Backend autónomo en Go con SQLite | Binario único de alto rendimiento, bajo consumo de memoria y concurrencia nativa con goroutine para la limpieza periódica. |
|
||||
| 2026-10-13 | Generación de QR nativa en Go vía `/qr/{id}` | Se utiliza `github.com/skip2/go-qrcode` para servir el QR directamente en formato PNG (256x256), garantizando compatibilidad total con cualquier cámara de smartphone sin depender de scripts cliente pesados. |
|
||||
| 2026-10-13 | Soporte doble de login: WebControl corporativo + Google OAuth | Brinda flexibilidad tanto para colaboradores del ecosistema Telcotronics (vía `api.siax-system.net`) como para usuarios externos con Google. |
|
||||
|
||||
---
|
||||
|
||||
## Estado actual
|
||||
|
||||
Estructura de documentación y requerimientos alineados. Desarrollando servidor en Go con base de datos SQLite, endpoints de subida, visor interactivo y worker de purga a 24 horas.
|
||||
Versión funcional completa y validada:
|
||||
- Subida de archivos por Drag & Drop, selección o pegado directo con `Ctrl+V`.
|
||||
- Subida de notas/código con pestaña interactiva.
|
||||
- Visor universal adaptativo con vista previa multimedia, lector de PDF y código con botón de copia.
|
||||
- Purga automática cada 10 minutos para archivos guest > 24h (test automatizado superado en `main_test.go`).
|
||||
- Cuentas registradas con almacenamiento permanente y panel `/mis-archivos`.
|
||||
- Documentación e integración de infraestructura sincronizada con el MCP y global `infraestructura.md`.
|
||||
|
||||
---
|
||||
|
||||
## Pendientes
|
||||
## Tareas implementadas
|
||||
|
||||
- [ ] Implementar base de datos SQLite y esquema de tablas (`shares`, `users`, `sessions`)
|
||||
- [ ] Implementar endpoints HTTP de subida (`/api/upload`, `/api/share-text`)
|
||||
- [ ] Implementar visor `/v/{id}` (HTML + Tailwind + QR)
|
||||
- [ ] Implementar worker de purga de archivos guest vencidos
|
||||
- [ ] Implementar auth con WebControl (`api.siax-system.net`) y Google OAuth2
|
||||
- [ ] Implementar panel "Mis Archivos" para usuarios autenticados
|
||||
- [x] Implementar base de datos SQLite y esquema de tablas (`shares`, `users`, `sessions`)
|
||||
- [x] Implementar endpoints HTTP de subida (`/api/upload`, `/api/share-text`)
|
||||
- [x] Implementar visor universal `/v/{id}` (HTML + Tailwind + QR)
|
||||
- [x] Implementar worker de purga de archivos guest vencidos (24 horas)
|
||||
- [x] Implementar auth con WebControl (`api.siax-system.net`) y Google OAuth2
|
||||
- [x] Implementar panel "Mis Archivos" para usuarios autenticados
|
||||
- [x] Sincronizar sección de infraestructura en global e internal para MCP
|
||||
|
||||
---
|
||||
|
||||
## Notas y observaciones
|
||||
|
||||
- Los archivos se almacenarán en `data/uploads/` y la base de datos en `data/compartir.db`.
|
||||
- Los enlaces cortos utilizarán slugs alfanuméricos seguros y compactos.
|
||||
- Los archivos se almacenan en `data/uploads/` y la base de datos en `data/compartir.db`.
|
||||
- Los slugs son de 7 caracteres alfanuméricos no ambiguos generados criptográficamente.
|
||||
- Las sesiones de invitados se manejan mediante cookies seguras HTTP-only para permitir el flujo sin fricción.
|
||||
|
||||
Reference in New Issue
Block a user