Created
September 2, 2026 20:31
-
-
Save fuyi/3e630a9fe2dc1468014bcf3363f6a3b7 to your computer and use it in GitHub Desktop.
simple_marts Gantt chart — 44 models, ~15 min wall-clock (dev_yi2 schema)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>simple_marts Gantt</title> | |
| <style> | |
| body { font-family: monospace; background: #1a1a2e; color: #eee; margin: 20px; } | |
| h2 { color: #a0c4ff; margin-bottom: 4px; } | |
| .subtitle { color: #666; font-size: 12px; margin-bottom: 16px; } | |
| .row { display: flex; align-items: center; height: 22px; margin: 2px 0; } | |
| .label { width: 330px; font-size: 11px; text-align: right; padding-right: 8px; flex-shrink: 0; overflow: hidden; white-space: nowrap; color: #ccc; } | |
| .timeline { position: relative; flex: 1; height: 18px; min-width: 1400px; } | |
| .bar { position: absolute; height: 16px; border-radius: 3px; top: 1px; opacity: 0.88; cursor: default; } | |
| .bar:hover::after { content: attr(title); position: absolute; bottom: 20px; left: 0; background: #222; color: #fff; padding: 4px 8px; border-radius: 4px; font-size: 11px; white-space: nowrap; z-index: 10; } | |
| .ok { background: #4cc9f0; } | |
| .error { background: #ff4444; } | |
| </style> | |
| </head> | |
| <body> | |
| <h2>simple_marts — per-model execution</h2> | |
| <div class="subtitle">44 models · ~15 min wall-clock · 2026-09-02 17:56 UTC</div> | |
| <div id="chart"></div> | |
| <p style="font-size:11px;color:#666"> | |
| <span style="color:#4cc9f0">■</span> success | |
| <span style="color:#ff4444">■</span> error | |
| </p> | |
| <script> | |
| const data = [{"model": "chatboi_user", "start": "2026-09-02T17:56:19.220000+00:00", "end": "2026-09-02T17:56:22+00:00", "dur": 2.78, "status": "ok"}, {"model": "int_coaching_batch_evaluation", "start": "2026-09-02T17:56:19.460000+00:00", "end": "2026-09-02T17:56:50+00:00", "dur": 30.54, "status": "ok"}, {"model": "int_lead_field_definition", "start": "2026-09-02T17:56:19.610000+00:00", "end": "2026-09-02T17:56:21+00:00", "dur": 1.39, "status": "ok"}, {"model": "aa_scorecard_traffic", "start": "2026-09-02T17:56:19.860000+00:00", "end": "2026-09-02T17:56:23+00:00", "dur": 3.14, "status": "ok"}, {"model": "int_qc_item", "start": "2026-09-02T17:56:19.890000+00:00", "end": "2026-09-02T17:56:46+00:00", "dur": 26.11, "status": "ok"}, {"model": "coaching_session_analysis_question", "start": "2026-09-02T17:56:19.910000+00:00", "end": "2026-09-02T17:56:23+00:00", "dur": 3.09, "status": "ok"}, {"model": "int_coaching_transcript", "start": "2026-09-02T17:56:19.990000+00:00", "end": "2026-09-02T18:07:20+00:00", "dur": 660.01, "status": "ok"}, {"model": "int_coaching_session_profile", "start": "2026-09-02T17:56:20+00:00", "end": "2026-09-02T17:56:35+00:00", "dur": 15.0, "status": "ok"}, {"model": "int_qc_item_bullet", "start": "2026-09-02T17:56:21.210000+00:00", "end": "2026-09-02T17:57:21+00:00", "dur": 59.79, "status": "ok"}, {"model": "int_session_field_wo_sideload", "start": "2026-09-02T17:56:22.860000+00:00", "end": "2026-09-02T17:56:46+00:00", "dur": 23.14, "status": "ok"}, {"model": "int_qc_item_session", "start": "2026-09-02T17:56:22.980000+00:00", "end": "2026-09-02T17:56:41+00:00", "dur": 18.02, "status": "ok"}, {"model": "int_session_field_definition", "start": "2026-09-02T17:56:23.250000+00:00", "end": "2026-09-02T17:56:25+00:00", "dur": 1.75, "status": "ok"}, {"model": "lead", "start": "2026-09-02T17:56:24.750000+00:00", "end": "2026-09-02T17:56:38+00:00", "dur": 13.25, "status": "ok"}, {"model": "lead_external_identifier", "start": "2026-09-02T17:56:34.970000+00:00", "end": "2026-09-02T17:57:03+00:00", "dur": 28.03, "status": "ok"}, {"model": "lead_field", "start": "2026-09-02T17:56:37.800000+00:00", "end": "2026-09-02T17:56:59+00:00", "dur": 21.2, "status": "ok"}, {"model": "lead_field_log", "start": "2026-09-02T17:56:40.360000+00:00", "end": "2026-09-02T17:57:01+00:00", "dur": 20.64, "status": "ok"}, {"model": "lead_session", "start": "2026-09-02T17:56:45.470000+00:00", "end": "2026-09-02T17:57:24+00:00", "dur": 38.53, "status": "ok"}, {"model": "aa_chatboi_user", "start": "2026-09-02T17:56:45.970000+00:00", "end": "2026-09-02T17:56:48+00:00", "dur": 2.03, "status": "ok"}, {"model": "aa_thread", "start": "2026-09-02T17:56:47.680000+00:00", "end": "2026-09-02T17:56:51+00:00", "dur": 3.32, "status": "ok"}, {"model": "chatboi_team_membership", "start": "2026-09-02T17:56:50.470000+00:00", "end": "2026-09-02T17:56:53+00:00", "dur": 2.53, "status": "ok"}, {"model": "coaching_session_analysis", "start": "2026-09-02T17:56:51.200000+00:00", "end": "2026-09-02T17:56:53+00:00", "dur": 1.8, "status": "ok"}, {"model": "coaching_v2_report", "start": "2026-09-02T17:56:52.320000+00:00", "end": "2026-09-02T17:56:54+00:00", "dur": 1.68, "status": "ok"}, {"model": "insight", "start": "2026-09-02T17:56:53.550000+00:00", "end": "2026-09-02T17:56:57+00:00", "dur": 3.45, "status": "ok"}, {"model": "revenue_mining_list", "start": "2026-09-02T17:56:54.470000+00:00", "end": "2026-09-02T17:56:59+00:00", "dur": 4.53, "status": "ok"}, {"model": "routine_v3", "start": "2026-09-02T17:56:56.600000+00:00", "end": "2026-09-02T17:56:59+00:00", "dur": 2.4, "status": "ok"}, {"model": "aa_message", "start": "2026-09-02T17:56:58.740000+00:00", "end": "2026-09-02T17:57:14+00:00", "dur": 15.26, "status": "ok"}, {"model": "coaching_report", "start": "2026-09-02T17:56:59.010000+00:00", "end": "2026-09-02T17:57:04+00:00", "dur": 4.99, "status": "ok"}, {"model": "aa_chatboi_team_membership", "start": "2026-09-02T17:56:59.600000+00:00", "end": "2026-09-02T17:57:02+00:00", "dur": 2.4, "status": "ok"}, {"model": "int_session_team_ids", "start": "2026-09-02T17:57:01.390000+00:00", "end": "2026-09-02T17:57:03+00:00", "dur": 1.61, "status": "ok"}, {"model": "execution_v3", "start": "2026-09-02T17:57:02.240000+00:00", "end": "2026-09-02T17:57:05+00:00", "dur": 2.76, "status": "ok"}, {"model": "aa_lead_field_info", "start": "2026-09-02T17:57:02.340000+00:00", "end": "2026-09-02T17:57:05+00:00", "dur": 2.66, "status": "ok"}, {"model": "run_v3", "start": "2026-09-02T17:57:02.340000+00:00", "end": "2026-09-02T17:57:33+00:00", "dur": 30.66, "status": "ok"}, {"model": "lead_opp_field", "start": "2026-09-02T17:57:04.280000+00:00", "end": "2026-09-02T17:57:13+00:00", "dur": 8.72, "status": "ok"}, {"model": "aa_coaching_report", "start": "2026-09-02T17:57:05.030000+00:00", "end": "2026-09-02T17:57:10+00:00", "dur": 4.97, "status": "ok"}, {"model": "daily_team_coaching_summary", "start": "2026-09-02T17:57:05.850000+00:00", "end": "2026-09-02T17:57:08+00:00", "dur": 2.15, "status": "ok"}, {"model": "coaching_session", "start": "2026-09-02T18:07:19.600000+00:00", "end": "2026-09-02T18:07:26+00:00", "dur": 6.4, "status": "ok"}, {"model": "aa_coaching_session", "start": "2026-09-02T18:07:26.040000+00:00", "end": "2026-09-02T18:07:31+00:00", "dur": 4.96, "status": "ok"}, {"model": "revenue_mining_item", "start": "2026-09-02T18:07:26.530000+00:00", "end": "2026-09-02T18:07:30+00:00", "dur": 3.47, "status": "ok"}, {"model": "int_axo_disbursements", "start": "2026-09-02T18:07:26.540000+00:00", "end": "2026-09-02T18:08:03+00:00", "dur": 36.46, "status": "ok"}, {"model": "revenue_mining_item_field", "start": "2026-09-02T18:07:29.420000+00:00", "end": "2026-09-02T18:07:34+00:00", "dur": 4.58, "status": "ok"}, {"model": "revenue_mining_assignment", "start": "2026-09-02T18:07:29.730000+00:00", "end": "2026-09-02T18:07:33+00:00", "dur": 3.27, "status": "ok"}, {"model": "int_sideloaded_session_field", "start": "2026-09-02T18:08:02.540000+00:00", "end": "2026-09-02T18:08:04+00:00", "dur": 1.46, "status": "ok"}, {"model": "int_session_field", "start": "2026-09-02T18:08:04.270000+00:00", "end": "2026-09-02T18:11:33+00:00", "dur": 208.73, "status": "ok"}, {"model": "int_session_field_blob", "start": "2026-09-02T18:11:33.080000+00:00", "end": "2026-09-02T18:11:48+00:00", "dur": 14.92, "status": "ok"}]; | |
| data.sort((a,b) => new Date(a.start) - new Date(b.start)); | |
| const runStart = new Date(data[0].start).getTime(); | |
| const runEnd = Math.max(...data.map(d => new Date(d.end).getTime())); | |
| const totalMs = runEnd - runStart; | |
| const PX = 1400 / (totalMs / 1000); | |
| const chart = document.getElementById('chart'); | |
| // Header ticks every 5 min | |
| const hdr = document.createElement('div'); | |
| hdr.style.cssText = 'display:flex;margin-left:338px;position:relative;height:20px;margin-bottom:4px;min-width:1400px;'; | |
| for (let s = 0; s <= totalMs/1000; s += 300) { | |
| const t = document.createElement('span'); | |
| t.style.cssText = `position:absolute;left:${s*PX}px;font-size:10px;color:#555;`; | |
| t.textContent = Math.round(s/60) + 'm'; | |
| hdr.appendChild(t); | |
| } | |
| chart.appendChild(hdr); | |
| data.forEach(d => { | |
| const start = new Date(d.start).getTime(); | |
| const end = new Date(d.end).getTime(); | |
| const left = ((start - runStart)/1000) * PX; | |
| const width = Math.max(3, ((end-start)/1000) * PX); | |
| const row = document.createElement('div'); | |
| row.className = 'row'; | |
| const lbl = document.createElement('div'); | |
| lbl.className = 'label'; | |
| lbl.textContent = d.model; | |
| lbl.title = d.model; | |
| const tl = document.createElement('div'); | |
| tl.className = 'timeline'; | |
| const bar = document.createElement('div'); | |
| bar.className = 'bar ' + d.status; | |
| bar.style.left = left + 'px'; | |
| bar.style.width = width + 'px'; | |
| bar.title = d.model + ' — ' + d.dur.toFixed(1) + 's (' + d.status + ')'; | |
| tl.appendChild(bar); | |
| row.appendChild(lbl); | |
| row.appendChild(tl); | |
| chart.appendChild(row); | |
| }); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment