# Arsenal Nexora 1.7.1 - Purchase Center + Support Console

## Objetivo

Añadir trazabilidad utilizable por jugador y soporte sobre `NEXORA_ITEMSHOP_ORDERS` sin alterar la compra, Warehouse, seriales, stock, moneda ni el encoder DbVersion 3.

## 1. Mis compras - UserCP

Nueva ruta:

`UserCP -> Mis compras`

El jugador ve exclusivamente órdenes de su propia cuenta autenticada y del reino fijado en su sesión.

Se muestran hasta las 100 entregas reales confirmadas más recientes:

- Order ID;
- nombre histórico del producto;
- categoría congelada en `item_snapshot` cuando existe;
- fecha de entrega;
- precio realmente pagado;
- moneda histórica;
- resumen visual de opciones del snapshot;
- estado `Entregado`.

La vista pública consume únicamente `status=delivered`. Las órdenes `delivered_test` continúan reservadas al flujo administrativo QA y no aparecen en el Purchase Center del jugador.

### Datos deliberadamente no expuestos al jugador

La pantalla no publica:

- serial;
- Warehouse slot;
- IP de compra;
- HEX;
- `user_id` interno;
- JSON raw del snapshot;
- información de otras cuentas.

## 2. Enlace UserCP

`Arsenal Nexora -> Configuración` incorpora:

`Agregar Mis compras al UserCP`

La operación es idempotente: si `usercp/purchases` ya existe no crea duplicados. La escritura de `includes/config/usercp.json` usa archivo temporal + rename y conserva el orden del menú.

El diagnóstico incluye:

`Purchase Center + Soporte 1.7.1`

Debe quedar verde cuando los módulos están presentes y el enlace UserCP está registrado.

## 3. Support Console - AdminCP

Nueva sección:

`AdminCP -> Arsenal Nexora -> Soporte`

Es una consola de solo lectura sobre el historial del reino operativo activo.

Filtros disponibles:

- Order ID exacto;
- cuenta exacta;
- serial exacto;
- nombre de producto contiene;
- compra real / datos de prueba / todos;
- límite de 50, 100, 200 o 500 resultados.

Todas las búsquedas usan parámetros SQL server-side. Los filtros no permiten introducir nombres de columnas ni fragmentos SQL.

## 4. Ficha de entrega

Cada orden puede abrirse como ficha de soporte. Muestra:

- Order ID;
- cuenta y user ID administrativo;
- producto histórico;
- precio pagado y moneda;
- fecha local + reino;
- `Section:Index` del snapshot;
- Item ID histórico;
- Warehouse slot;
- serial entregado;
- estado `delivered` / `delivered_test`;
- resumen técnico de nivel, Skill, Luck, Additional, Excellent, Ancient, Harmony, Socket y 380;
- snapshot JSON histórico para diagnóstico;
- enlace a la configuración actual cuando el Item ID todavía existe;
- acceso al historial de Entregas de la cuenta.

La IP guardada en la orden no se muestra en esta consola porque no es necesaria para el diagnóstico normal de una entrega.

## 5. Historial resistente a cambios de catálogo

La consola depende del snapshot persistido en la orden. Por eso sigue siendo útil aunque:

- el producto se haya editado;
- la categoría actual haya cambiado;
- el precio actual sea distinto;
- la configuración haya sido eliminada del catálogo.

Si el Item ID ya no existe, la ficha lo indica como `Configuración ya no existe`, pero conserva el detalle histórico.

## 6. Frontera de seguridad

1.7.1 NO incorpora acciones para:

- reentregar automáticamente un ítem;
- devolver WCoinC/WCoinP/Goblin Points;
- borrar órdenes;
- restaurar stock;
- borrar un objeto del Warehouse;
- reutilizar o modificar seriales;
- editar snapshots históricos.

La reclasificación QA sigue perteneciendo a `Entregas / Datos de prueba`.

Esta separación evita convertir una herramienta de soporte en una superficie de mutación económica o de inventario.

## 7. Realm isolation

`ItemShop` continúa resolviendo `Me_MuOnline` con el realm activo.

- AdminCP Soporte consulta únicamente el reino operativo seleccionado.
- UserCP Mis compras consulta únicamente el reino fijado en la sesión autenticada.
- No se mezclan órdenes de Legado y Seasonal en una sola consulta.

## 8. SQL

No se crean tablas, columnas ni índices nuevos.

Se reutiliza `NEXORA_ITEMSHOP_ORDERS`, incluyendo:

- `item_name`;
- `item_snapshot`;
- `price_paid`;
- `currency`;
- `warehouse_slot`;
- `item_serial`;
- `status`;
- `created_at`.

## 9. Núcleo sin cambios

Arsenal 1.7.1 mantiene idénticas a 1.7.0:

- `purchase()`;
- `encodeItem()`;
- `saveItem()`;
- `deleteItem()`.

Tampoco cambia:

- Warehouse;
- serial generation;
- `item-catalog.json`;
- `item-options.json`;
- JavaScript público de Arsenal;
- campañas 1.7.0;
- Analytics 1.6.9;
- Test Data Hygiene 1.6.9.1.
