Show job offer posting date (anzeige_datum) alongside ingestion date

- Add anzeige_datum DATE column to jobangebote (with ALTER TABLE migration
  for pre-existing tables) — the original posting date supplied by the
  third party
- Accept anzeige_datum in POST /api/v1/joboffers (create + upsert) and
  document it in the OpenAPI spec
- Render both on /jobangebote: "Anzeige: <anzeige_datum>" and
  "Einspielung: <created_at>"

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-03 21:46:12 +02:00
co-authored by Claude
parent 674dba40fa
commit 5d6fed7041
4 changed files with 22 additions and 7 deletions
+12 -4
View File
@@ -71,10 +71,17 @@
<span class="truncate"><%= j.quelle_url %></span>
</a>
<% } %>
<p class="text-xs text-gray-400 dark:text-gray-500 mt-2">
Eingegangen: <%= j.created_at ? new Date(j.created_at + 'Z').toLocaleString('de-DE') : '' %>
<p class="text-xs text-gray-400 dark:text-gray-500 mt-2 flex flex-wrap gap-x-3 gap-y-1">
<% if (j.anzeige_datum) { %>
<span title="Datum der eigentlichen Stellenanzeige">
Anzeige: <span class="text-gray-500 dark:text-gray-400"><%= new Date(j.anzeige_datum).toLocaleDateString('de-DE') %></span>
</span>
<% } %>
<span title="Wann das Angebot über die REST-API eingespielt wurde">
Einspielung: <span class="text-gray-500 dark:text-gray-400"><%= j.created_at ? new Date(j.created_at + 'Z').toLocaleString('de-DE') : '' %></span>
</span>
<% if (j.verknuepfte_bewerbung_id) { %>
· <a href="/bewerbung/<%= j.verknuepfte_bewerbung_id %>" class="text-blue-600 dark:text-blue-400 hover:underline">Bewerbung #<%= j.verknuepfte_bewerbung_id %></a>
<span>· <a href="/bewerbung/<%= j.verknuepfte_bewerbung_id %>" class="text-blue-600 dark:text-blue-400 hover:underline">Bewerbung #<%= j.verknuepfte_bewerbung_id %></a></span>
<% } %>
</p>
</div>
@@ -143,7 +150,8 @@
"gehalt": "55.000 €",
"beschreibung": "…",
"quelle_url": "https://acme.example/job/12345",
"art": "Online-Portal"
"art": "Online-Portal",
"anzeige_datum": "2026-07-01"
}'</code></pre>
<p class="text-xs">Wiederholtes Senden mit derselben <code>quelle</code> + <code>external_id</code> aktualisiert das Angebot (Upsert). Die Doku/Swagger-UI liegt unter <a href="/swagger" class="text-blue-600 dark:text-blue-400 hover:underline">/swagger</a>.</p>
</div>