## 目标与范围
- 设计并梳理六类头衔效果：1领取优惠券、2抽奖折扣、3签到双倍积分、4领取道具卡、5概率加成、6奖励双倍。
- 输出参数规范、叠加与封顶策略、作用域策略，以及标准化新建流程（管理端接口与数据约束）。

## 效果类型与参数规范
- 1 领取优惠券：`template_id`(券模板ID)、`frequency.period`(day|week|month)、`frequency.times`(周期次数)。示例：`{"template_id":123,"frequency":{"period":"day","times":1}}`（种子示例 `internal/api/admin/titles_seed.go:31`）。
- 2 抽奖折扣：`discount_type`(percentage|fixed)、`value_x1000`(千分比或固定额)、`max_discount_x1000`(折扣封顶)。示例：`{"discount_type":"percentage","value_x1000":100,"max_discount_x1000":300}`（`internal/api/admin/titles_seed.go:32`）。
- 3 签到双倍积分：`multiplier_x1000`(如2000表示x2)、`daily_cap_points`(每日积分上限)。示例：`{"multiplier_x1000":2000,"daily_cap_points":3000}`（`internal/api/admin/titles_seed.go:33`）。
- 4 领取道具卡：`template_id`、`frequency.period/times`（同“领券”频控）。示例：`{"template_id":456,"frequency":{"period":"week","times":2}}`（`internal/api/admin/titles_seed.go:34`）。
- 5 概率加成：`target_prize_ids[]`(目标奖品ID)、`boost_x1000`(加成千分比)、`cap_x1000`(单项封顶，可选)。示例：`{"target_prize_ids":[1,2],"boost_x1000":100,"cap_x1000":300}`；应用参考 `internal/service/activity/draw_with_effects.go:104-131`。
- 6 奖励双倍：`target_prize_ids[]`、`chance_x1000`(命中概率千分比)、`period_cap_times`(期内命中上限，可选)。示例：`{"target_prize_ids":[3],"chance_x1000":150}`；命中判定参考 `internal/service/activity/draw_with_effects.go:197-208`。

## 叠加与封顶策略
- `StackingStrategy`：
  - `0` max_only：取效果最大值。
  - `1` sum_with_cap：累加并按封顶值限制（优先使用效果内的 `cap_x1000`，否则用 `CapValueX1000`）。
  - `2` first_match：首个命中后忽略后续。
  - 默认：累加并按 `CapValueX1000` 封顶（抽奖已实现 `internal/service/activity/draw_with_effects.go:117-131`、`internal/service/activity/draw_with_effects.go:146-149`）。
- 封顶单位统一为 `x1000` 千分比，避免浮点误差。

## 作用域策略（ScopesJSON）
- 字段：`activity_ids/issue_ids/category_ids` 与 `exclude` 子段；解析与匹配参考 `internal/service/title/effects_resolver.go:59-69`、`internal/service/title/effects_resolver.go:133-155`。
- 生效原则：先排除再包含；未配置视为全局生效。

## 新建流程（管理端）
- 步骤1：创建称号模板
  - `POST /api/admin/system_titles`（`internal/router/router.go:128`；处理 `internal/api/admin/titles_admin.go:81-103`）。
  - 请求体：`name/description/status/obtain_rules_json/scopes_json`（空JSON默认填 `{}`）。
- 步骤2：为称号模板添加效果
  - `POST /api/admin/system_titles/:title_id/effects`（`internal/router/router.go:132-133`；处理 `internal/api/admin/titles_admin.go:183-213`）。
  - 请求体：`effect_type/params_json/stacking_strategy/cap_value_x1000/scopes_json/sort/status`。
- 步骤3：分配给用户（可选，含有效期）
  - `POST /api/admin/users/:user_id/titles`（`internal/router/router.go:127`；处理 `internal/api/admin/titles_admin.go:291-353`）。
  - 请求体：`title_id/expires_at(RFC3339)/remark`。
- 步骤4：校验
  - 列表查询与检查：`GET /api/admin/system_titles`、`GET /api/admin/system_titles/:title_id/effects`（`internal/router/router.go:126`、`internal/router/router.go:131`；处理 `internal/api/admin/titles_admin.go:27-59`、`internal/api/admin/titles_admin.go:156-171`）。

## 数据与规则约束
- 名称唯一与幂等：同名不重复创建（`internal/api/admin/titles_seed.go:41-48`）。
- 状态控制：模板与效果需同时启用才会生效（抽奖过滤 `internal/service/activity/draw_with_effects.go:46-49`、`internal/service/activity/draw_with_effects.go:80-83`）。
- 有效期与激活：仅激活且未过期的用户称号参与计算（`internal/service/activity/draw_with_effects.go:54-67`）。
- 参数校验：`params_json` 必填（`internal/api/admin/titles_admin.go:195-206`）。

## 示例：新增“签到双倍积分”称号
- 创建模板：`name=签到达人`、`status=1`、`scopes_json={}`。
- 添加效果：`effect_type=3`、`params_json={"multiplier_x1000":2000,"daily_cap_points":3000}`、`stacking_strategy=1`、`cap_value_x1000=3000`、`status=1`。
- 分配给用户：设置 `expires_at`（如7天后）并激活。

## 示例：新增“抽奖折扣”称号
- 创建模板：`name=折扣官`、`status=1`、`scopes_json={"activity_ids":[1001]}`。
- 添加效果：`effect_type=2`、`params_json={"discount_type":"percentage","value_x1000":150,"max_discount_x1000":500}`、`stacking_strategy=1`、`cap_value_x1000=500`、`status=1`。

## 后续实施建议
- 在签到与购票模块接入统一解析器与效果计算器，实现(2)(3)的实际应用；领取型(1)(4)接入 `UserTitleEffectClaims` 做周期限流与资产发放；抽奖效果写入审计日志。
- 你确认后，我将按上述流程与参数规范为每种类型提供可执行的创建脚手架（接口调用示例与测试用例），并补齐未接入业务的效果逻辑。