路① 逐项 PUT /api/admin/rewards/config/:id(body 只含该项 coins / enabled)。coins 仅整数、范围取 GET items[].min/max(后端 parseInt 会把小数静默截断,前端先拦);enabled 仅 true/false,标「—」的后端无此字段。逐项 id / 范围全由 GET 下发,前端零硬编码。
invite_tier 配置项
当前值
改为(留空=不改)
档位 milestone(身份键不可改)
当前值
threshold 改为
coins 改为
vipDays 改为
badge 改为
路② PUT /api/admin/rewards/config/invite_tier:整表替换——任一档位改动即全档上行(milestone 恒取 GET 原值);范围照录后端(baseCoins / registerBaseCoins 0-100000、doubleMultiplier 1-10、vipMonthlyExchangeCost 1-10000000、threshold / coins 0-100000、vipDays 0-365、doubleEndAt 须晚于 doubleStartAt)。只渲染 GET 实际下发的键。审计快照由后端 admin_audit_log 服务端自记,前端零字段上行。