feat: organizer Android app and token-gated upload API
CI / lint-and-test (push) Failing after 1m18s
CI / lint-and-test (push) Failing after 1m18s
Replace Syncthing as the product upload path with a share-target app and POST /api/jobs. Web UI live-polls job progress. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+16
-2
@@ -3,8 +3,20 @@
|
||||
{% block content %}
|
||||
<p class="back-link"><a href="/">← Alle Jobs</a></p>
|
||||
|
||||
<h1>Job {{ job_id }}</h1>
|
||||
<p class="job-status status-{{ status.status }}">Status: {{ status.status or "unbekannt" }}</p>
|
||||
<div class="job-heading">
|
||||
<h1>Job {{ job_id }}</h1>
|
||||
<p class="job-status status-{{ status.status }}">
|
||||
{{ status_label(status.status) }}
|
||||
{% if status.status in ACTIVE_STATUSES %}
|
||||
· {{ stage_label(status.status, status.stage, status.progress) }}
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
{% if status.status in ACTIVE_STATUSES and status.progress and status.progress.total %}
|
||||
<div class="progress" aria-hidden="true">
|
||||
<span style="width: {{ (status.progress.current / status.progress.total * 100) | int }}%"></span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if status.error %}
|
||||
<p class="error-box">Fehler: {{ status.error }}</p>
|
||||
{% endif %}
|
||||
@@ -28,6 +40,8 @@
|
||||
<a href="/jobs/{{ job_id }}/files/{{ original_name }}" download>Download</a>
|
||||
</figcaption>
|
||||
</figure>
|
||||
{% else %}
|
||||
<p class="empty-state">Original kommt, sobald der Worker greift.</p>
|
||||
{% endif %}
|
||||
{% if has_rembg and rembg_name %}
|
||||
{% set img = img_attrs(job_id, rembg_name, sizes=PAIR_SIZES) %}
|
||||
|
||||
Reference in New Issue
Block a user