File size: 2,024 Bytes
b0bcfd5 e3566c9 b0bcfd5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | {% extends "base.html" %}
{% block title %}AI Medical Intelligence Pipeline — Execution Logs{% endblock %}
{% block content %}
<section class="page-header">
<h1>Execution Logs</h1>
<p class="muted">
Inference execution traces recorded by <code>blackbox-recorder</code>.
Each upload generates a human-readable <strong>.txt</strong> report and
a machine-parseable <strong>.json</strong> trace.
</p>
</section>
{% if logs %}
<div class="log-summary">
<span class="badge">{{ logs | length }} trace{{ 's' if logs | length != 1 }}</span>
</div>
<table class="data-table logs-table">
<thead>
<tr>
<th>#</th>
<th>Timestamp</th>
<th>Image ID</th>
<th>Size (KB)</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for entry in logs %}
<tr>
<td>{{ loop.index }}</td>
<td>{{ entry.timestamp }}</td>
<td><code>{{ entry.image_id }}</code></td>
<td>{{ entry.size_kb }}</td>
<td class="log-actions">
{% if entry.txt_file %}
<a href="{{ url_for('serve_log', filename=entry.txt_file) }}"
target="_blank" class="btn btn-sm" title="View text report">
TXT
</a>
{% endif %}
{% if entry.json_file %}
<a href="{{ url_for('serve_log', filename=entry.json_file) }}"
target="_blank" class="btn btn-sm btn-outline" title="View JSON trace">
JSON
</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<div class="empty-state">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none"
stroke="var(--muted)" stroke-width="1.2">
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" />
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" />
</svg>
<h3>No execution logs yet</h3>
<p class="muted">
Upload and screen a DICOM file to generate the first inference trace.
</p>
<a href="{{ url_for('upload') }}" class="btn">Upload a Scan</a>
</div>
{% endif %}
{% endblock %}
|