File size: 1,845 Bytes
09760bc
 
ae2cee3
09760bc
 
 
 
d9ae15f
ae2cee3
 
 
 
 
d9ae15f
810a59d
ae2cee3
 
 
 
 
 
 
 
 
 
 
810a59d
09760bc
 
388b3ad
09760bc
bd5a661
 
ae2cee3
388b3ad
ae2cee3
54c4584
810a59d
388b3ad
bd5a661
ae2cee3
 
 
 
6a74830
ae2cee3
388b3ad
810a59d
bd5a661
ae2cee3
 
 
810a59d
09760bc
9f6845f
 
ae2cee3
 
 
6a74830
ae2cee3
388b3ad
ae2cee3
 
 
473a9f0
ae2cee3
 
 
810a59d
ae2cee3
 
 
fbde370
ae2cee3
09760bc
810a59d
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from flask import Flask, request, jsonify
from flask_cors import CORS
import random, math

app = Flask(__name__)
CORS(app)

NGOS = [
    {"name":"Dubai Food Bank","type":"Food Bank","lat":25.20,"lon":55.27},
    {"name":"Sharjah Elderly Care","type":"Elderly Home","lat":25.34,"lon":55.42},
    {"name":"UAE Relief Center","type":"Shelter","lat":25.27,"lon":55.29},
    {"name":"Abu Dhabi Kitchen","type":"Kitchen","lat":24.45,"lon":54.37},
    {"name":"Ajman Support Home","type":"Elderly Home","lat":25.41,"lon":55.51}
]

def dist():
    return random.uniform(2,10)

def reason(food, ngo):
    reasons = [
        f"{ngo} has urgent demand for {food}",
        f"{food} matches dietary needs of {ngo}",
        f"High priority distribution zone for {ngo}",
        f"Efficient delivery route for {ngo}"
    ]
    return random.choice(reasons)

@app.route("/analyze", methods=["POST"])
def analyze():

    data = request.json
    meals = int(data["meals"])
    foodType = data["foodType"]
    seed = data.get("seed", 1)

    random.seed(seed)

    results = []

    for ngo in NGOS:
        score = random.randint(50,95)

        if meals > 120:
            score += 5

        km = round(dist(),1)

        results.append({
            "recipient": ngo["name"],
            "km": km,
            "score": score,
            "reason": reason(foodType, ngo["name"]),
        })

    results.sort(key=lambda x: x["score"], reverse=True)

    highs = results[:2]
    meds = results[2:4]
    lows = results[4:6]

    final = []

    for r in highs:
        r["priority"] = "High"
        final.append(r)

    for r in meds:
        r["priority"] = "Medium"
        final.append(r)

    for r in lows:
        r["priority"] = "Low"
        final.append(r)

    return jsonify(final)

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