Skip to content

Commit 3021cee

Browse files
Soopranoclaude
andcommitted
docs: fase 34e (parser Winamax) en CLAUDE.md + Plan B + roadmap salas
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent a73daaa commit 3021cee

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ React 19 + TypeScript estricto (noUncheckedIndexedAccess, exactOptionalPropertyT
6060

6161
33. ✅ Tres calcs nuevas (C/D/E, 14 → 17 sub-tabs) migrando los bloques restantes del Excel "EV del call/check/bet/raise + conjunto" del usuario · todas **separan Bote / Apuesta del villano** como inputs distintos (pedido explícito del usuario, a diferencia de las viejas que piden el pot combinado) · **C — EV de checkear** (icono `Hand`, después de Check vs Bet) `checkCompoundEv({pot, villainBetsPct, villainBet, callEquityPct, checkCheckEquityPct})` → `pBet·[eqCall·(pot+vbet)−(1−eqCall)·vbet] + (1−pBet)·[eqXx·pot]` — junta las dos ramas de checkear: check-call si el villano apuesta, check-check si checkea atrás; dos ResultCards de rama + total con `evInterpretation`; sanity Excel 55.24 ✓ · **D — EV del raise** (icono `ArrowBigUp`, después de Raise sizing) `raiseBluffEv({pot, villainBet, raiseCost, foldPct})` → `F·(pot+vbet) − (1−F)·raiseCost` (bluff-raise, 0 equity si pagan) + `breakevenFoldPct = raiseCost/(raiseCost+pot+vbet)`; toggle "derivar fold% de combos" via `foldPctFromCombos(bet,call)=1−call/bet`; sanity Excel −2.20 / breakeven 52.94% / combos fold 42% → −0.75 ✓ · **E — EV multi-calle** (icono `Workflow`, después de Doble barrel) `multiStreetEv({evTurn, seeRiverPct, evRiver}) = evTurn + (seeRiver/100)·evRiver` — encadena dos calles; campos EV permiten negativos (parseField sin min); ReadOnly "aporte del river"; sanity Excel 5.18+0.6·(−81.4)=−43.66 ✓ · todas verificadas con node antes de commitear · **EV básico reframeado** (mismo commit, pedido del usuario): descripción sin "decisión binaria", labels Pot/% que esperás ganar/Tu apuesta · HomePage `ModuleCard` "Catorce" → "Diecisiete herramientas" + FAQ JSX (3 spans nuevos + EV básico desc actualizada) + `aPlain` resincronizado (estaba stale en "doce") · sin tocar sitemap/deploy/canonical · **pulido UX post-feedback**: "checkea atrás" → "check behind" (jerga); home hero `text-justify` via nuevo prop `descriptionClassName` en `PageHeader`; EV del raise defaults a pot=100; EV multi-calle defaults coherentes con Doble barrel (−12.5 / 75% / 25 → +6.25, reproduce el combinado) · **selector reordenado a orden pedagógico data-driven**: `CALC_GROUPS` array con 5 grupos (Fundamentos · Cuando apostás vos · Cuando enfrentás una apuesta · All-in · Multi-way) agrupados por la acción que tenés enfrente, con etiquetas de grupo (span `w-full` que fuerza salto de línea en el flex-wrap, `text-[10px]` uppercase muted) — editar el array reordena el selector; CalcMode union y conditionals de render reordenados para coincidir; pills inactivas con `ring-inset ring-border/50` para delimitar)
6262

63-
34. ✅ Módulo "Análisis de manos" — fase 1: Worksheet desde `.txt` (6ª ruta `/analisis` con icono `FileSearch` en sidebar, range-independent) · objetivo: convertir una mano real jugada en un estudio estructurado apoyado en las 17 calcs, SIN reconstruir herramientas que el usuario ya tiene (replayer de PokerTracker, Flopzilla) — la equity la sigue trayendo de Flopzilla y la tipea · **34a** `src/utils/handHistory.ts` parser tolerante del formato iPoker (cartas palo-primero `[HJ S9]`, suits H/S/C/**D** → ♥♠♣♦, rango `10`→`T`; motor de pot por contribución corrida — `potBefore` por decisión es lo que siembra las calcs; `Decision`/`StreetData`/`ParsedHand`; héroe del `Dealt to`, board acumulado, showdown) · `src/utils/spotCalc.ts` `suggestCalcForDecision(decision, hand)` mapea cada jugada del héroe a la calc adecuada con **seeds enriquecidos** (cada seed lleva pot/bet/currentPot/loseAmount + potTurn/betTurn/betRiver para que TODA alternativa reciba datos, no solo la primaria — fix tras feedback) + `barrelPairSeed` reconstruye la línea de 2 barriles en ambas direcciones + `flopzillaInputsFor(mode)` lista qué inputs trae el usuario de Flopzilla por calc; reglas: bet→bluff-ev (o double-barrel si hay barrel en calle siguiente), allin→all-in-ev, call→call-vs-raise, **check en river→check-vs-bet/check-ev** (check behind vs valuebet fino) · `CalcMode`+`CALC_GROUPS`+`CALC_META` extraídos a `src/modules/calculators/calcMeta.ts` compartido · verificado con node: hero J♥9♠, board A♥7♥9♣3♥8♠, pots 70/140/350 · **34b** `CardFace` extendido a ♦ (aditivo, deck 4 colores ♠slate/♥rojo/♦azul/♣verde, no afecta al trainer que solo usa 3) · `src/modules/analysis/` BoardCards (reusa CardFace) · InlineCalc (switch CalcMode→componente sembrado) · HandWorksheet (cabecera con cartas+stacks+toggle Fichas↔BB, calles con board+badge de pot ámbar, decisiones con monto en chip ámbar + sizing `% pot`, botón Analizar inline con chips de calc + `DataSourceLegend` verde/ámbar que indica qué está cargado de la mano y qué ingresar de Flopzilla, notas por mano, showdown) · AnalysisPage (textarea + "Cargar ejemplo" + parse tolerante con banner suave de errores) · 8 calcs ganan props `initial*` opcionales (`?: string | undefined` por exactOptionalPropertyTypes) backward-compatible — `/calculadoras` queda idéntico, render con `key={decision.id}-${mode}` para re-sembrar al cambiar · ruta + nav · **34c** SEO: `sitemap.xml` `/analisis/` priority 0.7 + pre-render en `deploy.yml` + canonical self-referente en AnalysisPage · HomePage `ModuleCard` "Análisis de manos" + FAQ "¿Cómo analizo una mano que jugué?" (JSX + `aPlain` sincronizados) · **34d** (`47e6b16`) parser generalizado a **GGPoker/PokerStars** (formato que exporta PT4) además de iPoker, sin romperlo: cartas order-agnostic (`[Js Td]` rango+palo-min vs `[HJ S9]` palo-may+rango — el palo es el char en {s,h,c,d}), board acumulado (parsea todos los grupos `[...]` y reemplaza/concatena según `BOARD_SIZE` de la calle — GG repite todo el board, iPoker solo la nueva), header `Poker Hand #` + ciegas de `Level1(10/20)`, botón desde `Seat #N is the button`, all-in flag + `Uncalled bet (X) returned to` (resta del pot), shows inline del runout + summary GG `Seat N: name (pos) showed [..] won (X)` + `collected X from pot` · worksheet: call preflop que enfrenta raise (call>BB) ahora analizable + board final en Showdown · próxima fase elegida por el usuario: Modo Workbook con drills, empezando por "¿Qué calculadora?" (reusa `spotCalc.ts`)
63+
34. ✅ Módulo "Análisis de manos" — fase 1: Worksheet desde `.txt` (6ª ruta `/analisis` con icono `FileSearch` en sidebar, range-independent) · objetivo: convertir una mano real jugada en un estudio estructurado apoyado en las 17 calcs, SIN reconstruir herramientas que el usuario ya tiene (replayer de PokerTracker, Flopzilla) — la equity la sigue trayendo de Flopzilla y la tipea · **34a** `src/utils/handHistory.ts` parser tolerante del formato iPoker (cartas palo-primero `[HJ S9]`, suits H/S/C/**D** → ♥♠♣♦, rango `10`→`T`; motor de pot por contribución corrida — `potBefore` por decisión es lo que siembra las calcs; `Decision`/`StreetData`/`ParsedHand`; héroe del `Dealt to`, board acumulado, showdown) · `src/utils/spotCalc.ts` `suggestCalcForDecision(decision, hand)` mapea cada jugada del héroe a la calc adecuada con **seeds enriquecidos** (cada seed lleva pot/bet/currentPot/loseAmount + potTurn/betTurn/betRiver para que TODA alternativa reciba datos, no solo la primaria — fix tras feedback) + `barrelPairSeed` reconstruye la línea de 2 barriles en ambas direcciones + `flopzillaInputsFor(mode)` lista qué inputs trae el usuario de Flopzilla por calc; reglas: bet→bluff-ev (o double-barrel si hay barrel en calle siguiente), allin→all-in-ev, call→call-vs-raise, **check en river→check-vs-bet/check-ev** (check behind vs valuebet fino) · `CalcMode`+`CALC_GROUPS`+`CALC_META` extraídos a `src/modules/calculators/calcMeta.ts` compartido · verificado con node: hero J♥9♠, board A♥7♥9♣3♥8♠, pots 70/140/350 · **34b** `CardFace` extendido a ♦ (aditivo, deck 4 colores ♠slate/♥rojo/♦azul/♣verde, no afecta al trainer que solo usa 3) · `src/modules/analysis/` BoardCards (reusa CardFace) · InlineCalc (switch CalcMode→componente sembrado) · HandWorksheet (cabecera con cartas+stacks+toggle Fichas↔BB, calles con board+badge de pot ámbar, decisiones con monto en chip ámbar + sizing `% pot`, botón Analizar inline con chips de calc + `DataSourceLegend` verde/ámbar que indica qué está cargado de la mano y qué ingresar de Flopzilla, notas por mano, showdown) · AnalysisPage (textarea + "Cargar ejemplo" + parse tolerante con banner suave de errores) · 8 calcs ganan props `initial*` opcionales (`?: string | undefined` por exactOptionalPropertyTypes) backward-compatible — `/calculadoras` queda idéntico, render con `key={decision.id}-${mode}` para re-sembrar al cambiar · ruta + nav · **34c** SEO: `sitemap.xml` `/analisis/` priority 0.7 + pre-render en `deploy.yml` + canonical self-referente en AnalysisPage · HomePage `ModuleCard` "Análisis de manos" + FAQ "¿Cómo analizo una mano que jugué?" (JSX + `aPlain` sincronizados) · **34d** (`47e6b16`) parser generalizado a **GGPoker/PokerStars** (formato que exporta PT4) además de iPoker, sin romperlo: cartas order-agnostic (`[Js Td]` rango+palo-min vs `[HJ S9]` palo-may+rango — el palo es el char en {s,h,c,d}), board acumulado (parsea todos los grupos `[...]` y reemplaza/concatena según `BOARD_SIZE` de la calle — GG repite todo el board, iPoker solo la nueva), header `Poker Hand #` + ciegas de `Level1(10/20)`, botón desde `Seat #N is the button`, all-in flag + `Uncalled bet (X) returned to` (resta del pot), shows inline del runout + summary GG `Seat N: name (pos) showed [..] won (X)` + `collected X from pot` · worksheet: call preflop que enfrenta raise (call>BB) ahora analizable + board final en Showdown · **34e** (`a73daaa`) tercer dialecto **Winamax**: acciones SIN dos puntos (`Atenea. posts small blind 40` — se prueba `Nombre: verbo` y se acepta el colon solo si lo sigue un verbo conocido, porque las descripciones traen `" : "` tipo `Two pairs : 5 and 4`; fallback a match anclado al verbo), header `Winamax …` con ciegas en `(40/80)` (parse genérico de parénthesis-slash), botón en `Table:`, board pegado `[4d Js Td][7c]`, `collected X from main/side pot`, `won X` sin paréntesis, shows con desc en paréntesis · **3 salas soportadas: iPoker + GGPoker/Stars + Winamax** · próxima fase elegida por el usuario: Modo Workbook con drills, empezando por "¿Qué calculadora?" (reusa `spotCalc.ts`)
6464

6565
## Convenciones
6666

‎RECOVERY.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
| Hito | Hash |
1515
|---|---|
16-
| Fase 34 (módulo "Análisis de manos" — fase 1: Worksheet desde `.txt`. Parser tolerante + motor de pot + `spotCalc` mapeo decisión→calc con seeds enriquecidos + worksheet que abre la calc adecuada inline pre-llenada · ruta `/analisis` · **34d** generaliza el parser a GGPoker/Stars además de iPoker · NO reconstruye replayer/Flopzilla — la equity la trae el usuario de Flopzilla) | `2eceb6a` → `47e6b16` |
16+
| Fase 34 (módulo "Análisis de manos" — fase 1: Worksheet desde `.txt`. Parser tolerante + motor de pot + `spotCalc` mapeo decisión→calc con seeds enriquecidos + worksheet que abre la calc adecuada inline pre-llenada · ruta `/analisis` · **34d** GGPoker/Stars · **34e** Winamax (3 salas soportadas) · NO reconstruye replayer/Flopzilla — la equity la trae el usuario de Flopzilla) | `2eceb6a` → `a73daaa` |
1717
| Fase 33 (tres calcs nuevas C/D/E: EV de checkear compuesto + EV del raise bluff con combos + EV multi-calle — 14 → 17 sub-tabs, separan Bote/Apuesta del villano · reframe EV básico · pulido UX post-feedback + reorden pedagógico agrupado del selector) | `f954ca5` → `d8ddbd4` |
1818
| Fase 32 (pulido de claridad: captions de interpretación EV + raise% en Check vs Bet + PME/breakeven consistente — A+B+F del audit de calcs vs Excels del usuario) | `16ff55b` |
1919
| Fase 31 (Fold equity requerida con equity — 14ª sub-tab de `/calculadoras`: cómo el breakeven de fold equity baja al shovear all-in con equity de respaldo · valida contra Excel + web fold equity calculator) | `65f6827` |
@@ -185,7 +185,7 @@ Live en https://rangesoprano.com/ (custom domain Cloudflare → GitHub Pages). I
185185
## Roadmap pendiente
186186

187187
- **Análisis de manos · fase 2 — Modo Workbook con drills** (confirmado por el usuario): ejercicios con puntaje estilo trainer (config/corriendo/resultado + leaderboard + panel de errores), **empezando por "¿Qué calculadora?"** que reusa `src/utils/spotCalc.ts`. Después: conteo de combos (combinatoria pura con bloqueadores), fold equity / auto-profit, textura de board, value/bluff balance, SPR.
188-
- **Análisis de manos — parsear `.txt` de OTRAS salas** (pedido del usuario, trabajo futuro continuo): `src/utils/handHistory.ts` ya lee **iPoker** y **GGPoker/PokerStars** (fase 34d). Falta sumar más salas a medida que el usuario las use (888, Winamax, partypoker, etc.) — la arquitectura ya está lista: agregar las variantes de header/seat/post/acción/board al parser tolerante; el resto del módulo (`spotCalc`, worksheet) es agnóstico al formato porque consume el mismo `ParsedHand`. Cuando el usuario mande un `.txt` de una sala nueva, replicar el patrón de 34d (cartas order-agnostic ya cubre la mayoría).
188+
- **Análisis de manos — parsear `.txt` de OTRAS salas** (pedido del usuario, trabajo futuro continuo): `src/utils/handHistory.ts` ya lee **iPoker** (34), **GGPoker/PokerStars** (34d) y **Winamax** (34e). Falta sumar más salas a medida que el usuario las use (888, partypoker, etc.) — la arquitectura ya está lista: agregar las variantes de header/seat/post/acción/board al parser tolerante; el resto del módulo (`spotCalc`, worksheet) es agnóstico al formato porque consume el mismo `ParsedHand`. Cuando el usuario mande un `.txt` de una sala nueva, replicar el patrón de 34d/34e (cartas order-agnostic + acciones con/sin dos puntos ya cubren la mayoría).
189189

190190
## Feature deferred
191191

0 commit comments

Comments
 (0)