102 lines
3.6 KiB
Plaintext
102 lines
3.6 KiB
Plaintext
digraph handover_agent {
|
||
rankdir=TB
|
||
bgcolor="#0a0e17"
|
||
fontname="Helvetica"
|
||
node [fontname="Helvetica" fontsize=10 style=filled color="#1e2a4a" fontcolor="#e8eaf0"]
|
||
edge [fontname="Helvetica" fontsize=9 fontcolor="#8892a8" color="#4a5568"]
|
||
|
||
label="Shift Handover Agent"
|
||
labelloc=t
|
||
fontsize=14
|
||
fontcolor="#0066ff"
|
||
|
||
start [label="START" fillcolor="#0066ff" shape=circle fontcolor="white" width=0.5]
|
||
end_done [label="END" fillcolor="#00c853" shape=doublecircle fontcolor="white" width=0.5]
|
||
|
||
subgraph cluster_gather {
|
||
label="Node: gather_all (parallel across 5 hubs)"
|
||
color="#0066ff"
|
||
fontcolor="#0066ff"
|
||
|
||
gather_point [label="" shape=point width=0]
|
||
|
||
subgraph cluster_per_hub {
|
||
label="Per hub (ORD, EWR, IAH, SFO, DEN)"
|
||
color="#1e2a4a"
|
||
fontcolor="#4a5568"
|
||
h1 [label="get_irregular_ops\n[shared]" fillcolor="#0d1a33" shape=box]
|
||
h2 [label="get_airport_status\n[shared] ★ LIVE" fillcolor="#0d2a0d" shape=box fontcolor="#00c853"]
|
||
h3 [label="get_pending_rebookings\n[ops]" fillcolor="#0d1a33" shape=box]
|
||
}
|
||
|
||
subgraph cluster_global {
|
||
label="Global"
|
||
color="#1e2a4a"
|
||
fontcolor="#4a5568"
|
||
g1 [label="get_hub_forecasts\n[shared] ★ LIVE" fillcolor="#0d2a0d" shape=box fontcolor="#00c853"]
|
||
g2 [label="get_crew_duty_status\n[ops]" fillcolor="#0d1a33" shape=box]
|
||
g3 [label="get_maintenance_flags\n[shared]" fillcolor="#0d1a33" shape=box]
|
||
}
|
||
}
|
||
|
||
subgraph cluster_triage {
|
||
label="Node: triage"
|
||
color="#ff3d00"
|
||
fontcolor="#ff3d00"
|
||
|
||
triage [label="Score each issue:\nseverity × time_sensitivity\n\nCategorize:\nIMMEDIATE (score > 50)\nMONITOR (score > 20)\nFYI (rest)" fillcolor="#121829" shape=box]
|
||
|
||
subgraph cluster_items {
|
||
rank=same
|
||
color="#1e2a4a"
|
||
fontcolor="#4a5568"
|
||
label="Triage Categories"
|
||
imm [label="IMMEDIATE\n▶ crew limits\n▶ cancellations\n▶ ground stops" fillcolor="#3a0d0d" shape=box fontcolor="#ff3d00"]
|
||
mon [label="MONITOR\n⚠ weather risk\n⚠ GDP active\n⚠ MEL restrictions" fillcolor="#3a2a0d" shape=box fontcolor="#ffc107"]
|
||
fyi [label="FYI\nℹ nominal hubs\nℹ resolved items" fillcolor="#1a1a2a" shape=box fontcolor="#8892a8"]
|
||
}
|
||
}
|
||
|
||
subgraph cluster_synth {
|
||
label="Node: synthesize"
|
||
color="#1e2a4a"
|
||
fontcolor="#8892a8"
|
||
synth [label="generate_narrative()\n[ops server]\n\nStructured brief:\nheader → immediate → monitor → fyi" fillcolor="#121829" shape=box]
|
||
}
|
||
|
||
subgraph cluster_format {
|
||
label="Node: format_output"
|
||
color="#1e2a4a"
|
||
fontcolor="#8892a8"
|
||
format [label="Structure brief JSON\nStore as ops://handover/latest\nRecord timing" fillcolor="#121829" shape=box]
|
||
}
|
||
|
||
// Flow
|
||
start -> gather_point
|
||
|
||
gather_point -> h1 [color="#0066ff"]
|
||
gather_point -> h2 [color="#0066ff"]
|
||
gather_point -> h3 [color="#0066ff"]
|
||
gather_point -> g1 [color="#0066ff"]
|
||
gather_point -> g2 [color="#0066ff"]
|
||
gather_point -> g3 [color="#0066ff"]
|
||
|
||
h1 -> triage [color="#4a5568"]
|
||
h2 -> triage [color="#4a5568"]
|
||
h3 -> triage [color="#4a5568"]
|
||
g1 -> triage [color="#4a5568"]
|
||
g2 -> triage [color="#4a5568"]
|
||
g3 -> triage [color="#4a5568"]
|
||
|
||
triage -> imm [style=invis]
|
||
triage -> mon [style=invis]
|
||
triage -> fyi [style=invis]
|
||
|
||
imm -> synth [color="#ff3d00"]
|
||
mon -> synth [color="#ffc107"]
|
||
fyi -> synth [color="#8892a8"]
|
||
|
||
synth -> format
|
||
format -> end_done
|
||
}
|