fix(jobbank-search)!: emit deadline as YYYY-MM-DD in search output

The feed's DD.MM.YYYY parenthetical passed through raw - documented, but
contradicting the /scrape contract, every other portal, and this CLI's
own detail command for the same job, and ambiguous to a date parser
(01.09.2026: 1 Sep or 9 Jan). The known shape converts to ISO; løbende
still maps to null; unrecognized shapes pass through for /rank's
defensive handling. Breaking for anything parsing the old format - the
README's own search example already showed ISO. Review finding F5
(2026-08-19), decision approved by Mads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Mads Lorentzen
2026-08-19 20:31:20 +02:00
co-authored by Claude Opus 5
parent b067928da7
commit 48965960d3
5 changed files with 24 additions and 4 deletions
@@ -135,7 +135,11 @@ export function parseRssDescription(desc: string): ParsedDescription {
if (deadlineStr.toLowerCase() === "løbende" || deadlineStr.toLowerCase() === "lobende") {
deadline = null
} else {
deadline = deadlineStr
// The feed writes DD.MM.YYYY; the /scrape contract (and this CLI's own
// detail command) use YYYY-MM-DD. Convert the known shape; anything else
// passes through so an unexpected value stays visible downstream.
const dmy = deadlineStr.match(/^(\d{2})\.(\d{2})\.(\d{4})$/)
deadline = dmy ? `${dmy[3]}-${dmy[2]}-${dmy[1]}` : deadlineStr
}
// Remove the deadline portion from rest
rest = rest.substring(0, deadlineMatch.index).trim()