from __future__ import annotations


def execute(payload: dict) -> dict:
    maximum = float(payload.get("maximumPayloadKg", 120))
    payload_kg = float(payload.get("payloadKg", 0))
    reasons = []
    if not payload.get("driveReady"): reasons.append("DRIVE_NOT_READY")
    if payload.get("fieldMode") != "GREENHOUSE": reasons.append("INVALID_FIELD_MODE")
    if payload.get("emergencyStop"): reasons.append("EMERGENCY_STOP")
    if maximum <= 0 or payload_kg > maximum: reasons.append("PAYLOAD_LIMIT")
    ratio = payload_kg / maximum if maximum > 0 else 1.0
    accepted = not reasons
    speed = 0.0 if not accepted else max(0.25, round(0.8 * (1 - 0.45 * min(ratio, 1)), 3))
    return {"component": "hada/greenhouse-transport-platform", "accepted": accepted,
            "status": "PLATFORM_READY" if accepted else "BLOCKED", "target": "mcu",
            "platformId": str(payload.get("platformId", "unknown")), "command": "ENABLE_DRIVE" if accepted else "STOP",
            "speedLimitMps": speed, "loadRatio": round(ratio, 3), "blockingReasons": reasons}
