55import structlog
66
77from src .jobs .base import BaseJob , register_job
8+ from src .jobs .schemas import WellnessEscalationPayload
89from src .lib .dispatch import dispatch_local
910
1011logger = structlog .get_logger (__name__ )
@@ -18,43 +19,39 @@ def job_type(self) -> str:
1819 return "wellness.escalation"
1920
2021 async def execute (self , data : dict [str , Any ]) -> dict [str , Any ]:
21- log_id : str = data .get ("log_id" , "" )
22- host_id : str = data .get ("host_id" , "" )
23- status : str = data .get ("status" , "" )
24- summary : str = data .get ("summary" , "" )
25- contact_tokens : list [str ] = data .get ("contact_tokens" , [])
22+ payload = WellnessEscalationPayload .model_validate (data )
2623
27- if not contact_tokens :
24+ if not payload . contact_tokens :
2825 logger .warning (
2926 "wellness_escalation_no_contacts" ,
30- log_id = log_id ,
31- host_id = host_id ,
27+ log_id = payload . log_id ,
28+ host_id = payload . host_id ,
3229 )
3330 return {"escalated" : False , "reason" : "no_contacts" }
3431
3532 await dispatch_local (
3633 "notification.send" ,
3734 {
38- "tokens" : contact_tokens ,
39- "title" : f"URGENT: Wellness { status .upper ()} " ,
40- "body" : summary or "Immediate attention required" ,
35+ "tokens" : payload . contact_tokens ,
36+ "title" : f"URGENT: Wellness { payload . status .upper ()} " ,
37+ "body" : payload . summary or "Immediate attention required" ,
4138 "data" : {
42- "log_id" : log_id ,
43- "host_id" : host_id ,
39+ "log_id" : payload . log_id ,
40+ "host_id" : payload . host_id ,
4441 "type" : "wellness_escalation" ,
4542 },
4643 },
4744 )
4845
4946 logger .info (
5047 "wellness_escalation_dispatched" ,
51- log_id = log_id ,
52- host_id = host_id ,
53- contact_count = len (contact_tokens ),
48+ log_id = payload . log_id ,
49+ host_id = payload . host_id ,
50+ contact_count = len (payload . contact_tokens ),
5451 )
5552 return {
5653 "escalated" : True ,
57- "contact_count" : len (contact_tokens ),
54+ "contact_count" : len (payload . contact_tokens ),
5855 }
5956
6057
0 commit comments