from __future__ import annotations from tasks.base import SupportTaskSpec, KnowledgeSnippet, SupportTicket TASK = SupportTaskSpec( task_id="account_takeover_medium", difficulty="medium", title="Account takeover recovery", objective=( "Identify an account compromise, lock the account, start recovery, " "and communicate next steps without leaking security-sensitive details." ), ticket=SupportTicket( customer_name="Anjali Menon", customer_tier="enterprise", company="Saffron Logistics", subject="Someone changed our admin email", body=( "Our main admin email was changed and we lost access. " "We’re seeing unfamiliar login alerts from overseas. Urgent help needed." ), region="us-east-1", affected_users=240, sla_minutes_remaining=120, ), knowledge_base=( KnowledgeSnippet( article_id="kb-compromise-protocol", title="Account compromise protocol", content=( "Immediately lock the account, invalidate active sessions, require admin re-verification, " "and collect proof of ownership (billing zip, last 4 of card, admin ID)." ), ), KnowledgeSnippet( article_id="kb-enterprise-sla", title="Enterprise SLA", content="Enterprise incidents must be contained within 2 hours. Provide status updates every 30 minutes.", ), ), gold_queue="trust_and_safety", gold_priority="urgent", gold_issue_type="account_compromise", gold_status="escalated", gold_resolution_code="security_lock_and_verify", required_requested_fields=("ownership_proof", "billing_zip", "last4_card"), required_reply_markers=( ("locked", "account"), ("invalidate", "sessions"), ("verify", "ownership"), ("sla", "updates"), ), required_note_markers=(("account locked",), ("ownership proof requested",)), risk_flags=("security_incident", "sla_breach"), follow_up_outcome="partial", follow_up_message="Customer provided billing zip but not card last4 yet.", follow_up_provided_fields=("billing_zip",), follow_up_wrong_fields=("card_last4",), sla_step_cost=18, over_escalation_queues=("security_ops",), under_escalation_deadline_step=4, max_steps=7, )