Panel Alexamigo
← Memory

plus-decisiona.md

# Plus Decisiona - Detalles

## Infraestructura
- **VPS Hetzner**: `/home/ubuntu/proyectos-cloud/decisiona-react/`
- **Backup PHP**: `/home/ubuntu/proyectos-cloud/plus-decisiona-php-backup/`
- **Servicio**: `decisiona.service` (systemd)
- **Dominio**: `plus.decisiona.es` → Nginx con SSL Certbot (VPS Hetzner)
- **Stack**: Vite + React + TypeScript + Node backend (`node dist/backend/server.js`)
- **Historial**: Originalmente en cPanel (PHP+MySQL) + Railway (React). Migrado al VPS.

## Base de Datos (cPanel MySQL)
- **Host**: localhost
- **DB**: `wuxhefrz_plus_decisiona`
- **User**: `wuxhefrz_plus_decisiona`
- **Pass**: `plus_decisiona`
- **Tabla reports**: id, title, slug, content (longtext), excerpt, access_level (free/premium/premium_plus), category, region, author_id, status (draft/pending/approved/rejected), content_type, default_template, featured_image, created_at, updated_at

## API (backend cPanel)
- **Base**: `/backend/api.php` (accesible solo via IP directa)
- **Endpoints**: login, register, logout, reports (GET/POST), report/:id (GET/PUT/DELETE), users, approve-report, reject-report, pending-reports, guest-access, check-report-access
- **Auth**: JWT (secret: `tu_clave_secreta_muy_segura_aqui_2024`, 24h expiry)
- **Crear informe POST**: `{title, content, excerpt, access_level, category, region, slug}`

## Estructura de archivos (cPanel)
```
plus.decisiona.es/
├── index.php              — Login
├── public.php             — Pagina publica
├── report.php             — Vista informe
├── backend/
│   ├── config.php         — Config BD + JWT
│   ├── admin.php          — Panel admin (161KB)
│   ├── api.php            — API REST
│   ├── functions.php      — Helpers
│   ├── media.php / media-api.php
├── frontend/
│   ├── dashboard.php      — Dashboard
│   ├── crear-informe.php / editar-informe.php
│   ├── report.php / colaborador.php / generate-pdf.php
│   ├── assets/ (style.css, app.js)
│   └── templates/ (report-executive.php, report-article.php, report-minimal.php)
├── storage/ (iran-headlines.json, iran-scenarios.json, etc.)
└── uploads/images/
```

## Rediseño UI (marzo 2026)
- **Estetica**: Navy-blue corporativa (fondo #0b1121, acento #3b82f6)
- **Font**: Inter (todo)
- **Previews locales**: login-preview.html, dashboard-preview.html, report-preview.html
- **Layout login**: Split-screen (branding izquierda, form derecha)
- **Dashboard**: Navbar + tabs filtro + tabla de informes con badges/status/acciones
- **Report detail**: Hero con badges + info grid + contenido + TOC sidebar sticky

## Workflow para insertar informes
1. Parsear .docx con Python (zipfile + xml.etree)
2. Convertir a HTML con secciones (h2, h3, p, ul, tables)
3. Subir PHP temporal via FTP
4. Ejecutar via IP directa: `curl -H "Host: plus.decisiona.es" "http://178.211.133.39/script.php?key=..."`
5. Eliminar script temporal del FTP