diff --git a/app/core/rewards.py b/app/core/rewards.py index b2312d9..407c118 100644 --- a/app/core/rewards.py +++ b/app/core/rewards.py @@ -34,8 +34,9 @@ COIN_PER_YUAN: int = 10000 CENTS_PER_YUAN: int = 100 # 1 分对应多少金币 = 100。兑换金币数必须是它的整数倍,否则会出现不足 1 分的零头。 COIN_PER_CENT: int = COIN_PER_YUAN // CENTS_PER_YUAN -# 单次兑换最少 1 元(避免大量 1 分级碎兑) -MIN_EXCHANGE_COIN: int = COIN_PER_YUAN +# 单次兑换最少 1 分(=COIN_PER_CENT;产品定:可兑 1 分起,与 step 同粒度)。早先为 1 元(=COIN_PER_YUAN), +# 用户 2026-06 改为 1 分:让"换现金"小额即可用(也方便联调验证资产卡飞金币动画)。 +MIN_EXCHANGE_COIN: int = COIN_PER_CENT def coins_to_cents(coin_amount: int) -> int: @@ -54,7 +55,7 @@ TASK_ENABLE_NOTIFICATION = "enable_notification" # task_key -> 奖励金币 # 打开消息提醒: 1000 金币(=¥0.1, 客户端原型展示口径; 量级与签到/里程碑相称)。 -# 注意: 已不再 = 兑换下限(MIN_EXCHANGE_COIN=10000), test_exchange_flow 改走 grant_coins 直接供款。 +# 注意: 不再 = 兑换下限(下限已降到 MIN_EXCHANGE_COIN=COIN_PER_CENT=100), test_exchange_flow 改走 grant_coins 直接供款。 TASK_REWARDS: dict[str, int] = { TASK_ENABLE_NOTIFICATION: 1000, } diff --git a/tests/test_welfare.py b/tests/test_welfare.py index d669ce6..4cf38ca 100644 --- a/tests/test_welfare.py +++ b/tests/test_welfare.py @@ -133,10 +133,10 @@ def test_exchange_info(client) -> None: def test_exchange_flow(client) -> None: - """先供款够兑换下限的金币 → 兑换 1 元 → 金币扣、现金加 → 现金流水有记录。 + """先供款够兑 1 元的金币 → 兑换 1 元 → 金币扣、现金加 → 现金流水有记录。 - 打开消息提醒任务已降到 1000 金币(不再 = 兑换下限), 不能再靠领任务供款; - 直接 grant_coins 注入 MIN_EXCHANGE_COIN(= COIN_PER_YUAN = 10000)当种子。 + 兑换下限已降到 1 分(MIN_EXCHANGE_COIN = COIN_PER_CENT = 100), 但本用例验证兑换 1 元, + 直接 grant_coins 注入 COIN_PER_YUAN(= 10000)当种子(够兑 1 元)。 """ phone = "13800001005" token = _login(client, phone) @@ -144,7 +144,7 @@ def test_exchange_flow(client) -> None: with SessionLocal() as db: user = get_user_by_phone(db, phone) assert user is not None - crud_wallet.grant_coins(db, user.id, MIN_EXCHANGE_COIN, biz_type="test_seed", remark="测试供款") + crud_wallet.grant_coins(db, user.id, COIN_PER_YUAN, biz_type="test_seed", remark="测试供款") db.commit() # 兑换 10000 金币 → 100 分 @@ -191,10 +191,10 @@ def test_exchange_insufficient_and_invalid(client) -> None: ) assert r.status_code == 409 - # 低于最小额 → 400 + # 低于最小额(下限现为 1 分=100;取 MIN_EXCHANGE_COIN-1=99,既低于下限又非整分)→ 400 r = client.post( "/api/v1/wallet/exchange", - json={"coin_amount": MIN_EXCHANGE_COIN - COIN_PER_CENT}, + json={"coin_amount": MIN_EXCHANGE_COIN - 1}, headers=_auth(token), ) assert r.status_code == 400