工单 #8 编年史上限+分页: - engine.ts: slice(-50)→slice(-200) - ChronicleDialog.tsx: 加分页(每页10条)+上一页/下一页+页码显示 工单 #5 限时挑战 (subagent 10-a): - beacon.ts: BeaconTimedChallenge + getTimedSlotKey(4h时段) + generateTimedChallenge - BeaconPanel.tsx: amber主题限时区块 + 倒计时 + <30min紧急状态 - gameStore: trackBeacon 加 timedJustCompleted + claimTimedBeacon action 工单 #3 星潮类型深化 (subagent 10-a): - starTide.ts: +3种星潮 surge(emerald)/eclipse(rose)/prism(fuchsia) - TideModifiers: +targetLenBonus/bossWinRateBonus/autoDecodeIntervalMult - decode.ts: generatePuzzle 加 targetLenBonus 参数 - achievements: ach_tides_all 阈值 6→9 工单 #4/P2 云排行榜 (subagent 10-b): - mini-services/leaderboard-service/ (端口3030, Hono+bun, 内存1000条) - API: GET/POST /api/leaderboard + /stats + CORS + 防刷 - beacon.ts: fetchCloudLeaderboard/submitCloudScore - BeaconPanel: 本地Top20/全球Top100 双tab + YOU徽章高亮 工单 #9 手写叙事 (subagent 10-c): - chronicle.ts: EPOCH_LORE 5纪元×3节点=15段手写叙事(80-150字/段) - buildLore 优先手写节点, fallback 模板, 11个变量替换 P3 socket 多人星潮 (subagent 10-c): - mini-services/star-tide-service/ (端口3031, socket.io) - 每10-15min广播global-tide, 60s持续, 6种类型权重 - useGlobalTide hook + triggerGlobalTide action - StarTideIndicator 加 🌐 全球星潮标记 P2 UI打磨: - page.tsx: CrystalOrb 区加装饰全息环(3层旋转) + 四角标记 + 顶部状态条 + 底部铭文 QA: lint零错误 + dev HTTP200 + VLM 8/10 + 2个mini-service运行中(3030/3031)
5.6 KiB
5.6 KiB
Task ID: 10-a — 限时挑战 + 星潮类型深化
Agent: full-stack-developer Task: 工单 #5 限时挑战 + 工单 #3 星潮类型深化
Work Log
前置准备
- 阅读
worklog.md了解 v0.8.1 项目状态(10 大系统,四色全息 emerald/rose/amber/fuchsia) - 精读
beacon.ts(873 行,日挑战+周挑战+信标链)、BeaconPanel.tsx(753 行)、starTide.ts(209 行,6 种星潮)、gameStore.tstrackBeacon(~170 行)+ tickTide(~440 行) - 确认现有 UI 均动态读取
TIDE_EVENTS[type],新增类型自动生效
工单 #5:限时挑战(Timed Challenge)
beacon.ts 扩展(873 → 1162 行,+289 行):
BeaconScoreEntry新增isTimed?: boolean字段BeaconTimedChallenge接口:slotKey / type / difficulty(固定 routine) / goal / rewardInsight / rewardContact / seed / title / desc / expiresAtBeaconTimedProgress接口:slotKey / progress / startedAt / completedAt / claimed / durationSecTIMED_SLOT_MS = 4h,BEACON_TIMED_KEY = "echo-nexus-beacon-timed-v1"getTimedSlotKey(now):UTC 0/4/8/12/16/20 点切分,格式 "timed_YYYY-MM-DD_HH"timedSlotKeyToSeed:FNV-1a 哈希generateTimedChallenge(now):确定性生成,难度 routine,goal = 日基准 ×0.3-0.5,5 种类型各有公式msUntilNextTimedSlot(now):距离下个 4 小时时段的毫秒数loadTimedProgress/saveTimedProgress/addTimedProgress/claimTimedReward(推送排行榜,entry 加 isTimed: true)
gameStore.ts 集成:
- import 扩展:generateTimedChallenge / loadTimedProgress / addTimedProgress / claimTimedReward + 类型
trackBeacon返回值新增timedJustCompleted:日/限时/周三类进度同时更新- 新增
claimTimedBeaconaction(GameActions 接口同步) - 新增
timedJustCompleted到 trackBeacon 返回类型
BeaconPanel.tsx UI(753 → 944 行):
- import 扩展:generateTimedChallenge / loadTimedProgress / getTimedSlotKey / msUntilNextTimedSlot / Hourglass 图标
- 新增 timedChallenge/timedProgress/timedCountdown state
- 每秒刷新 timedProgress + timedCountdown
- 新增 handleClaimTimed 回调
- 限时挑战区块(amber 主题,插入日挑战与周挑战之间):
- Hourglass 图标 + "限时挑战 · TIMED" 标题 + slotKey + 倒计时
- 难度/类型标签 + 标题 + 描述 + 进度条 + 奖励 + 领取按钮(emerald 主题)
- 紧急状态:距时段结束 <30min 时切换 rose 脉冲动画 + "即将结束"徽章
- 2 个新动画:timed-glow(amber 呼吸)/ timed-urgent(rose 急促脉冲)
- 排行榜 entry 区分 TIMED(amber 徽章)/ WEEK(fuchsia 徽章)
- 空状态提示更新为"完成限时、每日或本周信标即可登榜"
工单 #3:星潮类型深化
starTide.ts 扩展(209 → 289 行):
TideType新增 3 种:surge / eclipse / prismTideModifiers新增 3 个可选字段:targetLenBonus / bossWinRateBonus / autoDecodeIntervalMultTIDE_EVENTS新增 3 种元信息(name/desc/color/glow/icon/negative):- surge(涌动星潮,emerald #34d399,⇈):产能 ×2.5 但解码目标 +2
- eclipse(蚀相星潮,rose #fb7185,◐):BOSS 胜率 +20% 但产能 -30%
- prism(棱镜星潮,fuchsia #e879f9,◬):洞见 ×2 + 自动解码周期 -30%
TIDE_WEIGHTS新增 surge/eclipse/prism 各 12(总权重 136)getTideModifiers新增 3 个 case + null 分支补全新字段- 注释更新:"6 种类型" → "9 种类型"
decode.ts 扩展:
generatePuzzle新增第 3 参数targetLenBonus(默认 0)- targetLen = cfg.targetLen + targetLenBonus,stepLimitBase 同步增加
- 路径构造法自动适配更长目标序列(300 次尝试 + 线性兜底)
gameStore.ts 集成(3 处修饰器应用):
startDecode:surge 星潮时传入tideMod.targetLenBonus→ 谜题更长autoDecodeTick:prism 星潮时interval *= tideMod.autoDecodeIntervalMult(×0.7)resolveCurrentNode:eclipse 星潮时b = am.bossWinRateBonus + tideMod.bossWinRateBonus(+20%)
achievements.ts:ach_tides_all 阈值 6 → 9,描述"经历全部 9 种星潮事件"
page.tsx:StatsPanel "星潮亲历" 显示 / 9
QA 验证
- lint:
bun run lint零错误(exit 0) - dev 服务器:HTTP 200,编译 < 30ms
- BeaconPanel VLM 评分:
- 首屏 8.5/10:限时挑战 TIMED 区块可见、四色一致、倒计时/进度/标题/奖励/按钮清晰
- 最终截图 9/10:4 个挑战区块齐全、限时区块带倒计时、无蓝色
- 新星潮 VLM 评分(localStorage 注入 + reload 触发):
- surge(emerald 绿):8/10,横幅 + 全屏绿色微光
- prism(fuchsia 紫):7/10,横幅 + 全屏紫色微光
- eclipse(rose 粉):8/10(单图),横幅 + 全屏粉色微光
- 不破坏现有功能:日挑战/周挑战/信标链/6 旧星潮全部保留,排行榜正常
Stage Summary
- ✅ 工单 #5 限时挑战完成:beacon.ts +289 行 + gameStore claimTimedBeacon + BeaconPanel amber 区块
- ✅ 工单 #3 星潮深化完成:starTide.ts +80 行(3 新类型)+ decode.ts targetLenBonus + gameStore 3 处修饰器
- ✅ 确定性生成:限时挑战同时段同种子同结果(FNV-1a slotKey 哈希)
- ✅ 严格四色规范:限时 amber、surge emerald、eclipse rose、prism fuchsia,零蓝色/靛色
- ✅ 紧急状态设计:限时挑战 <30min 时 rose 脉冲 + "即将结束"徽章
- ✅ lint 零错误 + dev HTTP 200 + VLM ≥7/10(信标 9/10、surge 8/10、prism 7/10、eclipse 8/10)
- ✅ 现有日/周/信标链/6 旧星潮全部保留,无回归