#!/usr/bin/env python3
import argparse,json
SCENARIOS={
 'healthy':{"metrics":{"p95_ttft_s":.8,"queue_depth":3,"error_rate":.002},"spans":[('gateway',80,'ok'),('queue',90,'ok'),('inference',520,'ok')],"diagnosis":"healthy"},
 'queue-spike':{"metrics":{"p95_ttft_s":4.1,"queue_depth":72,"error_rate":.005},"spans":[('gateway',70,'ok'),('queue',3900,'warn'),('inference',550,'ok')],"diagnosis":"queue_pressure"},
 'provider-timeout':{"metrics":{"p95_ttft_s":2.7,"queue_depth":5,"error_rate":.086},"spans":[('gateway',8080,'error'),('provider',7900,'error')],"diagnosis":"provider_timeout"},
}
def run(name):
    d=SCENARIOS[name]; trace='trace-7f2a'
    print(json.dumps({"type":"metrics","scenario":name,**d['metrics']},sort_keys=True))
    for span,dur,status in d['spans']:
        print(json.dumps({"type":"span","trace_id":trace,"span":span,"duration_ms":dur,"status":status},sort_keys=True))
    if name=='provider-timeout': print(json.dumps({"type":"event","trace_id":trace,"event":"provider_timeout","severity":"error"},sort_keys=True))
    print(f"diagnosis={d['diagnosis']}")
def main():
    ap=argparse.ArgumentParser(); ap.add_argument('scenario',choices=SCENARIOS,nargs='?',default='healthy'); a=ap.parse_args(); run(a.scenario)
if __name__=='__main__': main()
