from __future__ import annotations from tasks.base import SupportTaskSpec, KnowledgeSnippet, SupportTicket TASK = SupportTaskSpec( task_id="billing_refund_easy", difficulty="easy", title="Duplicate charge refund triage", objective=( "Triage a duplicate-charge billing ticket, send the correct customer response, " "and close the case only if no further customer information is required." ), ticket=SupportTicket( customer_name="Riya Shah", customer_tier="pro", company="PixelNorth Studio", subject="Charged twice after I canceled", body=( "I canceled our Pro annual workspace yesterday, but my card was charged again " "this morning and I still see the old invoice. We only had one workspace, " "so this looks like a duplicate charge. Please fix it quickly." ), region="ap-south-1", affected_users=12, sla_minutes_remaining=240, ), knowledge_base=( KnowledgeSnippet( article_id="kb-refund-dup", title="Refund duplicate charges", content=( "If a customer is double-charged, verify the duplicate invoice IDs, refund the extra charge, " "and send a confirmation summarizing the refund amount and timeline." ), ), KnowledgeSnippet( article_id="kb-pro-refund-policy", title="Pro tier refund policy", content=( "Pro annual refunds are prorated to the current billing month; processing takes 5-7 business days. " "Provide the refund reference ID in your reply." ), ), ), gold_queue="billing_ops", gold_priority="high", gold_issue_type="duplicate_charge", gold_status="resolved", gold_resolution_code="refund_processed", required_requested_fields=("invoice_ids",), required_reply_markers=( ("refund", "processed"), ("reference", "id"), ("timeline",), ), required_note_markers=(("duplicate charge",), ("refund issued",)), risk_flags=("sla_breach", "finance_close_risk"), follow_up_outcome="complete", follow_up_message="Customer confirms the refund hit their card.", follow_up_provided_fields=("refund_reference",), follow_up_wrong_fields=(), sla_step_cost=12, over_escalation_queues=(), under_escalation_deadline_step=None, max_steps=6, )