# Arsenal Nexora 1.6.9 - Analytics

## Objetivo

Añadir una capa administrativa de lectura económica sobre las entregas confirmadas de Arsenal sin modificar `purchase()`, Warehouse, seriales, encoder DbVersion 3 ni el frontend público.

## Fuente de verdad

Analytics usa `NEXORA_ITEMSHOP_ORDERS` y contabiliza únicamente filas con:

- `status = delivered`;
- la moneda configurada actualmente en el reino;
- fecha dentro del rango seleccionado.

Desde 1.6.9.1, las entregas reclasificadas como `delivered_test` se conservan en el historial pero quedan fuera de Analytics.

La tabla de órdenes se escribe solamente después de completar la entrega al baúl dentro de la transacción de compra. Por eso estas métricas representan entregas confirmadas. La build no presenta vistas, carritos, conversiones ni fallos de compra porque esos eventos no se almacenan actualmente.

## Rangos

- 7 días.
- 30 días.
- 90 días.
- 12 meses / 365 días.

## KPIs

- moneda consumida por entregas confirmadas;
- cantidad de entregas;
- compradores únicos;
- ticket medio;
- configuraciones distintas vendidas;
- rotación de productos publicados.

La rotación compara los productos actualmente publicados con los que registraron al menos una entrega dentro del período.

## Tendencia

La consulta base agrupa por día en SQL Server. La interfaz conserva detalle diario para 7/30 días, agrupa visualmente por semana para 90 días y por mes para 365 días. No se agrega ninguna librería de gráficos.

## Top productos y compradores

Analytics muestra:

- top 12 productos por moneda consumida;
- entregas y compradores únicos por producto;
- top 10 cuentas por moneda consumida;
- productos distintos y última compra por cuenta.

Son paneles de solo lectura.

## Categorías históricas

Cada orden conserva `item_snapshot`. Analytics lee la categoría congelada en ese snapshot, por lo que una reclasificación posterior del catálogo o la eliminación de la configuración no reescribe el histórico por categoría.

## Promociones

Para cada entrega se compara:

- `price_paid` de la orden;
- `price_wc` del snapshot histórico.

Si `price_paid < price_wc`, la entrega se clasifica como promocional. Se calculan:

- entregas en promoción;
- porcentaje de entregas promocionales;
- moneda consumida bajo promoción;
- descuento concedido acumulado.

No depende del precio actual del catálogo.

## Salud comercial

El dashboard también muestra:

- productos publicados sin ventas en el período;
- agotados publicados;
- productos publicados con stock entre 1 y 5;
- lista de hasta 20 configuraciones sin rotación;
- lista de hasta 20 alertas de stock.

Estas señales no modifican precios, stock ni publicación automáticamente.

## Rendimiento

- sin consultas por tarjeta;
- agregados principales ejecutados en SQL Server;
- una lectura de snapshots del período para promociones y categorías históricas;
- sin requests externos;
- sin frameworks ni librerías nuevas;
- disponible solo en AdminCP.

Los índices existentes de órdenes por fecha y cuenta continúan utilizándose. Esta versión no requiere migración SQL.

## Navegación

Nueva sección:

`AdminCP -> Arsenal Nexora -> Analytics`

También se añaden accesos desde Catálogo, Carga masiva, Operaciones y Entregas.

## Sin cambios

- `purchase()` idéntico a 1.6.8;
- `encodeItem()` idéntico a 1.6.8;
- `saveItem()` idéntico a 1.6.8;
- `deleteItem()` idéntico a 1.6.8;
- sin nuevas tablas;
- sin migración SQL;
- sin cambios al Warehouse;
- sin cambios al frontend público de Arsenal.
