feat: complete pragativeer v2 frontend and backend, docker setup, and cbt engine

This commit is contained in:
2026-07-06 17:08:13 +05:30
parent ce01795aa9
commit 426b98ddab
66 changed files with 7949 additions and 363 deletions

36
backend/growth.py Normal file
View 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