数据库 Schema
Schema: backend/prisma/schema.prisma
模型
RoundSnapshot
每房间一条,轮次边界 async upsert,Redis 崩溃恢复用。
| 字段 | 说明 |
|---|---|
| survivorEmails | 存活 internalEmail 列表 |
| currentRound | 轮次 |
| started | 是否已开始 |
RoundElimination
淘汰明细,eliminatedReason: no_answer | majority_choice
GameResult
| 字段 | 说明 |
|---|---|
| winnerEmail | internalEmail |
| tierEmails | 平局 email[] |
| finalRound | 结束轮次 |
note
玩家 displayName 仅存 Redis,不在 PG。GameResult 存 internalEmail。
Redis 完整 Key 列表
# 游戏
game:{roomId}:started | state | round | answers | winner | tie
current_question:{roomId}
room:{roomId}:survivors | eliminated
user:{email}:answer:{qid} | session | online
recovery:{roomId}:disabled
# 登录码 & 玩家(新增)
game:{roomId}:login_code
game:{roomId}:player_number_seq
player:{uuid}:displayNumber | displayName | internalEmail
internal:{email}:displayName
Migration
npx prisma migrate dev # 开发
npx prisma migrate deploy # 生产
npx prisma generate # backend client