import sys
import json
import joblib
import numpy as np

# Load trained model and encoders
model = joblib.load("ai_models/crop_demand_model.pkl")
scaler = joblib.load("ai_models/crop_demand_scaler.pkl")
le_region = joblib.load("ai_models/region_encoder.pkl")
le_market = joblib.load("ai_models/market_encoder.pkl")
le_cat = joblib.load("ai_models/category_encoder.pkl")
le_com = joblib.load("ai_models/commodity_encoder.pkl")
le_demand = joblib.load("ai_models/demand_encoder.pkl")

# Read input JSON
raw_input = sys.stdin.read()
data = json.loads(raw_input)

# Extract features
region = data.get("region", "")
market = data.get("market", "")
category = data.get("category", "")
commodity = data.get("commodity", "")
usdprice = float(data.get("usdprice", 1))

try:
    region_encoded = le_region.transform([region])[0]
except ValueError:
    region_encoded = 0

try:
    market_encoded = le_market.transform([market])[0]
except ValueError:
    market_encoded = 0

try:
    category_encoded = le_cat.transform([category])[0]
except ValueError:
    category_encoded = 0

try:
    commodity_encoded = le_com.transform([commodity])[0]
except ValueError:
    commodity_encoded = 0

# Prepare input array
X = np.array([[region_encoded, market_encoded, category_encoded, commodity_encoded, usdprice]])
X_scaled = scaler.transform(X)

# Predict
pred = model.predict(X_scaled)
pred_label = le_demand.inverse_transform(pred)[0]

# Output JSON result
print(json.dumps({"predicted_demand": pred_label}))
