fix: reduce signup bonus to ten points
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.15 on 2026-07-18 06:44
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('billing', '0008_alter_callrecord_operation_type_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='signupbonusgrant',
|
||||
name='points_granted',
|
||||
field=models.BigIntegerField(default=10, verbose_name='赠送点数'),
|
||||
),
|
||||
]
|
||||
@@ -318,7 +318,7 @@ class SignupBonusGrant(models.Model):
|
||||
on_delete=models.PROTECT,
|
||||
related_name="signup_bonus_grant",
|
||||
)
|
||||
points_granted = models.BigIntegerField("赠送点数", default=100)
|
||||
points_granted = models.BigIntegerField("赠送点数", default=10)
|
||||
created_at = models.DateTimeField("创建时间", auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -352,7 +352,7 @@ def adjust_wallet_points(
|
||||
def grant_signup_bonus(
|
||||
*,
|
||||
user,
|
||||
points: int = 100,
|
||||
points: int = 10,
|
||||
reason: str = "new_user_registration",
|
||||
) -> SignupBonusGrantResult:
|
||||
points = _validate_positive_points(points)
|
||||
|
||||
@@ -501,18 +501,18 @@ class BillingServiceTests(TestCase):
|
||||
wallet = UserWallet.objects.get(user=user)
|
||||
self.assertTrue(first.granted)
|
||||
self.assertFalse(second.granted)
|
||||
self.assertEqual(first.points_granted, 100)
|
||||
self.assertEqual(first.points_granted, 10)
|
||||
self.assertEqual(second.points_granted, 0)
|
||||
self.assertEqual(first.balance_after, 100)
|
||||
self.assertEqual(second.balance_after, 100)
|
||||
self.assertEqual(wallet.points_balance, 100)
|
||||
self.assertEqual(first.balance_after, 10)
|
||||
self.assertEqual(second.balance_after, 10)
|
||||
self.assertEqual(wallet.points_balance, 10)
|
||||
self.assertEqual(SignupBonusGrant.objects.filter(user=user).count(), 1)
|
||||
ledger = PointsLedger.objects.get(
|
||||
user=user,
|
||||
change_type=PointsLedger.ChangeType.SIGNUP_BONUS,
|
||||
)
|
||||
self.assertEqual(ledger.points_delta, 100)
|
||||
self.assertEqual(ledger.balance_after, 100)
|
||||
self.assertEqual(ledger.points_delta, 10)
|
||||
self.assertEqual(ledger.balance_after, 10)
|
||||
self.assertEqual(ledger.reason, "new_user_registration")
|
||||
|
||||
def test_grant_signup_bonus_adds_to_existing_wallet_balance(self):
|
||||
@@ -528,8 +528,8 @@ class BillingServiceTests(TestCase):
|
||||
|
||||
wallet = UserWallet.objects.get(user=user)
|
||||
self.assertTrue(result.granted)
|
||||
self.assertEqual(wallet.points_balance, 130)
|
||||
self.assertEqual(result.balance_after, 130)
|
||||
self.assertEqual(wallet.points_balance, 40)
|
||||
self.assertEqual(result.balance_after, 40)
|
||||
|
||||
def test_create_recharge_order_marks_order_failed_when_gateway_fails(self):
|
||||
self.create_exchange_rate(points_per_unit="10.0000")
|
||||
@@ -1061,7 +1061,7 @@ class ConcurrentSignupBonusTests(TransactionTestCase):
|
||||
self.assertEqual(sum(1 for granted, _balance in results if not granted), 1)
|
||||
|
||||
wallet = UserWallet.objects.get(user=self.user)
|
||||
self.assertEqual(wallet.points_balance, 100)
|
||||
self.assertEqual(wallet.points_balance, 10)
|
||||
self.assertEqual(SignupBonusGrant.objects.filter(user=self.user).count(), 1)
|
||||
self.assertEqual(
|
||||
PointsLedger.objects.filter(
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<section class="cmhub-panel">
|
||||
<h1 class="h4 mb-3">注册</h1>
|
||||
<div class="alert alert-info">
|
||||
注册成功后自动赠送 100 点试用点数,系统会写入注册赠点流水。
|
||||
注册成功后自动赠送 10 点试用点数,系统会写入注册赠点流水。
|
||||
</div>
|
||||
<form method="post" action="{% url 'portal-signup' %}">
|
||||
{% csrf_token %}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
{% if user.is_authenticated %}
|
||||
<a class="btn btn-primary btn-lg" href="{% url 'portal-dashboard' %}">进入控制台</a>
|
||||
{% else %}
|
||||
<a class="btn btn-primary btn-lg" href="{% url 'portal-signup' %}">注册领 100 点</a>
|
||||
<a class="btn btn-primary btn-lg" href="{% url 'portal-signup' %}">注册领 10 点</a>
|
||||
<a class="btn btn-outline-secondary btn-lg" href="{% url 'portal-login' %}">登录</a>
|
||||
{% endif %}
|
||||
{% if current_release and current_release.has_download %}
|
||||
@@ -31,7 +31,7 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="home-proof" aria-label="服务要点">
|
||||
<span class="home-chip">注册送 100 点</span>
|
||||
<span class="home-chip">注册送 10 点</span>
|
||||
<span class="home-chip">按点数扣点</span>
|
||||
<span class="home-chip">API Key 接入</span>
|
||||
</div>
|
||||
@@ -73,7 +73,7 @@
|
||||
<div class="home-step">
|
||||
<div class="home-step-num">01</div>
|
||||
<h3>注册账号</h3>
|
||||
<p>邮箱注册后直接登录,系统通过点数账本发放 100 点试用额度并写注册赠点流水。</p>
|
||||
<p>邮箱注册后直接登录,系统通过点数账本发放 10 点试用额度并写注册赠点流水。</p>
|
||||
</div>
|
||||
<div class="home-step">
|
||||
<div class="home-step-num">02</div>
|
||||
|
||||
+10
-10
@@ -176,7 +176,7 @@ class PortalAccountFlowTests(TestCase):
|
||||
def test_signup_rate_limit_is_configured(self):
|
||||
self.assertEqual(settings.ACCOUNT_RATE_LIMITS["signup"], "20/m/ip")
|
||||
|
||||
def test_signup_grants_100_points_writes_signup_bonus_ledger_and_can_login(self):
|
||||
def test_signup_grants_10_points_writes_signup_bonus_ledger_and_can_login(self):
|
||||
suffix = uuid.uuid4().hex[:8]
|
||||
email = f"signup-{suffix}@example.com"
|
||||
|
||||
@@ -196,22 +196,22 @@ class PortalAccountFlowTests(TestCase):
|
||||
wallet = UserWallet.objects.get(user=user)
|
||||
self.assertFalse(email_address.verified)
|
||||
self.assertTrue(email_address.primary)
|
||||
self.assertEqual(wallet.points_balance, 100)
|
||||
self.assertEqual(wallet.points_balance, 10)
|
||||
self.assertEqual(SignupBonusGrant.objects.filter(user=user).count(), 1)
|
||||
ledger = PointsLedger.objects.get(
|
||||
user=user,
|
||||
change_type=PointsLedger.ChangeType.SIGNUP_BONUS,
|
||||
)
|
||||
self.assertEqual(ledger.points_delta, 100)
|
||||
self.assertEqual(ledger.balance_after, 100)
|
||||
self.assertEqual(ledger.points_delta, 10)
|
||||
self.assertEqual(ledger.balance_after, 10)
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
self.assertTrue(get_user(self.client).is_authenticated)
|
||||
|
||||
dashboard_response = self.client.get("/dashboard")
|
||||
self.assertEqual(dashboard_response.status_code, 200)
|
||||
self.assertEqual(dashboard_response.context["balance"].points_balance, 100)
|
||||
self.assertEqual(dashboard_response.context["balance"].ledger_balance, 100)
|
||||
self.assertContains(dashboard_response, "100")
|
||||
self.assertEqual(dashboard_response.context["balance"].points_balance, 10)
|
||||
self.assertEqual(dashboard_response.context["balance"].ledger_balance, 10)
|
||||
self.assertContains(dashboard_response, "10")
|
||||
|
||||
def test_user_can_login_without_verified_email(self):
|
||||
suffix = uuid.uuid4().hex[:8]
|
||||
@@ -282,8 +282,8 @@ class PortalAccountFlowTests(TestCase):
|
||||
self.assertEqual(response.resolver_match.url_name, "portal-home")
|
||||
self.assertContains(response, "虾皮圈 AI 电商生成台")
|
||||
self.assert_portal_branding(response)
|
||||
self.assertContains(response, "注册领 100 点")
|
||||
self.assertContains(response, "注册送 100 点")
|
||||
self.assertContains(response, "注册领 10 点")
|
||||
self.assertContains(response, "注册送 10 点")
|
||||
self.assertContains(response, "登录")
|
||||
self.assertContains(response, "客户端暂未发布")
|
||||
self.assertContains(response, "暂未发布")
|
||||
@@ -404,7 +404,7 @@ class PortalAccountFlowTests(TestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "进入控制台")
|
||||
self.assertNotContains(response, "注册领 100 点")
|
||||
self.assertNotContains(response, "注册领 10 点")
|
||||
|
||||
def test_download_release_only_keeps_one_current_per_platform(self):
|
||||
old_release = self.create_download_release(version="1.0.0", sha256="c" * 64)
|
||||
|
||||
Reference in New Issue
Block a user