工单 #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)
92 lines
5.6 KiB
Markdown
92 lines
5.6 KiB
Markdown
# 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.ts` trackBeacon(~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 / expiresAt
|
||
- `BeaconTimedProgress` 接口:slotKey / progress / startedAt / completedAt / claimed / durationSec
|
||
- `TIMED_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`:日/限时/周三类进度同时更新
|
||
- 新增 `claimTimedBeacon` action(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 / prism
|
||
- `TideModifiers` 新增 3 个可选字段:targetLenBonus / bossWinRateBonus / autoDecodeIntervalMult
|
||
- `TIDE_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 验证
|
||
1. **lint**:`bun run lint` 零错误(exit 0)
|
||
2. **dev 服务器**:HTTP 200,编译 < 30ms
|
||
3. **BeaconPanel VLM 评分**:
|
||
- 首屏 8.5/10:限时挑战 TIMED 区块可见、四色一致、倒计时/进度/标题/奖励/按钮清晰
|
||
- 最终截图 9/10:4 个挑战区块齐全、限时区块带倒计时、无蓝色
|
||
4. **新星潮 VLM 评分**(localStorage 注入 + reload 触发):
|
||
- surge(emerald 绿):8/10,横幅 + 全屏绿色微光
|
||
- prism(fuchsia 紫):7/10,横幅 + 全屏紫色微光
|
||
- eclipse(rose 粉):8/10(单图),横幅 + 全屏粉色微光
|
||
5. **不破坏现有功能**:日挑战/周挑战/信标链/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 旧星潮全部保留,无回归
|