|
|
|
|
|
import logging |
|
from collections import defaultdict |
|
|
|
logging.basicConfig(level=logging.INFO) |
|
|
|
|
|
USER_REVENUE = defaultdict(list) |
|
|
|
class RevenueTracker: |
|
def __init__(self): |
|
self.revenue_data = USER_REVENUE |
|
|
|
def log_affiliate_click(self, user_id: str, app_title: str, earning: float = 0.30): |
|
found = False |
|
for app in self.revenue_data[user_id]: |
|
if app[0] == app_title: |
|
app[1] += 1 |
|
app[2] += earning |
|
found = True |
|
break |
|
if not found: |
|
self.revenue_data[user_id].append([app_title, 1, earning]) |
|
logging.info(f"[π°] Click tracked: {user_id} - {app_title} +${earning:.2f}") |
|
|
|
def get_user_earnings(self, user_id: str): |
|
return [ |
|
{"title": a[0], "clicks": a[1], "revenue": a[2]} |
|
for a in self.revenue_data.get(user_id, []) |
|
] |
|
|
|
|
|
if __name__ == "__main__": |
|
tracker = RevenueTracker() |
|
tracker.log_affiliate_click("user_001", "WaveBot") |
|
tracker.log_affiliate_click("user_001", "WaveBot") |
|
tracker.log_affiliate_click("user_001", "EduHelper", 0.45) |
|
print(tracker.get_user_earnings("user_001")) |
|
|