fix: tighten default offer-expiration window from 7 days to 48 hours

7 days for a seller to even respond to a buyer's offer was too
generous. eBay-style Best Offer caps at 48 hours; nobody enjoys
waiting a week to find out their offer is dead.

Change is purely the new-shop default — existing shops keep
whatever their offer_expiration_hours column is set to. Operators
can tighten or widen via the offer-settings form on their shop
settings page.

(Default-to-default coverage in test_integration.py updated to
match.)
This commit is contained in:
russell@unturf.com 2026-05-13 14:02:50 -04:00
parent fc02c8189c
commit becd6e359f
No known key found for this signature in database
3 changed files with 3 additions and 3 deletions

View file

@ -104,7 +104,7 @@ OFFER_EVENT_INT_TO_HUMAN = {
# Defaults — shop settings override these per-shop.
DEFAULT_OFFER_EXPIRATION_HOURS = 168 # 7 days, pre-acceptance window
DEFAULT_OFFER_EXPIRATION_HOURS = 48 # 2 days, pre-acceptance window
DEFAULT_OFFER_MAX_ROUNDS = 3
DEFAULT_OFFER_AUTO_ACCEPT_PCT = 95
DEFAULT_OFFER_AUTO_DECLINE_PCT = 50

View file

@ -200,7 +200,7 @@ class Shop(RBase, Base):
BigInteger, nullable=False, default=50, server_default="50"
)
offer_expiration_hours = Column(
BigInteger, nullable=False, default=168, server_default="168"
BigInteger, nullable=False, default=48, server_default="48"
)
offer_max_rounds = Column(
BigInteger, nullable=False, default=3, server_default="3"

View file

@ -4458,7 +4458,7 @@ class TestPricingModePersistence(DatabaseIntegrationTests):
fetched = self.dbsession.query(Shop).get(shop_id)
self.assertEqual(fetched.offer_auto_accept_threshold_pct, 95)
self.assertEqual(fetched.offer_auto_decline_threshold_pct, 50)
self.assertEqual(fetched.offer_expiration_hours, 168)
self.assertEqual(fetched.offer_expiration_hours, 48)
self.assertEqual(fetched.offer_max_rounds, 3)
self.assertEqual(fetched.offer_min_buyer_account_age_hours, 0)
# Booleans/nullable: offer_enabled defaults None (no server_default set)