# Arsenal Nexora 1.6.9.1 - Test Data Hygiene

## Objetivo

Permitir pruebas reales de compra sin contaminar Analytics ni agotar el límite histórico por cuenta, conservando el registro de la entrega.

## Modelo

No se eliminan filas de `NEXORA_ITEMSHOP_ORDERS`. Una compra confirmada puede reclasificarse:

- `delivered` = compra real; cuenta en Analytics y `max_per_account`.
- `delivered_test` = entrega de prueba; no cuenta en Analytics ni en `max_per_account`.

La reclasificación es reversible desde AdminCP.

## AdminCP

`Arsenal Nexora -> Entregas / Datos de prueba` permite:

- filtrar por cuenta exacta;
- filtrar compras reales o de prueba;
- seleccionar hasta 500 entregas por operación;
- `Marcar como prueba`;
- `Restaurar como compra real`.

También existe el acceso directo `Arsenal Nexora -> Datos de prueba`.

## Qué se limpia

Al marcar una entrega como prueba:

- desaparece de Analytics porque Analytics solo consume `status=delivered`;
- deja de consumir el límite histórico por cuenta porque `purchase()` ya cuenta únicamente órdenes `delivered`;
- la fila, snapshot, precio, serial, slot, cuenta y fecha permanecen guardados.

## Qué NO se revierte

La operación NO:

- devuelve WCoinC/WCoinP/Goblin Points;
- elimina el ítem del Warehouse;
- devuelve stock al catálogo;
- modifica o reutiliza seriales;
- reescribe el snapshot de la compra.

Estas fronteras son intencionales: una limpieza estadística no debe intentar deshacer automáticamente una transacción de juego ya confirmada.

## Seguridad

- realm activo aislado;
- máximo 500 IDs por acción;
- bloqueo `UPDLOCK,HOLDLOCK` durante la reclasificación;
- actualización solo desde el estado esperado (`delivered` o `delivered_test`);
- transacción SQL completa;
- auditoría `itemshop.testdata_mark` / `itemshop.testdata_restore`;
- protección CSRF central de AdminCP.

## SQL

No requiere tabla, columna ni migración nueva. `status` ya es `varchar(20)` y admite `delivered_test`.

## Recomendación operativa

Usar una cuenta dedicada de QA y productos con stock ilimitado durante pruebas. Después de cada sesión, filtrar esa cuenta y marcar sus entregas como prueba.
