Changelogs
store: la ruta pasa a ser /store-<reino> y /store da 404
15 de julio de 2026 a las 11:48adevopg · e10f73b
Como el original (/store-bennu). El slug sale de acore_auth.realmlist, así que no puede ser una carpeta fija: lo resuelve la ruta dinámica `[realm]`, que ya servía /<slug>-realm y /<slug>-players con este mismo patrón. Solo hubo que añadirle el tipo `store`; el contenido de la página se mueve a components/StorePage.tsx. /store da 404 sin código extra: al no existir ya la carpeta estática `store`, entra por `[realm]`, no resuelve y cae en el notFound() que ya estaba. Enlaces actualizados: el de /my-account (AccountTools, que es cliente y recibe el href ya calculado) y el cancelUrl de la pasarela, que devolvía a /store. Verificado: /es/store-trinity y /en/store-trinity dan 200 y la tienda carga el catálogo; /es/store y /en/store dan 404; un slug ajeno (/es/store-bennu) también 404; /es/trinity-realm y /es/trinity-players siguen bien; y el enlace de /my-account apunta a /es/store-trinity.
store: el concepto del cobro incluye también la IP
15 de julio de 2026 a las 11:41adevopg · d346197
Tienda · BNet inna@inna.cl · Cuenta 15#1 · Innadin · IP 213.94.48.99 · Grito de la sirena (45327) x2 La IP ya se capturaba, pero solo se guardaba en home_stripelog.acore_ip. OJO: meterla en el concepto SÍ se la manda a la pasarela, cosa que antes no pasaba (ni Stripe ni SumUp la recibían). Va a propósito, para identificar al pagador en su panel si hay fraude o una devolución a mano. Se omite si no se conoce y también el 0.0.0.0 de relleno, que no aporta nada. Verificado contra checkouts reales de Stripe (test): IPv4 con 1 ítem = 100 chars; IPv6 (39 chars) con 1 ítem = 124; IPv6 con 30 ítems = 172, recortando los ítems. Todos por debajo del límite de 200.
store: el concepto del cobro dice quién compra y qué
15 de julio de 2026 a las 11:36adevopg · 18fe248
Ponía "Compra en la tienda (1 objeto)", que no identifica nada. Ahora: Tienda · BNet inna@inna.cl · Cuenta 15#1 · Innadin · Grito de la sirena (45327) x2 Cuenta Battle.net, cuenta de juego, personaje, y el nombre de cada ítem con su id. Es lo único que Stripe/SumUp enseñan en su panel, así que es lo que hay para identificar un pago cuando toca reclamar o devolver algo a mano. Se recorta a 200 caracteres porque las dos pasarelas limitan el campo (~250) y un carrito grande se pasaría. Se recortan solo los ÍTEMS ("+37 más"), nunca la cabecera: quién ha pagado importa más que el listado, que además queda entero en home_store_order. El recorte quita ítems hasta que quepa TODO con el sufijo incluido; comprobarlo antes de añadir el "+N más" se pasaba igual (206 chars con 12 ítems, visto en un checkout real). priceStoreCart trae ahora también el nombre del ítem, que no leía. Verificado contra checkouts reales de Stripe (test) con 1, 12 y 40 ítems: 82, 167 y 168 caracteres.
store: la columna del carrito se llama "Item", no "Objeto"
15 de julio de 2026 a las 11:29adevopg · 457dac8
El original rotula esa cabecera "Item" (comprobado en su HTML: <th class="width-50-td justified">Item</th>). El inglés ya estaba bien.
store: el árbol de categorías, igual que el original (colores y sin fantasmas)
15 de julio de 2026 a las 11:24adevopg · 24248bc
Investigadas las 750 categorías de la BD contra el HTML real del original. Los ítems estaban perfectos (554 hojas, 3068 ítems, mismo contenido en cada una: no faltaba ninguno). Todo lo roto era de categorías: - 45 CATEGORÍAS FANTASMA, todas con nombre de código ("11-1", "23-10"). El seed dedujo el árbol de los códigos de las hojas ("11-1-1" => padre "11-1"), pero el original NO siempre pinta ese nivel: en 45 hojas el "-1-" del código no corresponde a nada y cuelgan directas de su raíz. Ahora se lee el anidamiento real (<ul>/<li>): 705 categorías (20 + 131 + 554) en vez de 750. - El nombre de una categoría NO es texto plano, es HTML, y lo estábamos aplanando: 141 nombres perdían su color y 40 cabeceras el suyo. Hay dos mecanismos y los dos hacen falta: la clase en la CABECERA, que sustituye a first-brown para colorear la categoría entera ("Brujo" en color de brujo), y los <span class="no-toggle X"> dentro del nombre (clases y las etiquetas [Nivel 232 a 245] / (DPS) en otro tono). - 21 nombres TRUNCADOS en Tokens de Armadura: guardábamos "Guerrero" donde el original dice "Guerrero, Sacerdote, Druida" (solo se quedó el primer span). El HTML se trocea en el SERVIDOR (`parseCategoryName`) y al cliente le llegan solo texto + nombre de clase, así que no hay HTML de la BD entrando en el DOM. El texto sin color va suelto, NO envuelto en <span>: el tema tiene `span { color: #fff }` y lo pondría blanco en vez de heredar el de la cabecera. `name` pasa a VARCHAR(512): con el HTML, el más largo mide 198 y no cabía en 191. El name_en se genera en el propio seed traduciendo solo el TEXTO y respetando las etiquetas, así que sql/store_category_en.sql sobra y se borra. gen_store_catalog.py regenera el seed entero (categorías del HTML, ítems de la BD, que ya estaban verificados) y es reproducible byte a byte. Verificado en el navegador contra el original: mismo árbol, 0 categorías con nombre de código, "[Nivel 232 a 245]" en marrón tenue y los colores de clase oficiales (Guerrero #C79C6E, Sacerdote blanco, Druida #FF7D0A). En inglés también, conservando los colores.


