import json
import logging
from django.utils import timezone
from datetime import datetime
from datetime import timezone as dt_timezone

logger = logging.getLogger(__name__)

def log_step(step: str, call_sid: str = None, **extra):
    """
    Standard structured log formatter for all tasks.
    """
    log_data = {
        "step": step,
        "time": current_time_str(),
    }

    if call_sid:
        log_data["call_sid"] = call_sid

    if extra:
        log_data.update(extra)

    logger.info(json.dumps(log_data, indent=2))


def current_time_str():
    try:
        return timezone.now().strftime("%Y-%m-%d %H:%M:%S")
    except Exception:
        return datetime.now(dt_timezone.utc).strftime("%Y-%m-%d %H:%M:%S")