File size: 1,869 Bytes
8a685c0
 
abcf7c3
8a685c0
 
 
 
c6123cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8a685c0
 
 
 
abcf7c3
 
 
 
c6123cd
 
 
 
abcf7c3
 
 
 
 
 
 
 
8a685c0
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from fastapi import FastAPI
import uvicorn
import random

app = FastAPI(title="Advertiser CRM API")

ADVERTISERS = {
    "adv_001": {
        "name": "HealthPlus LLC",
        "prior_violations": 3,
        "account_age_days": 45,
        "summary": "3 prior violations for unverified health claims. High risk."
    },
    "adv_002": {
        "name": "QuickCash Corp",
        "prior_violations": 5,
        "account_age_days": 12,
        "summary": "5 prior violations: predatory lending. Account flagged."
    },
    "adv_003": {
        "name": "BrandSafe Inc",
        "prior_violations": 0,
        "account_age_days": 730,
        "summary": "No prior violations. Established advertiser."
    },
    "adv_004": {
        "name": "TrustMe Pharma",
        "prior_violations": 1,
        "account_age_days": 180,
        "summary": "1 prior violation: unapproved drug claim. Under review."
    },
    "adv_005": {
        "name": "YouthFinance App",
        "prior_violations": 2,
        "account_age_days": 30,
        "summary": "2 violations: targeting minors with financial products."
    }
}

@app.get("/advertiser/{advertiser_id}")
def get_advertiser(advertiser_id: str):
    if random.random() < 0.1:
        return {"error": "service_unavailable", "retryable": True}

    data = ADVERTISERS.get(advertiser_id, {
        "name": "Unknown Advertiser",
        "prior_violations": 0,
        "account_age_days": 7,
        "summary": "New unverified advertiser. No history. Treat with caution."
    })

    risk_score = min(1.0,
        0.15 * data["prior_violations"] +
        0.5 * (1 / (1 + data["account_age_days"] / 30))
    )

    return {**data, "risk_score": round(risk_score, 2)}

@app.get("/health")
def health():
    return {"status": "ok", "service": "advertiser-crm"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8002)