feat: complete pragativeer v2 frontend and backend, docker setup, and cbt engine
This commit is contained in:
36
backend/growth.py
Normal file
36
backend/growth.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from sqlmodel import Session, select
|
||||
from uuid import UUID
|
||||
import uuid
|
||||
from datetime import timedelta
|
||||
import models
|
||||
|
||||
def generate_referral_link(user_id: UUID) -> str:
|
||||
"""Generates a unique shortcode for the user to share."""
|
||||
# Using a simple deterministic slice for the local sandbox
|
||||
shortcode = str(user_id).split("-")[0]
|
||||
return f"https://pragativeer.com/join/{shortcode}"
|
||||
|
||||
def process_referral_reward(referrer_id: UUID, new_user_id: UUID, session: Session):
|
||||
"""
|
||||
Grants both users 7 days of AI Coach access for free as per PRD Section 3.2.
|
||||
"""
|
||||
referrer = session.get(models.User, referrer_id)
|
||||
new_user = session.get(models.User, new_user_id)
|
||||
|
||||
if referrer and new_user:
|
||||
# Upgrade both to AI Coach
|
||||
referrer.tier = models.TierEnum.AI_COACH
|
||||
new_user.tier = models.TierEnum.AI_COACH
|
||||
|
||||
# Add 7 days to their trial/subscription end dates
|
||||
from datetime import datetime
|
||||
now = datetime.utcnow()
|
||||
|
||||
referrer.subscription_end = (referrer.subscription_end or now) + timedelta(days=7)
|
||||
new_user.trial_end = now + timedelta(days=7)
|
||||
|
||||
session.add(referrer)
|
||||
session.add(new_user)
|
||||
session.commit()
|
||||
return True
|
||||
return False
|
||||
Reference in New Issue
Block a user