The two wire fields differ for seasonal packs (verified against
traffic_prod_all_gacha_exchange.ndjson — every captured request pairs
odds_gacha_id=16xxx with parent_gacha_id=10xxx). The OLD DTO docstring
assumed they were always equal; today's controller used
ParentGachaId, which lands on the base/family pack id (often a
synthesized disabled stub with no GachaPointConfig) and returns [].
Fix:
- GetGachaPointRewards and ExchangeGachaPoint now consume OddsGachaId.
- Update both DTO docstrings to document the seasonal-pack pattern.
- Regression test seeds (16015 enabled w/ GachaPointConfig, 10015
disabled stub w/o config) and asserts the response uses 16015's
catalog.
Symptom: opening pack 16015 (parent_gacha_id=16015 in /pack/open)
accrued gacha points correctly, but /pack/get_gacha_point_rewards with
{odds_gacha_id:16015, parent_gacha_id:10015} returned an empty list.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
28 lines
1.0 KiB
C#
28 lines
1.0 KiB
C#
using System.Text.Json.Serialization;
|
|
using MessagePack;
|
|
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
|
|
|
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Requests.Pack;
|
|
|
|
/// <summary>
|
|
/// Inbound /pack/get_gacha_point_rewards body.
|
|
///
|
|
/// The two ids DIFFER for seasonal packs (e.g. UCL):
|
|
/// odds_gacha_id = the seasonal "current" pack id (matches /pack/info parent_gacha_id),
|
|
/// and is where the GachaPointConfig + gacha-point balance live.
|
|
/// parent_gacha_id = the base/family pack id (matches /pack/info base_pack_id).
|
|
/// Verified against traffic_prod_all_gacha_exchange.ndjson — every captured request shows
|
|
/// the pair as (16xxx, 10xxx). Server consumes <c>odds_gacha_id</c> for the lookup.
|
|
/// </summary>
|
|
[MessagePackObject]
|
|
public class GetGachaPointRewardsRequest : BaseRequest
|
|
{
|
|
[JsonPropertyName("odds_gacha_id")]
|
|
[Key("odds_gacha_id")]
|
|
public int OddsGachaId { get; set; }
|
|
|
|
[JsonPropertyName("parent_gacha_id")]
|
|
[Key("parent_gacha_id")]
|
|
public int ParentGachaId { get; set; }
|
|
}
|