bindbox-game/.trae/documents/一番赏活动创建表单逻辑优化计划.md
邹方成 45815bfb7d chore: 清理无用文件与优化代码结构
refactor(utils): 修复密码哈希比较逻辑错误
feat(user): 新增按状态筛选优惠券接口
docs: 添加虚拟发货与任务中心相关文档
fix(wechat): 修正Code2Session上下文传递问题
test: 补充订单折扣与积分转换测试用例
build: 更新配置文件与构建脚本
style: 清理多余的空行与注释
2025-12-18 17:35:55 +08:00

55 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 一番赏活动创建表单优化计划
用户反馈在创建一番赏活动时,选择即时/定时开奖的页面逻辑不对。通过分析代码 `web/admin/src/views/activity/wizard/index.vue`发现目前表单的逻辑允许用户在“一番赏”模式下选择“定时开奖”或“即时开奖”但某些字段的显示逻辑可能不够清晰或存在冲突。一番赏Ichiban Kuji通常有其特定的开奖规则需要对表单进行以下优化。
## 1. 需求分析与对齐 (Align)
* **当前问题**:
* 在选择 `play_type='ichiban'` 时,表单依然展示通用的 `draw_mode`(定时/即时)选项,且后续的定时参数(如 `min_participants`, `scheduled_time` 等)可能没有正确联动。
* 一番赏的核心逻辑是“即买即开”(即时开奖),但也可能存在“定时开奖”的特殊玩法(如凑够多少人开一箱)。需要明确一番赏是否支持所有开奖模式。
* **假设**: 用户提到的“逻辑不对”可能是指一番赏**只能**是即时开奖,或者一番赏的定时开奖不应该显示某些不相关的字段(如 `min_participants` 在一番赏中可能不适用,因为一番赏是消耗库存的)。
* **修正策略**:
* 当选择“一番赏”时,默认锁定或限制 `draw_mode` 的选项。
* 如果是“一番赏”,通常是**即时开奖**(用户购买后立即知道结果)。
* 如果一番赏确实支持定时(例如:全员购买完后统一开奖),则需要明确字段。
* **根据用户语境“即时 定时的 页面逻辑不对”**,推测可能是:切换一番赏时,应该自动处理 `draw_mode`,或者某些字段不该显示。
* **优化方案**:
1. **联动逻辑**: 当 `play_type` 切换为 `ichiban` 时,强制或默认 `draw_mode``instant`(即时开奖),并禁用 `scheduled`(除非业务明确支持一番赏定时)。
2. **或者**:如果一番赏支持定时,需要隐藏不适用的字段(如 `min_participants`,因为一番赏是固定库存,可能不需要“最低参与人数”,而是“售罄即开”或“固定时间”)。
3. **UI 调整**: 简化一番赏模式下的表单,隐藏不必要的复杂定时配置。
**经确认(自我推演)**: 一番赏的典型玩法是用户购买后立即获得确定的赏品(即时)。但也存在“整箱全开”的定时玩法。但最常见的问题是:**一番赏不应该显示“最低参与人数”等凑单逻辑,因为它基于固定数量的签**。
**决定**:
*`play_type === 'ichiban'` 时:
* **锁定** `draw_mode``instant`(即时开奖),并**隐藏**开奖模式选择框(或禁用)。
* **隐藏**所有定时相关的配置(`min_participants`, `time_mode`, `interval_minutes` 等)。
* 这样能避免用户配置出“定时开奖的一番赏”这种非典型且可能逻辑冲突的活动(除非后端明确支持)。
## 2. 架构设计 (Architect)
* **前端逻辑调整 (`wizard/index.vue`)**:
* 监听 `scheduledForm.play_type` 的变化。
* 如果 `play_type === 'ichiban'`
* 自动设置 `scheduledForm.draw_mode = 'instant'`
* `scheduledForm.min_participants = 0`
* `scheduledForm.interval_minutes = 0`
* 在模板中,使用 `v-if` 控制字段显示:
* 如果 `play_type === 'ichiban'`,隐藏 `draw_mode` 选择框(或者显示为只读的“即时开奖”)。
* 隐藏所有 `scheduled` 相关的输入框。
## 3. 任务拆解 (Atomize)
1. **Modify Frontend (`wizard/index.vue`)**:
* 添加 `watch` 监听 `scheduledForm.play_type`
* 修改模板中的 `v-if` 条件,针对 `ichiban` 隐藏不必要的字段。
* 或者直接在 `play_type` 选择器下方添加提示:“一番赏模式下默认为即时开奖”。
## 4. 执行步骤 (Automate)
1. **Step 1**: 修改 `web/admin/src/views/activity/wizard/index.vue`
*`script setup` 中添加 `watch` 逻辑。
* 调整 `template` 中的表单项可见性。