diff --git a/services/web-ui/public/jobs.html b/services/web-ui/public/jobs.html
index 4b61829..6f142fd 100644
--- a/services/web-ui/public/jobs.html
+++ b/services/web-ui/public/jobs.html
@@ -670,6 +670,10 @@ function renderRow(job) {
const dur = formatDuration(job.started_at, job.completed_at || job.failed_at);
+ const retryBtn = (job.status === 'failed' && job.asset_id)
+ ? ``
+ : '';
+
tr.innerHTML = `
${escHtml((job.type || 'conform').toUpperCase())} |
@@ -690,6 +694,7 @@ function renderRow(job) {
| ${dur} |
+ ${retryBtn}
| `;
@@ -708,6 +713,17 @@ async function killJob(jobId, ev) {
}
}
+async function retryJob(assetId, ev) {
+ ev.stopPropagation();
+ try {
+ await api('/assets/' + encodeURIComponent(assetId) + '/retry', { method: 'POST' });
+ toast('Job re-queued — processing will restart shortly.');
+ loadJobs();
+ } catch (e) {
+ showError('Retry failed: ' + e.message);
+ }
+}
+
function statusBadge(status) {
const map = {
active: 'Active',
@@ -792,6 +808,13 @@ function openDetail(jobId) {
+ ${job.status === 'failed' && job.asset_id ? `
+
+
+
` : ''}
+
${job.error ? `