mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import os
|
|
from typing import Any
|
|
|
|
import boto3
|
|
|
|
from infrastructure.magic_plan.config import MagicPlanConfig
|
|
from infrastructure.magic_plan.magic_plan_client import MagicPlanClient
|
|
from infrastructure.s3.s3_client import S3Client
|
|
from orchestration.magic_plan_orchestrator import MagicPlanOrchestrator
|
|
from applications.magic_plan.magic_plan_trigger_request import MagicPlanTriggerRequest
|
|
from domain.magicplan.models import Plan
|
|
from utilities.aws_lambda.subtask_handler import subtask_handler
|
|
from utilities.logger import setup_logger
|
|
|
|
logger = setup_logger()
|
|
|
|
|
|
@subtask_handler()
|
|
def handler(body: dict[str, Any], context: Any) -> str:
|
|
config = MagicPlanConfig.from_env(os.environ)
|
|
payload = MagicPlanTriggerRequest.model_validate(body)
|
|
client = MagicPlanClient(
|
|
customer_id=config.customer_id,
|
|
api_key=config.api_key,
|
|
)
|
|
|
|
boto3_client: Any = boto3.client # type: ignore
|
|
boto_s3: Any = boto3_client("s3")
|
|
s3_client = S3Client(
|
|
boto_s3_client=boto_s3, bucket="retrofit-energy-assessments-dev"
|
|
)
|
|
|
|
# TODO: read s3_bucket from env var so staging/prod use the correct bucket
|
|
plan: Plan = MagicPlanOrchestrator(client, s3_client).run(payload)
|
|
logger.info("Saved MagicPlan plan uid=%s", plan.uid)
|
|
return plan.uid
|
|
|
|
|
|
if __name__ == "__main__":
|
|
event = {
|
|
"Records": [
|
|
{
|
|
"body": '{"address": "2 Laburnum Way Bromley BR2 8BZ", "hubspot_deal_id": "local-test-deal"}',
|
|
}
|
|
]
|
|
}
|
|
handler(event, None)
|