Загрузка данных


from config import PRICES, URGENCY, PROMOCODES

PARTS_PRICES = {
    "iPhone": {"screen": 5000, "battery": 2500, "motherboard": 8000},
    "Samsung": {"screen": 4000, "battery": 2000, "motherboard": 7000},
    "Xiaomi": {"screen": 3000, "battery": 1500, "motherboard": 6000},
    "Google Pixel": {"screen": 4500, "battery": 2200, "motherboard": 7500},
    "Other": {"screen": 2500, "battery": 1200, "motherboard": 5000}
}

PARTS_ANALOG = {
    "iPhone": {"screen": 3500, "battery": 1800, "motherboard": 5000},
    "Samsung": {"screen": 3000, "battery": 1500, "motherboard": 4500},
    "Xiaomi": {"screen": 2500, "battery": 1200, "motherboard": 4000},
    "Google Pixel": {"screen": 3200, "battery": 1600, "motherboard": 4800},
    "Other": {"screen": 2000, "battery": 1000, "motherboard": 3500}
}

def calc_labor(model, repair):
    if model in PRICES:
        model_prices = PRICES[model]
    else:
        model_prices = PRICES["Other"]
    return model_prices.get(repair, 0)

def calc_total(data):
    model = data["model"]
    repair = data["repair"]
    parts = data["parts"]
    urgency = data["urgency"]
    services = data["services"]
    promocode = data["promocode"]
    
    labor = calc_labor(model, repair)
    
    if repair == "motherboard":
        diagnostics = 0
    else:
        diagnostics = 500
    
    subtotal = labor + parts + diagnostics + services
    multiplier = URGENCY[urgency]
    total = subtotal * multiplier
    
    discount = 0
    if promocode == "SERVICE10":
        discount = total * 0.10
        total = total - discount
    elif promocode == "REMONT26":
        discount = labor * 0.15
        total = total - discount
    
    return {
        "labor": labor,
        "parts": parts,
        "diagnostics": diagnostics,
        "services": services,
        "subtotal": subtotal,
        "multiplier": multiplier,
        "discount": discount,
        "total": total
    }

def compare_options(model, repair, urgency):
    original_parts = PARTS_PRICES.get(model, {}).get(repair, 3000)
    analog_parts = PARTS_ANALOG.get(model, {}).get(repair, 2000)
    
    labor = calc_labor(model, repair)
    
    if repair == "motherboard":
        diagnostics = 0
    else:
        diagnostics = 500
    
    multiplier = URGENCY[urgency]
    
    original_total = (labor + original_parts + diagnostics) * multiplier
    analog_total = (labor + analog_parts + diagnostics) * multiplier
    
    if original_total <= analog_total:
        best = "оригинал"
        savings = analog_total - original_total
    else:
        best = "аналог"
        savings = original_total - analog_total
    
    return {
        "original": original_total,
        "analog": analog_total,
        "best": best,
        "savings": savings
    }