diff --git a/SVSim.Database/Models/Config/LoginBonusConfig.cs b/SVSim.Database/Models/Config/LoginBonusConfig.cs
index 93a17ea9..f8109ee9 100644
--- a/SVSim.Database/Models/Config/LoginBonusConfig.cs
+++ b/SVSim.Database/Models/Config/LoginBonusConfig.cs
@@ -17,8 +17,11 @@ public class LoginBonusConfig
public string Img { get; set; } = "0";
///
- /// Normal-cycle reward entries, 1-based by Day. Defaults to a 15-day cycle copied
- /// verbatim from the prod tutorial capture (traffic_prod_tutorial.ndjson).
+ /// Normal-cycle reward entries, 1-based by Day. Defaults to new() (empty);
+ /// real entries live in . Do not move them into this
+ /// property initializer — collection initializers silently empty out under
+ /// GameConfigService.Get<T>()'s tier-merge (config-defaults convention,
+ /// historical bug 2026-05-24).
///
public List Normal { get; set; } = new();
@@ -47,12 +50,3 @@ public class LoginBonusConfig
},
};
}
-
-public class NormalBonusEntry
-{
- public int Day { get; set; }
- public int EffectId { get; set; } = 1;
- public UserGoodsType RewardType { get; set; }
- public long RewardDetailId { get; set; }
- public int RewardNumber { get; set; }
-}
diff --git a/SVSim.Database/Models/Config/NormalBonusEntry.cs b/SVSim.Database/Models/Config/NormalBonusEntry.cs
new file mode 100644
index 00000000..8f78ee76
--- /dev/null
+++ b/SVSim.Database/Models/Config/NormalBonusEntry.cs
@@ -0,0 +1,12 @@
+using SVSim.Database.Enums;
+
+namespace SVSim.Database.Models.Config;
+
+public class NormalBonusEntry
+{
+ public int Day { get; set; }
+ public int EffectId { get; set; } = 1;
+ public UserGoodsType RewardType { get; set; }
+ public long RewardDetailId { get; set; }
+ public int RewardNumber { get; set; }
+}