from __future__ import annotations
import math

def execute(payload: dict) -> dict:
    current = list(payload.get("start", [0, 0]))
    remaining = list(payload.get("tasks", []))
    order, distance = [], 0.0
    while remaining:
        task = min(remaining, key=lambda item: math.dist(current, item["point"]))
        leg = math.dist(current, task["point"])
        order.append({"id": task["id"], "point": task["point"], "transfer_distance_m": round(leg, 3)})
        distance += leg
        current = task["point"]
        remaining.remove(task)
    return {"algorithm": "nearest_neighbor", "order": order, "total_transfer_distance_m": round(distance, 3)}
