问题8 登录系统: - node:sqlite 账号存储(scrypt 哈希 + HMAC 签名 token),preset admin 改为 e2hang/evan1115 - /api/auth/register|login|me,me 返回 room 供重联 - 网关拦截 create/join 需登录(401),列表保持开放 踢人逻辑修正(问题2 延伸): - kickMove 真正释放座位(folded=false, name=null)而非锁死 - war/mill 去掉永久封禁语义 管理员越权:管理员 token 可删任意房间、踢任意房间内的人 单房间约束(用户新需求): - 同一用户同时只能在一个房间,create/join 他房返回 409 - 踢人后若房间仅剩踢人者则自动解散并释放其记录(修复 2 人局踢光对手后被困 409) - 陈旧房间记录兜底清理 UI 清理:移除"改名"按钮与"你的名字"输入框;删除房间按钮仅房主/管理员可见 docs: 新增 12-auth-kick-single-room.md 汇总本会话全部需求/根因/修复/边界测试 Co-Authored-By: Claude (CodeBuddy) <noreply@codebuddy.ai>
24 lines
1.5 KiB
Markdown
24 lines
1.5 KiB
Markdown
# 问题 10:每人筹码区增加“总已下”(累计每次下注)
|
||
|
||
## 现象 / 需求
|
||
在牌桌每个座位(玩家筹码区)增加一项 **“本手总已下”**(totalBetThisHand),
|
||
即该玩家在这一手里面累计投入底池的筹码总和(盲注 + 每次跟注/加注),并展示出来。
|
||
|
||
## 现状
|
||
- `HoldemPlayer.totalBetThisHand` **字段已存在**(`holdem.ts:58`),且在下注时实时累加
|
||
(`callMove` / `raiseMove` / `postBlind` 都更新它)。
|
||
- 但 **UI 没显示它**:`HoldemBoard` 只渲染了 `筹码 {stack}` 与 `下 {betThisRound}`
|
||
(`HoldemBoard.tsx:149-150`),`betThisRound` 是“本街”已下,`totalBetThisHand` 是“本手”总已下,二者不同。
|
||
|
||
## 拟采用方案
|
||
- UI 在座位信息里加一行:**`总下 {p.totalBetThisHand}`**(仅当 `> 0` 时显示,与 `下 {betThisRound}` 并列)。
|
||
- 可选:在“底池”区也显示“本手累计底池”= `pot`(已有)。
|
||
- 语义区分清楚:
|
||
- `betThisRound`:本街(flop/turn/river/preflop)已下,每街重置。
|
||
- `totalBetThisHand`:整手累计,发牌时重置(`startHandSetup` 里 `p.totalBetThisHand = 0`)。
|
||
- 无需改 engine(字段和累加都已有且正确),纯 UI 展示。
|
||
|
||
## 验证
|
||
- 联机手测:preflop 跟注 20 + flop 加注到 60 → 该座位显示 `总下 80`(20+60),`下 60`。
|
||
- 单测:确认 `totalBetThisHand` 在 `callMove`/`raiseMove` 里累加正确(已有 `buildPots` 间接依赖,补一条直接断言)。
|