bindbox-game/.trae/documents/双倍概率效果详解与作用范围简化方案.md
邹方成 8141a47690
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(称号系统): 新增称号管理功能与抽奖效果集成
- 新增系统称号模板与效果配置表及相关CRUD接口
- 实现用户称号分配与抽奖效果应用逻辑
- 优化抽奖接口支持用户ID参数以应用称号效果
- 新增称号管理前端页面与分配功能
- 修复Windows时区错误与JSON字段初始化问题
- 移除无用管理接口代码并更新文档说明
2025-11-16 11:37:40 +08:00

46 lines
3.7 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.

## 字段与行为详解(以 effect_type=6 双倍概率为例)
- 目标IDtarget_prize_ids
- 含义:指定哪些奖品可触发双倍;为空数组表示对所有奖品生效。
- 应用代码:合并目标集 `doubleTargets`internal/service/activity/draw_with_effects.go:143-145
- 概率chance_x1000
- 含义双倍触发的概率千分制1000=100%、200=20%)。多个效果的概率会累加,并受统一封顶限制。
- 应用代码:累加并按 `CapValueX1000` 统一封顶internal/service/activity/draw_with_effects.go:146-149最终判定199-207
- 周期内次数上限period_cap_times
- 业务含义一个统计周期内最多能触发几次双倍例如自然日内最多1次
- 当前实现字段已解析internal/service/activity/draw_with_effects.go:137但暂未做持久化计数与强制限制建议后续以“用户+周期”维度计数DB/Redis命中后递减或阻断。
- 叠加策略stacking_strategy
- 业务含义多效果如何合并0最大值/1累加封顶/2首个匹配
- 当前实现对“概率加成type=5”生效internal/service/activity/draw_with_effects.go:117-132对“双倍概率type=6”未使用合并逻辑仅累加+封顶)。
- 统一封顶cap_value_x1000
- 含义:对累计概率(或加成)的统一上限(单位:千分)。
- 应用代码双倍概率封顶internal/service/activity/draw_with_effects.go:147-149概率加成默认分支封顶127-131
- 包含期issue_ids/排除期exclude.issue_ids
- 含义:限定效果只在指定期生效,或在某些期不生效。
- 应用代码抽奖路径按期过滤internal/service/activity/draw_with_effects.go:85-103更全面的范围匹配在效果解析器internal/service/title/effects_resolver.go:133-155
- 包含活动activity_ids
- 含义:限定效果只在指定活动生效。
- 应用代码效果解析器支持internal/service/title/effects_resolver.go:60-69, 133-155抽奖路径当前只按期(issue)做简化过滤。
- 排序sort
- 含义:效果的展示与应用顺序;不同策略可能受顺序影响(如取最大值时先后无影响,叠加时顺序影响可忽略)。
- 应用代码:读取效果按 `Sort` 排序internal/api/admin/titles_admin.go:163internal/service/activity/draw_with_effects.go:47-49
## 作用范围简化(仅“活动”和“期”)
- 目标:将前端“作用范围”精简为:
- 包含活动 `activity_ids`
- 包含期 `issue_ids`
- 排除期 `exclude.issue_ids`(可选)
- 不再展示/保存分类category_ids、时间/地区等复杂范围。
## 实施步骤(前端改造)
1. 效果编辑对话框EffectEditDialog.vue
- 保留 effect_type=6 的参数:`target_prize_ids/chance_x1000/period_cap_times`
- 精简作用范围面板,仅保留:`activity_ids``issue_ids``exclude.issue_ids`
- 提交时 `scopes_json` 只包含上述三个字段。
2. 效果列表EffectManagerDialog.vue
- 参数展示映射只显示:目标奖品、概率、周期上限;范围只显示包含/排除期与活动。
3. 文档更新
- 在《说明文档.md》中标注“作用范围简化”并更新字段速查表。
## 注意与后续
- 周期计数未实现:若您需要严格的“周期内次数上限”,我将增加一次触发计数的服务(用户+周期维度),并在抽奖路径强制限制。
- 抽奖路径按期过滤:如需按活动过滤,请在抽奖服务中引入效果解析器返回的范围匹配结果,或将 `issue``activity` 进行绑定映射。