backend-v0.9.0
后端 · 2026-07-28
施工进度上报层补齐「加入施工」机制、玩家可见上报事件流水、按材料封顶,并修复一批上报健壮性问题。
- 加入施工机制:玩家可显式加入某项目的施工(Web
Me页 + 游戏内!!PCH construction join);备货/施工阶段认领与上交时自动加入该项目;同一 Web 账号同时最多活跃加入 1 个项目(admin 开关enforce_single_construction,DB 部分唯一索引兜底;仅约束默认追踪器与 join 流程,/reportAPI 仍允许多项目并发上报)。新增端点GET /me/construction、POST /me/join、POST /me/switch、POST /me/leave、POST /active-by-uuids(迁移 0020sheets.constructing_at+ 0021participants)。 - 上报事件流水:新增
GET /me/report-events——玩家查看本人完整上报事件(accepted + 全部 skip 原因:无活跃源 / 其他源上报 / 不在清单 / 已达上限 / 未归因 等),让「为何我的上报被拒」可见(迁移 0023report_events)。 - 按材料封顶:每种材料跨账号合计净放置不得超过需求总量,满额后整条或超额部分 skip 并回执,避免超量计入(迁移 0022 回填历史超额)。
- 批量提交端点:
POST /sheets/{id}/submit-batch——第三方集成方传材料清单,后端按行 mode 自动分发delivery/contribute并逐行回执(双鉴权,决策逻辑为后端单一权威实现)。 - 施工进度上报层(迭代 1-3):
POST /v1/construction/report等 11 端点——施工方上报 constructing 期各方块净放置,按 (项目×账号×方块) 聚合,归档喂给积分层;严格单源、归因三分支、切源两端点、admin 5+1 开关、服务端 mod 白名单、时序快照、方块清单校验、材料完成度与休眠源查询。
- 上报写入健壮性(CR):事件/时序快照写入包 SAVEPOINT,失败不再污染主事务致整次上报回滚;
join_construction并发兜底改有界重试(防无限递归);Participant.updated_at退出/切换时显式刷新;/me/switch并发冲突返回 409 而非 500。