后续需求路线图 v1
定位:基于 W29 工程证据和代码质量审计整理的后续需求入口;只定义可拆 lane 的顺序、边界和验收,不创建 task 卡、不派工。 调度规则:无日期门、时刻门、callback 等待门或 P1 审批等待门。任务按完成证据接力;独立文件锁可并行,同一文件锁必须串行。 owner review 规则:
pending / approved / changes_requested只记录产品验收状态。pending不阻塞工程推进,也不得被写成approved。
0. 单一目标
先恢复仓库可持续交付能力并如实完成 W29 收口,再按“失败结果可理解 → 跨周目可感知 → 角色经营更有深度 → 内容扩容 → 真实联机”的用户价值链推进新需求。
每个候选必须同时满足:
- 直接改善玩家体验或降低后续交付风险。
- 遵守
AGENTS.md三层架构、相对路径和玩家文案边界。 - 有明确文件锁、可执行验收、非目标和回退点。
- 不把计划、preview、mtime、dirty tree 或 owner review
pending当成完成证据。
1. 当前完成度与未收口项
1.1 W29 / Phase 1 真值
| lane | 当前结论 | 可复用证据 | 后续处理 |
| :--- | :--- | :--- | :--- |
| R7 实时竞价 | 代码与测试完成,卡面状态有漂移 | 5/5 回归 + build | 不重做功能;R11 如实吸收工程证据 |
| R8 流拍与重连 | 代码与测试完成,卡面状态有漂移 | timeout 5/5 + reconnect 5/5 + build | 不重做功能;R11 如实吸收工程证据 |
| R9 胜利数值 | verified | R9 task 卡 + R9/R14 11/11 | 失败链 v1.2 复用已签字胜利契约 |
| R10 联机 UI | partial / accepted residual risk | 代码接线与 build 已落 | 浏览器、截图和视觉验收进入非阻塞 checklist;不得伪造 verified |
| R11 W29 收口 | 未收口,已具备立即执行条件 | R11 task 卡 ready_for_dispatch / no_time_gate | 按当前证据落收口文档;R10 缺口写 residual risk |
| R12 剧情字段净化 | verified | R12 task 卡 | 不重开 |
| R13 旧账风波 | verified | 节点回归 5/5 + build | 不重开;二段桥接已经存在,不再排重复施工 |
| R14 跨周目锚点 | verified | R14/R9 回归 11/11 + build | 后续只做未落的结算接线与 UI,不重做锚点/折算函数 |
| T3 装备字段 | verified | Zod + 回归 5/5 + build | 不重开 |
| 联机骨架文档 sync | 未收口,可立即执行 | doc-sync task 卡 ready_for_dispatch / no_time_gate | 与 R11/质量 lane 文件无交叉,可独立推进 |
R13 二段去重证据:
src/data/eventTables/storyline-old-ledger.ts已存在STORYLINE_OLD_LEDGER_EVENTS。src/data/eventTables/index.ts已注册该桥接表。OLD_LEDGER_YEAR_END_INPUTS已提供day-335-input与day-360-input收束输入。- 因此旧计划里的“R13 桥接表 + 收束页对接二段”不得再次派工;后续若发现真实 UI 缺口,只能开新的、基于现状的 UI 接线 lane。
1.2 代码质量基线
| 检查 | 当前真值 |
| :--- | :--- |
| build | PASS |
| test:w29 | 39/39 PASS |
| lint / TypeScript | FAIL,68 errors |
| 错误分组 | Buff 27;auction 21;核心 UI/运行时 13;剧情编辑器 4;根目录残片 3 |
| 主要架构债 | Buff 数据层函数、oldLedger 历史数据层函数、items 历史派生索引 |
1.3 R10 owner review checklist(非阻塞)
- [ ] 浏览器真实路径:主导航 → multiplayer → 房间 → 4 态切换。
- [ ] 4 张状态截图:
waiting / bidding / antiSnipe / settled。 - [ ] 3 张掉线截图:重连、离线、房主转移。
- [ ] 视觉规范 12 项 + auction console 一致性 6 项留存证据。
- [ ] 回退点:仅回退
RoomCard.tsx视觉调整与App.tsxmultiplayer 入口变更,不动 R7/R8 状态机。 - owner review:
pending。
以上未完成项不阻塞 doc-sync、R11 或代码质量 lane;在证据补齐前,R10 始终保持 partial / accepted residual risk。
2. 优先级需求池
| 优先级 | ID | 需求 | 进入条件 | 完成后接力 |
| :---: | :--- | :--- | :--- | :--- |
| P0 | C0 | W29 证据收口 | 立即可执行 | 为路线图提供稳定基线 |
| P0 | Q0 | 全仓代码质量恢复 | 立即可执行;按文件锁拆分 | 解除新功能叠加在 68 个错误上的风险 |
| P1 | F1 | 失败链 v1.2 | Q0 工程收口 | X1 |
| P1 | X1 | 跨周目结算接线与 UI | F1 后;先统一 0.95 归属 | D1 |
| P1 | D1 | 角色深度 UI | Q0 后,且目标组件文件锁空闲 | P2 内容扩容 |
| P2 | K1 | 内容池扩展 | D1 的展示/消费契约稳定 | N1 |
| P2 | N1 | WebRTC 与跨设备同步 | 本地状态机、联机文档和质量基线稳定 | 后续联机体验增强 |
| P2 | L1 | 启动页 v1.3 按钮接入 | Q0 收口 + landing 文件锁空闲 | 独立收口 |
P0 的 C0 与 Q0 可并行;P1/P2 不因 P1 签字等待而停工,但必须保留 owner review checklist、推荐默认值、证据和回退点。
L1 拍板记录:2026-07-13 17:58 +08:00 P1 拍板 8 项按钮接入决策,需求契约见 docs/design/active/启动页v1.3按钮需求-v1.md(独立撰写,本路线图不重复规格)。
3. 依赖与顺序
C0 W29 证据收口 ───────────────┐
├─ 稳定工程基线
Q0 质量恢复:Buff / auction / runtime / tools ┼──┐
│ │
│ │ ▼
▼ │ L1 启动页 v1.3 按钮接入
F1 失败链 v1.2 │ (独立收口,5 Open Questions 拍板后即可起)
│ │
▼ │
X1 0.95 契约归一 → 跨周目结算接线/UI │
│ │
▼ │
D1 角色深度 UI │
│ │
▼ │
K1 内容池扩展 │
│ │
▼ │
N1 WebRTC → 跨设备同步 │
顺序理由:
- 质量恢复先行,避免新功能继续放大类型契约和三层架构债。
- 失败链直接补足“为什么失败、如何调整”的核心经营反馈,且复用 R9 已签字契约。
- 跨周目 UI 在展示前必须统一
0.95跨年衰减的应用位置;这是工程契约依赖,不是审批等待门。 - 角色深度 UI 依赖稳定运行时与员工状态契约,随后内容池才能按真实消费面扩容。
- WebRTC 和跨设备同步涉及兼容性、权威状态、断线恢复与安全边界,放在本地状态机和内容主循环稳定之后。
- L1 启动页 v1.3 按钮接入是独立分支,只依赖 Q0 收口 + landing 文件锁空闲,不与 F1-X1-D1-K1-N1 主链串行。P1 必须先拍板 5 个 Open Questions(排行榜数据源 / 百科内容来源 / 新闻公告存储 / modal 视觉 / 微信群过期机制)才起实施切片。
4. P0 lane 包
C0 · W29 证据收口
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 防止“代码已落但状态不可信”持续污染后续版本判断 |
| 依赖 | 无 callback/P1 等待依赖;读取当下工程证据 |
| 文件边界 | doc-sync 只动 docs/design/active/联机P2P房间骨架-v1.md;R11 按既有卡面写收口文档与 handoff update;本路线图不代改它们 |
| 工量 | S |
| 验收 | doc-sync 7 段真填;R11 如实区分 verified/partial;R10 owner review 保持实际状态 |
| 非目标 | 不重开 R7-R10,不实现新需求,不把 R10 升为假 verified |
| 风险 / 回退 | 控制面与工程证据漂移;回退为撤销错误状态表述,保留事实证据 |
Q0 · 全仓代码质量恢复
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 降低功能回归和存档损坏风险,让后续需求具备可信构建基线 |
| 依赖 | 无日期门;src/App.tsx 必须等 R10 文件锁释放或由 lane 明确让出 |
| 文件边界 | Q-Buff:src/data/buffs/** + src/utils/buffs/**;Q-Auction:src/data/auction/** + src/utils/auctionRules.ts;Q-Runtime:当前 13 个报错文件及其类型 owner;Q-Tools:tools/剧情编辑器/** + types_append.ts 来源核定 |
| 工量 | L,可拆 4 个领域 lane |
| 验收 | lint 68 → 0;build PASS;test:w29 39/39;开档 → 进游戏 → 玩 1 个周期 smoke PASS;无三层反向依赖 |
| 非目标 | 不改玩家可见 UI、业务数值、拍卖规则、Buff 效果或存档语义;不顺手迁移所有历史架构债 |
| 风险 / 回退 | 类型修复可能掩盖真实契约漂移;每个领域独立提交/补丁,失败时按领域回退,不回退其他 lane |
5. P1 lane 包
F1 · 失败链 v1.2
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 玩家能理解经营败局由哪些维度累积、还差什么、下一局如何修正 |
| 依赖 | Q0 通过;复用 R9 AND 复合判定、优先级与四个 D3 对接点 |
| 文件边界 | 数据:src/data/endgame/** 只放阈值/类型/静态配置;逻辑:src/utils/endgame/** 与既有 failure utils;UI:src/components/endgame/**、EndgamePanel.tsx,每层分开施工 |
| 工量 | M |
| 验收 | 4 维度阈值与触发优先级可配置;确定性测试覆盖临界值/互斥/重复触发;UI 只渲染逻辑层元数据;build/lint/test 通过 |
| 非目标 | 不重平衡胜利签字值,不做跨周目迁移,不扩内容池 |
| 风险 / 回退 | 阈值影响存量局面;默认值集中在数据层,owner review 可记 pending,需要调整时只回退常量与对应 UI 文案 |
X1 · 跨周目结算接线与 UI
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 通关后能看见本周目沉淀、下一周目收益与上限,形成明确重复游玩动力 |
| 依赖 | Q0、F1 完成;先把 0.95 跨年衰减确定为上游预处理或 computeLegacyPoints 内部规则,并用测试固定唯一语义 |
| 文件边界 | 数据:src/data/endgame/**、必要的 playthrough 类型;逻辑:src/utils/endgame/** 与存档桥;UI:src/components/endgame/** / EndgamePanel.tsx;不得重写 R14 锚点和既有曲线 |
| 工量 | M |
| 验收 | 0.3 继承率、1.0/0.8/0.6/0.4 曲线、0.95 处理顺序各只有一个真值;结算可写回并可重放;封顶提示无开发者字段;存档兼容测试通过 |
| 非目标 | 不做全量旧存档迁移、不改 GlobalProfile 之外的无关 schema、不接 WebRTC |
| 风险 / 回退 | 双重衰减或重复写回;以纯函数测试 + 幂等键保护,回退 UI 与调用桥时保留 R14 纯函数/常量 |
D1 · 角色深度 UI
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 玩家可扫描员工 health/stamina/mood/stress/loyalty,提前做排班与资源决策 |
| 依赖 | Q0 通过;员工五维运行时契约稳定;不等待 owner review 回复 |
| 文件边界 | 数据:src/data/staff/** 静态显示配置;逻辑:src/utils/staff/** 或既有 staffDepth.ts;UI:src/components/StaffTabs.tsx 及新建 src/components/staff/**,避免把计算塞进组件 |
| 工量 | M |
| 验收 | 五维状态、风险级别和建议动作可从逻辑层派生;桌面/移动布局不溢出;内部 ID 不进玩家文案;build/lint 与组件回归通过 |
| 非目标 | 不新增员工数值维度、不重平衡恢复速度、不扩关系剧情 |
| 风险 / 回退 | 信息密度过高;用可折叠分组和既有 Staff tab 入口,回退新组件挂载即可恢复原视图 |
6. P2 lane 包
K1 · 内容池扩展
| 字段 | 内容 |
| :--- | :--- |
| 用户价值 | 降低重复事件感,为角色深度和失败链提供更多可见变化 |
| 依赖 | Q0 与 D1 稳定;先以内容缺口统计确定增量,不用“全部翻倍”替代验收 |
| 文件边界 | 每次只锁一个数据域:src/data/storyEvents/**、src/data/events/**、src/data/buffs/**、成就/终局对应数据目录;查询与派生进入 src/utils/<domain>/**;UI 只消费既有接口 |
| 工量 | L,按内容域拆小 lane |
| 验收 | 每域有唯一 ID、触发可达性、重复率/权重检查和玩家文案检查;新增内容有回归,build/lint 通过 |
| 非目标 | 不在一个 lane 同时扩剧情、Buff、成就和终局;不改底层状态机;不堆不可达静态数据 |
| 风险 / 回退 | 内容量增加但不可触发或破坏权重;按域维护清单与权重快照,单域可独立回退 |
N1 · WebRTC 与跨设备同步
| 字段 | 内容 |
| :-- | :-- |
| 用户价值 | 房主与帮工能在真实设备上共享房间状态和竞拍过程,而非仅本地模拟 |
| 依赖 | Q0、联机骨架 doc-sync、本地 R7/R8/R10 状态机稳定;先完成 DataChannel 传输,再做跨设备持久同步 |
| 文件边界 | 数据:src/data/multiplayer/** 消息 schema/type;逻辑:src/utils/multiplayer/** transport/authority/reconnect;UI:src/components/multiplayer-lobby/** 连接状态;不得让 transport 反向污染 auction 域 |
| 工量 | XL,至少拆 transport 与 cross-device 两个串行 lane |
| 验收 | 双浏览器/双设备建连;房主权威、出价顺序、反狙击、断线重连和 host transfer 可复现;消息 schema 校验;兼容性矩阵与失败回退通过 |
| 非目标 | 不同时做聊天、表情包、弹幕、服务端账号或反作弊平台 |
| 风险/回退 | NAT/浏览器兼容、乱序、重复消息、脑裂;保留本地单机状态机作为 fallback,transport 可整体关闭而不破坏经营存档 |
L1 · 启动页 v1.3 按钮接入
| 字段 | 内容 |
| :-- | :-- |
| 用户价值 | 启动页对外入口(排行榜/百科/公告)从「仅切 active」变成真实可点;底部社区支持从 Discord 迁移到微信群,顶部支持我们接微信收款码,贴合项目目标用户群体 |
| 依赖 | Q0 通过(App.tsx 锁释放)+ landing 文件锁空闲;不与 F1/X1/D1/K1/N1 串行;5 个 Open Questions 必须 P1 拍板后才能起实施切片 |
| 文件边界 | 数据:src/data/landing/externalContent.ts(新)+ 现有 data/landing/config.ts 字段微调
逻辑:src/utils/landing/externalContentLogic.ts(新)
UI:src/components/landing/** 5 个现有文件微改 + 新建 src/components/landing/modals/** 子目录(5 真 + 2 占位 = 7 个 modal)
资源:public/assets/external/wechat-{group,donate}-qr.png(2 张图,7 天滚动维护) |
| 工量 | S-M,~4.5h 单人,可拆 2-3 个 S 子 lane(资源落地 → 数据/逻辑 → UI modal) |
| 验收 | 8 个按钮按 v1.3 拍板全部接通(P0 5 个 + P1 2 个占位 + 移除 2 个);2 张微信图就位;5 个 Open Questions 解决;build/lint/test 通过;微信群二维码 7 天滚动维护机制建立;玩家文案不暴露内部 ID/开发者字段 |
| 非目标 | 不重做启动页视觉(沿用 v1.2 Tavern Ink & Gold);不进存档 schema;不做跨设备同步;不接真实后端(排行榜/百科/公告 v1.3 走单设备 localStorage 或静态 Markdown/JSON);烛火音乐真实音频 / 法律 3 个 modal / 语言 i18n 全部 Hold |
| 风险/回退 | 排行榜数据源/百科内容/新闻公告存储/微信群过期机制 = 5 个 Open Questions;P1 不拍则不开 L1;回退点:仅回退 landing/ 改动 + 还原 FOOTER_CONTENT.community 数组,不动其他域 |
| 需求契约 | docs/design/active/启动页v1.3按钮需求-v1.md(v1.0,2026-07-13 17:58 P1 拍板) |
7. 文件锁与验收硬门
7.1 文件锁
src/App.tsx:R10 follow-up 与 Q-Runtime 不得并发写;完成方释放后另一方接力。src/data/buffs/**:质量恢复结束前,内容池不得进入 Buff 数据域。src/data/auction/**+src/utils/auctionRules.ts:只允许 auction 契约 lane 持有。src/data/endgame/**+src/utils/endgame/**:F1 与 X1 串行,避免阈值/折算契约互相覆盖。src/components/endgame/**:F1 UI 完成并释放后,X1 UI 接力。src/data/multiplayer/**+src/utils/multiplayer/**:N1 内部按 transport → sync 串行。src/components/landing/**+src/data/landing/**+src/utils/landing/**:L1 持有,与 F1/X1/D1/K1/N1 不交叉(landing 域独立),但跟 Q-Runtime(Q3-A 锁 App.tsx 时期)不并发;资源public/assets/external/**由 P1 手动维护,7 天滚动。
7.2 保留的硬门
cmd /c npm run lint达到目标且无新增错误。cmd /c npm run build通过。- 领域定向测试 +
cmd /c npm run test:w2939/39 通过。 - 三层架构、相对 import、玩家文案边界通过审查。
- 运行时任务具备实际 smoke/browser 证据;缺证据必须如实标
partial。 - targeted
git diff --check通过,且不回退无关 dirty-tree 变更。
8. owner review 模板(所有后续需求共用)
- owner review: pending / approved / changes_requested
- checklist:<玩家路径、视觉、文案、数值待确认项>
- evidence:<截图、测试、build、实际路径>
- recommended default:<当前可继续实现的默认值>
- rollback:<最小回退文件/常量/挂载点>
- follow-up:<changes_requested 时新开的小范围修正项>
pending 不改变工程 lane 的完成证据;changes_requested 只生成有界 follow-up,不回滚已经验证且与变更无关的工作。
9. 路线图完成判定
- P0 可直接拆成 W29 文档收口与 4 个质量领域 lane。
- P1/P2 每项均有用户价值、依赖、文件边界、工量、验收、非目标、风险与回退。
- R13 二段不重复排工,R10 不伪造 verified。
- 所有调度顺序只依赖完成证据和文件锁,不依赖日期、callback 或 P1 回复。
- build/tests/架构/证据门仍是硬门。