改为独立座驾模块

This commit is contained in:
pllx
2026-04-30 09:55:20 +08:00
parent 3c95478097
commit 181cc6a0b0
22 changed files with 886 additions and 216 deletions
@@ -1,31 +1,33 @@
---
name: chatroom-ride-development
description: "开发 /Users/pllx/Web/Herd/chatroom 的聊天室座驾。适用于新增 ride_<key> 座驾商品、全屏 Canvas 特效、座驾音效、后台配置、前台座驾页面和进房欢迎语。"
description: "开发 /Users/pllx/Web/Herd/chatroom 的聊天室座驾。适用于新增 ride_<key> 独立座驾、全屏 Canvas 特效、座驾音效、后台配置、前台座驾页面和进房欢迎语。"
---
# Chatroom Ride Development
## 适用场景
- 新增或修改聊天室座驾商品
- 新增或修改聊天室独立座驾。
- 新增 `resources/js/effects/<key>.js` 全屏座驾特效。
- 调整座驾购买、续期、替换、入场欢迎语或后台价格/天数配置。
- 排查座驾进房后特效不播放、欢迎语不显示、购买记录不正确的问题。
## 必须遵守
- 座驾商品类型固定为 `ride`,商品 slug 固定为 `ride_<effect_key>`
- 座驾必须使用独立 `rides``user_ride_purchases`,不要写入 `shop_items``user_purchases`
- 座驾 slug 固定为 `ride_<effect_key>`
- `<effect_key>` 必须同时出现在:
- `shop_items.slug`
- `ShopItem::rideKey()` 可解析结果
- `rides.slug`
- `rides.effect_key`
- `Ride::rideKey()` 可解析结果
- `EffectBroadcast::TYPES`
- `resources/js/effects/effect-manager.js`
- `resources/js/effects/effect-sounds.js`
- `resources/js/effects/<effect_key>.js`
- 新增座驾默认通过迁移或 Seeder 写入 `shop_items`,字段至少包含名称、slug、图标、价格、`duration_days`、排序和 `welcome_message`
- 新增座驾默认通过迁移或 Seeder 写入 `rides`,字段至少包含名称、slug、`effect_key`图标、价格、`duration_days`、排序和 `welcome_message`
- `welcome_message` 支持 `{name}``{ride}`,输出前必须转义,不能直接信任后台输入。
- 当前版本只允许用户同时拥有一个 active 座驾;同款续购叠加有效期,不同款替换旧座驾并把旧记录置为 `cancelled`
- 不要另建座驾购买表;购买记录继续使用 `user_purchases`
- 用户购买记录必须写入 `user_ride_purchases`,不要复用商店购买记录
## 新增座驾步骤
@@ -33,7 +35,7 @@ description: "开发 /Users/pllx/Web/Herd/chatroom 的聊天室座驾。适用
2. 在 `effect-manager.js` 注册模块加载和启动分支。
3. 在 `effect-sounds.js` 注册音效启动分支。
4. 在 `EffectBroadcast::TYPES` 加入 `<effect_key>`
5. 在迁移或 Seeder 中新增 `shop_items` 记录,slug 使用 `ride_<effect_key>`
5. 在迁移或 Seeder 中新增 `rides` 记录,slug 使用 `ride_<effect_key>``effect_key` 使用 `<effect_key>`
6. 若后台预览需要,把按钮加入管理菜单预览区。
7. 更新座驾相关 PHPUnit 测试,至少覆盖列表、购买、续期、替换和进房触发。