v0.8.1: 探险平衡 + 信标系统扩展(周挑战 + 信标链)
P1-a 探险 BOSS 胜率平衡 + 能量恢复(expedition.ts + config.ts + gameStore.ts + ExpeditionPanel.tsx): - combatWinRate: scale 8→4, floor 0.25→0.35(基础力10对BOSS胜率 25%→35-45%) - BOSS 难度 5-7→3-5(配合新公式基础胜率达 45-55%) - computeEnergyRegenInterval(state): 动态恢复间隔 - exp_2 解锁 -30%, exp_3 解锁 -20%, 探索力属性 -最高30% - 下限 12s(原固定 45s) - computeEnergyRegen 接受 intervalSec 参数 - gameStore tick 传入动态间隔 - config.ts: exp_2/exp_3 描述加'能量恢复 +30%/+20%' - ExpeditionPanel: 显示实际恢复速度 + '已加速'标记 P1-b 信标系统扩展(beacon.ts + BeaconPanel.tsx + gameStore.ts)[subagent 9-b]: - 周挑战: getWeekKey ISO 8601 + FNV-1a 种子确定性生成 - 难度强制 anomaly 60%/singular 40%, goal 日挑战×3-5倍 - 完整进度/领奖/排行榜推送(isWeekly标记) - 信标链: 4里程碑(3/7/14/30天) + grace续命机制(每链1次) - recordChainCompletion 核心断链/续命逻辑 - 奖励 50→680洞见递增 - BeaconPanel: 周挑战fuchsia主题 + 信标链amber→rose渐变里程碑节点 - gameStore: trackBeacon升级 + claimWeeklyBeacon/claimChainReward actions - VLM 8/10, lint零错误, 5场景bun测试全PASS
This commit is contained in:
+74
@@ -337,3 +337,77 @@ Stage Summary:
|
||||
- ✅ VLM 评分:主界面 7/10 + 巡航READY 8/10 + 巡航游戏 8/10
|
||||
- 在线游玩 v0.8:https://gitea-pages.atdunbg.xyz/Super_Z/echo-nexus/
|
||||
- 下一阶段工单:P1 探险BOSS胜率平衡 + 探险能量恢复 / 信标系统扩展(周挑战/信标链)
|
||||
|
||||
---
|
||||
Task ID: 9-b
|
||||
Agent: full-stack-developer
|
||||
Task: 信标系统扩展(周挑战 + 信标链连续奖励)
|
||||
|
||||
Work Log:
|
||||
- 阅读现有 `src/lib/game/beacon.ts`(v0.5 每日挑战 + 本地排行榜,358 行)+ `src/components/game/BeaconPanel.tsx` + `src/store/gameStore.ts` 的 `trackBeacon` 函数(约第 173 行)+ worklog v0.8 项目状态,确认四色全息规范与现有架构。
|
||||
- **扩展 `src/lib/game/beacon.ts`(358 → 873 行,新增 ~515 行)**:
|
||||
- **周挑战(WEEKLY CHALLENGE)**:
|
||||
- `BeaconWeeklyChallenge` 接口(weekKey YYYY-Www / type / difficulty 强制 anomaly|singular / goal / rewardInsight / rewardContact / seed / title / desc)
|
||||
- `BeaconWeeklyProgress` 接口(weekKey / progress / startedAt / completedAt / claimed / durationSec)
|
||||
- `getWeekKey(now)`:ISO 8601 周键(周一为起点,含首个周四的周为第一周)
|
||||
- `weekKeyToSeed`:FNV-1a 哈希
|
||||
- `generateWeeklyChallenge(now)`:基于 weekKey 种子确定性生成,难度加权 anomaly 60% / singular 40%,goal 为日基准 ×3-5 倍(decode 18-75 / expedition 3-15 / pulse 60-245 / boss 3-12 / insight 120-595)
|
||||
- `loadWeeklyProgress` / `saveWeeklyProgress` / `addWeeklyProgress` / `claimWeeklyReward`(推送排行榜,entry 加 `isWeekly: true`)
|
||||
- `msUntilNextWeek(now)`:距离下周一 UTC 0 点的毫秒数
|
||||
- `BEACON_WEEKLY_KEY = "echo-nexus-beacon-weekly-v1"`
|
||||
- **信标链(BEACON CHAIN)**:
|
||||
- `BeaconChainState` 接口(lastCompletedDateKey / currentStreak / longestStreak / totalCompletions / graceUsed / milestonesClaimed)
|
||||
- `BEACON_CHAIN_KEY = "echo-nexus-beacon-chain-v1"`
|
||||
- `BEACON_CHAIN_MILESTONES = [3, 7, 14, 30]` 常量
|
||||
- `BEACON_CHAIN_REWARDS`:4 个里程碑(三日谐振 +50/+5 / 七日回响 +120/+12 / 半月星潮 +280/+28 / 满月飞升 +680/+68)
|
||||
- `loadChainState` / `saveChainState`(每次返回新对象避免引用共享)
|
||||
- `recordChainCompletion(dateKey)` 核心逻辑:同日重复忽略;次日 streak++;隔一天 miss 且 graceUsed<1 时续命 streak++ graceUsed++;其他断链 streak=1 graceUsed=0;返回 `{ state, newMilestones }`
|
||||
- `claimChainMilestone(milestone)` / `getNextMilestone(streak)` / `getChainProgress(streak)`(返回 current/next/prev/progressPct 用于 UI)
|
||||
- `dateKeyToTimestamp` / `dateKeyDiffDays` 工具函数
|
||||
- `BeaconScoreEntry` 新增可选 `isWeekly?: boolean` 字段
|
||||
- **扩展 `src/store/gameStore.ts`**:
|
||||
- import 扩展:generateWeeklyChallenge / loadWeeklyProgress / loadChainState / addWeeklyProgress / recordChainCompletion / claimWeeklyReward / claimChainMilestone / getTodayKey + 类型
|
||||
- `trackBeacon(type, delta)` 函数签名从 `boolean` 改为 `{ dailyJustCompleted, weeklyJustCompleted, newChainMilestones }`:
|
||||
- 日挑战类型匹配且未完成 → addBeaconProgress;若刚完成 → recordChainCompletion(getTodayKey()) 收集 newMilestones
|
||||
- 周挑战类型匹配且未完成 → addWeeklyProgress
|
||||
- 所有调用点(pulse/clickNode/autoDecodeTick/resolveCurrentNode 等 7 处)原本就忽略返回值,向后兼容
|
||||
- 新增 action `claimWeeklyBeacon`:调用 claimWeeklyReward → 发放 insights + contact 到 state,返回 `{ rewardInsight, rewardContact, score }`
|
||||
- 新增 action `claimChainReward(milestone)`:前置校验 currentStreak 与 milestonesClaimed,调用 claimChainMilestone → 发放奖励,返回 `{ rewardInsight, rewardContact, label, ok }`
|
||||
- GameActions 接口同步新增两个 action 签名
|
||||
- **重写 `src/components/game/BeaconPanel.tsx`(301 → 638 行)**:
|
||||
- 顶部头部 + 每日挑战卡片(保留 v0.5 完整功能 + 按钮主题色随难度色淡显)
|
||||
- **新增周挑战区块**(fuchsia 主题):标题"周挑战 · WEEKLY" + weekKey + 倒计时 + 挑战卡片(类型/难度标签/标题/描述/进度条/奖励/领取按钮 emerald 主题)+ weekly-glow 动画
|
||||
- **新增信标链区块**(amber→rose 渐变):标题"信标链 · CHAIN" + 大字号 streak(chain-streak-text 渐变流动动画)+ 今日完成状态徽章 + 4 个里程碑节点(w-12 h-12 圆形,claimed=emerald/✓,reachable=rose 脉冲动画+领取按钮,inProgress=amber 半亮,未到达=muted 灰)+ 节点间连线(背景灰 + 已达成部分 amber→rose 渐变 + 辉光,基于 prev→next 插值定位)+ 进度条 + 底部统计(最长/累计/续命状态)
|
||||
- 桌面端 lg:grid-cols-2 让周挑战+信标链并排,移动端单列
|
||||
- 排行榜条目区分日/周:周挑战 entry 显示 "WEEK" 徽章 + fuchsia 高亮背景
|
||||
- 空状态提示扩展为"完成今日或本周信标即可登榜"
|
||||
- 4 个新动画:weekly-glow / chain-milestone-pulse / chain-streak-flux(背景渐变流动)
|
||||
- **QA 验证**:
|
||||
- `bun run lint` 零错误(每次修改后均验证)
|
||||
- dev.log 全程无错误,所有编译 < 300ms
|
||||
- **信标链逻辑测试**(bun 直接运行 TS,5 个场景全 PASS):
|
||||
1. 昨日 streak=1 → 今日完成 → streak=2 ✅
|
||||
2. 同日重复完成 → 忽略 ✅
|
||||
3. 明日完成 → streak=3,无需 grace ✅
|
||||
4. 隔一天 miss(lastCompleted + 2 天)→ streak=4,graceUsed=1 ✅
|
||||
5. 再次 miss(grace 已用)→ 断链 streak=1,graceUsed=0 ✅
|
||||
- **UI 集成测试**(agent-browser):
|
||||
- localStorage 模拟设置 chain state(lastCompletedDateKey=yesterday, currentStreak=1)→ reload → UI 正确显示 streak=1
|
||||
- 设置 streak=3 + milestonesClaimed=[] → milestone 3 节点显示 rose 脉冲动画 + "领取"按钮
|
||||
- 点击"领取"→ milestonesClaimed=[3] + Toast "✦ 三日谐振 已领取 +50 洞见 · +5.0 接触" + 按钮消失 ✅
|
||||
- **VLM 视觉评分**(目标 ≥7/10):
|
||||
- 首屏截图:8/10(四色一致、布局合理、信标链清晰)
|
||||
- 里程碑可领取状态:8/10(amber→rose 渐变醒目、里程碑层次分明、fuchsia 主题清晰)
|
||||
- 重置后干净状态:8/10(WEEKLY 字体对比度可优化,但整体可读性强)
|
||||
- **不破坏现有功能**:日挑战进度/领奖/排行榜流程全部保留并工作正常
|
||||
|
||||
Stage Summary:
|
||||
- ✅ beacon.ts 扩展完成(358 → 873 行):周挑战 + 信标链全部函数与类型
|
||||
- ✅ gameStore.ts 集成完成:trackBeacon 升级为对象返回值 + claimWeeklyBeacon + claimChainReward 两个新 action
|
||||
- ✅ BeaconPanel.tsx UI 完整重写(301 → 638 行):周挑战 fuchsia 卡片 + 信标链 amber→rose 渐变区块
|
||||
- ✅ 严格四色全息:周挑战 fuchsia、信标链 amber→rose、领取按钮 emerald、无蓝/紫色违规
|
||||
- ✅ localStorage 新增 2 个独立 key(weekly + chain),不污染旧 key
|
||||
- ✅ 确定性:周挑战同周同种子同结果(weekKey FNV-1a 种子)
|
||||
- ✅ 信标链 grace 续命机制工作正常(5 个场景 bun 测试全 PASS)
|
||||
- ✅ lint 零错误 + dev HTTP 200 + VLM 8/10
|
||||
- ✅ 现有日挑战 + 排行榜 + 领奖流程全部保留,无回归
|
||||
|
||||
Reference in New Issue
Block a user