Dos arreglos pendientes que quedaron señalados:
1. "Sacedorte" era una errata de "Sacerdote" en tres categorías (3-10, 4-10 y
19-9; la 20-9 estaba bien). Se veía así en la web en español. Corregido en la
BD y, sobre todo, en el seed `store_catalog.sql`, que la traía 3 veces: sin
eso, reconstruir la BD la resucitaba. Regenerado store_category_en.sql (217
nombres distintos en vez de 218: las dos grafías ya son una).
Un escaneo por parecido contra los términos oficiales de los DB2 confirma que
era la única errata; el resto de casi-coincidencias son plurales legítimos
("Espadas" vs el "Espada" del juego).
2. El cuadro del ítem medía 160px y el del store original 200. Igualado. Solo
afecta a /store: send-gift fija las columnas de su rejilla a 160px y hace
width:auto, y se ha comprobado que sigue midiendo 160.
Con solo cambiar la anchura se quedaba en 200 en vez de 214: el tema se
diseñó para el content-box del navegador y el preflight de Tailwind mete
border-box, así que el padding y el borde dejaban de sumar (el mismo problema
que ya estaba arreglado para los inputs). Se restaura content-box solo en la
tienda, porque en la rejilla de send-gift desbordaría las columnas.
Medido en el navegador: el cuadro pasa a 214px de ancho, que es lo que mide el
del original (213 en la captura). send-gift sigue en 160.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Porta la tienda de ítems/transfiguración del sistema antiguo: elegir personaje →
árbol de categorías (3 niveles) → carrito → enviar por correo. Se paga con el
saldo PD o PV de la cuenta (cada ítem lleva su precio y moneda).
- BD: home_store_category (árbol por code "1-1-1") + home_store_item
(mismos item_id, nombres, iconos, precios y moneda que el original;
2947 en PD, 121 en PV). Seed en sql/store_catalog.sql, extraído del HTML real.
- lib/store.ts: getStoreCatalog (árbol anidado), getStoreBalances, priceStoreCart
(precios REALES de BD), purchaseStoreCart (cobro atómico PD+PV con FOR UPDATE y
reembolso si el envío SOAP falla; `.send items` troceado a 12/correo).
- API: GET /api/store/catalog (tras elegir personaje) y POST /api/store/send.
- components/StoreBrowser.tsx: selector de personaje, árbol colapsable (ítems
montados solo al abrir), carrito con totales PD/PV, enviar, modal de resultado.
- página /store con la info y el título "Tienda - REINO". Enlaces de ítems e
iconos por wowhead/zamimg (con tooltip y locale). El enlace ya existía en
AccountTools. i18n namespace Store (es/en). CSS del árbol/carrito/modal.
Verificado: catálogo E2E (750 cats/3068 ítems), cobro atómico + reembolso y
detección de saldo insuficiente (cuenta 15). SOAP real sin probar (worldserver
caído en este entorno).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>