import json import os from datetime import datetime from zoneinfo import ZoneInfo import boto3 from shared.db import current_week, get_form_status, set_form_status _lambda = boto3.client("lambda") EASTERN = ZoneInfo("America/New_York") def lambda_handler(event, context): now_et = datetime.now(EASTERN) if not (now_et.weekday() == 3 and now_et.hour >= 23): return { "status": "skipped", "reason": "outside close window (must be Thursday >= 11 PM ET)", } week = event.get("week", current_week()) status = get_form_status(week) if status == "closed": return {"status": "already_closed", "week": week} set_form_status(week, "closed") _lambda.invoke( FunctionName=os.environ["AGGREGATE_FUNCTION_ARN"], InvocationType="Event", Payload=json.dumps({"week": week}), ) return {"status": "closed", "week": week, "aggregate_triggered": True}