"""
Lists S3 batch keys for a given week_start_date so the Step Function can be
started from the console with only {"week_start_date": "YYYY-MM-DD"}.
Returns { "items": [ { "s3_bucket", "s3_key", "week_start_date" }, ... ], "week_start_date": "..." }.
"""
import os
import json
import boto3

def lambda_handler(event, context):
    week_start_date = event.get("week_start_date")
    if not week_start_date:
        return {"items": [], "week_start_date": "", "error": "week_start_date required"}

    # When CreateTasksBulk starts the state machine it passes { items, week_start_date }. Use those items.
    incoming = event.get("items")
    if isinstance(incoming, list) and len(incoming) > 0:
        return {"items": incoming, "week_start_date": week_start_date}

    bucket = os.environ.get("CREATE_TASKS_STAGING_BUCKET")
    if not bucket:
        return {"items": [], "week_start_date": week_start_date, "error": "CREATE_TASKS_STAGING_BUCKET not set"}

    prefix = f"batches/{week_start_date}/"
    s3 = boto3.client("s3")
    items = []
    paginator = s3.get_paginator("list_objects_v2")
    for page in paginator.paginate(Bucket=bucket, Prefix=prefix):
        for obj in page.get("Contents") or []:
            key = obj["Key"]
            if key.endswith(".json"):
                items.append({
                    "s3_bucket": bucket,
                    "s3_key": key,
                    "week_start_date": week_start_date,
                })
    return {"items": items, "week_start_date": week_start_date}
