Mejoras de sesion: estabilizacion, IA, Nexus Yonke y marketplace B2B
- F0 blindaje: Redis/Celery, pg_hba sin trust LAN, secretos a env 600, backups, webhook auth, jobs muertos - F1 caja: bugs POS, reembolsos al corte, apartados, CFDI, topes de descuento en cotizacion/apartado - F2/F7 IA de catalogo: autocategorizacion, dedup de SKUs con embeddings, OCR de facturas, descripciones, claves SAT, limpieza de fitment - F3 IA en el flujo: vision Yonke, preguntas MeLi, venta cruzada, anomalias, sinonimos, busqueda semantica (rerank/embeddings) - F4/F8 escala y cartera: /metrics+Prometheus+Grafana, pool, score de credito, churn, metricas multi-tenant - Nexus Yonke (M1-M6): modelo de datos 1-de-1, alta por donador, vitrina publica, MeLi usado, consignacion, garantia por dias, reportes, etiquetas - Marketplace B2B entre yonkes (catalogo + pedidos cross-tenant) - Seguridad: auth en /api/admin/* (35 endpoints), alertas por tenant - Migraciones v4.27/v4.28; timers expire-demos y rollup-metrics
This commit is contained in:
@@ -8,6 +8,7 @@ Panel de control central para gestionar instancias multi-tenant de Nexus POS.
|
||||
- **Monitorear** salud de todos los servicios (POS, DB, Redis, Quart, Systemd)
|
||||
- **Gestionar tenants**: activar/desactivar, resetear datos, eliminar
|
||||
- **Ejecutar migraciones** de schema en todos los tenants desde una UI
|
||||
- **Cartera**: métricas de negocio por tenant (rollup diario), score de salud/riesgo de churn y anomalías entre tenants
|
||||
- **Dashboard** con estadísticas globales y alertas de demos por expirar
|
||||
|
||||
## Estructura
|
||||
@@ -21,12 +22,15 @@ manager/
|
||||
├── services/ # Lógica de negocio
|
||||
│ ├── health_service.py # Health checks de infraestructura
|
||||
│ ├── tenant_service.py # CRUD tenants (usa tenant_manager del POS)
|
||||
│ ├── portfolio_service.py# Rollup de métricas, lectura de cartera y anomalías
|
||||
│ ├── business_metrics.py # Z-score robusto multi-tenant + score de salud
|
||||
│ └── migration_service.py# Orquestación de migraciones
|
||||
├── blueprints/ # API REST
|
||||
│ ├── auth_bp.py # Login/logout JWT
|
||||
│ ├── tenants_bp.py # Gestión de tenants
|
||||
│ ├── demos_bp.py # Creación de demos
|
||||
│ ├── health_bp.py # Health checks
|
||||
│ ├── portfolio_bp.py # /api/tenants/metrics y /api/portfolio/anomalies
|
||||
│ └── admin_bp.py # Dashboard stats y migraciones
|
||||
├── static/ # Frontend SPA
|
||||
│ ├── css/manager.css
|
||||
@@ -193,6 +197,29 @@ systemctl start nexus-manager
|
||||
- Ve a **Migraciones** para ver la versión de schema de cada tenant
|
||||
- **Ejecutar todas pendientes** aplica migraciones en TODOS los tenants
|
||||
|
||||
### Cartera (métricas, salud y anomalías)
|
||||
- La sección **Cartera** muestra el score de salud/riesgo de churn por tenant y
|
||||
las anomalías detectadas entre tenants (z-score robusto con mediana + MAD).
|
||||
- Los datos vienen de la tabla maestra `tenant_metrics_daily`, que se llena con
|
||||
el rollup diario:
|
||||
|
||||
```bash
|
||||
python3 scripts/rollup_tenant_metrics.py # hoy, tenants activos
|
||||
python3 scripts/rollup_tenant_metrics.py --days 30 # backfill últimos 30 días
|
||||
python3 scripts/rollup_tenant_metrics.py --all # incluir inactivos
|
||||
```
|
||||
|
||||
El script crea la tabla de forma idempotente (no usa el runner de migraciones
|
||||
de tenants) y es seguro re-ejecutarlo para la misma fecha.
|
||||
|
||||
- Endpoints (requieren `Authorization: Bearer <token>`):
|
||||
- `GET /api/tenants/metrics?days=14` — rollup + `{health_score, band, signals}` por tenant
|
||||
- `GET /api/portfolio/anomalies?date=YYYY-MM-DD&z=3.0&min_tenants=5` — anomalías entre tenants
|
||||
|
||||
Con menos de `min_tenants` tenants en la cohorte el detector devuelve
|
||||
`cold_start: true` y no emite hallazgos. La "actividad" usa `audit_log` como
|
||||
proxy porque no se persisten logins individuales.
|
||||
|
||||
---
|
||||
|
||||
## Notas de seguridad
|
||||
|
||||
Reference in New Issue
Block a user