CV date format MM/YYYY instead of MM.YYYY
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+17
-9
@@ -158,13 +158,13 @@ async function generateTailoredTexts({ job, basisDokumente, settings, llmNotizen
|
|||||||
` "lebenslauf": {\n` +
|
` "lebenslauf": {\n` +
|
||||||
` "profil": "2–3 Sätze Kurzprofil, zugeschnitten auf die Zielstelle",\n` +
|
` "profil": "2–3 Sätze Kurzprofil, zugeschnitten auf die Zielstelle",\n` +
|
||||||
` "berufserfahrung": [\n` +
|
` "berufserfahrung": [\n` +
|
||||||
` { "zeitraum": "02.2025 – heute", "titel": "Jobtitel", "firma": "Arbeitgeber, Ort", "punkte": ["Aufgabe/Erfolg 1", "Aufgabe/Erfolg 2"] }\n` +
|
` { "zeitraum": "02/2025 – heute", "titel": "Jobtitel", "firma": "Arbeitgeber, Ort", "punkte": ["Aufgabe/Erfolg 1", "Aufgabe/Erfolg 2"] }\n` +
|
||||||
` ],\n` +
|
` ],\n` +
|
||||||
` "studium": [\n` +
|
` "studium": [\n` +
|
||||||
` { "zeitraum": "10.2010 – 03.2017", "abschluss": "Studiengang", "institution": "Hochschule", "zusatz": "" }\n` +
|
` { "zeitraum": "10/2010 – 03/2017", "abschluss": "Studiengang", "institution": "Hochschule", "zusatz": "" }\n` +
|
||||||
` ],\n` +
|
` ],\n` +
|
||||||
` "berufsausbildung": [\n` +
|
` "berufsausbildung": [\n` +
|
||||||
` { "zeitraum": "08.2006 – 07.2009", "abschluss": "Ausbildungsberuf / Abschluss", "institution": "Betrieb/Berufskolleg", "zusatz": "" }\n` +
|
` { "zeitraum": "08/2006 – 07/2009", "abschluss": "Ausbildungsberuf / Abschluss", "institution": "Betrieb/Berufskolleg", "zusatz": "" }\n` +
|
||||||
` ],\n` +
|
` ],\n` +
|
||||||
` "weiterbildungen": [],\n` +
|
` "weiterbildungen": [],\n` +
|
||||||
` "kenntnisse": ["Fähigkeit 1", "Fähigkeit 2"],\n` +
|
` "kenntnisse": ["Fähigkeit 1", "Fähigkeit 2"],\n` +
|
||||||
@@ -241,7 +241,7 @@ async function generateTailoredTexts({ job, basisDokumente, settings, llmNotizen
|
|||||||
`- Keine negativen/entwertenden Vermerke: NIEMALS "nicht beendet", "abgebrochen", "ohne Abschluss", ` +
|
`- Keine negativen/entwertenden Vermerke: NIEMALS "nicht beendet", "abgebrochen", "ohne Abschluss", ` +
|
||||||
`"arbeitslos", "arbeitssuchend", "gekündigt" o. Ä. Lasse "zusatz" in solchen Fällen leer und nenne nur ` +
|
`"arbeitslos", "arbeitssuchend", "gekündigt" o. Ä. Lasse "zusatz" in solchen Fällen leer und nenne nur ` +
|
||||||
`Zeitraum, Bezeichnung und Institution neutral.\n` +
|
`Zeitraum, Bezeichnung und Institution neutral.\n` +
|
||||||
`- Sachlich, positiv, konsistente Datumsformate (MM.JJJJ).\n\n` +
|
`- Sachlich, positiv, konsistente Datumsformate (MM/YYYY), z. B. "02/2025 – heute".\n\n` +
|
||||||
`Leere Felder als leerer String bzw. leeres Array. Antworte AUSSCHLIESSLICH mit dem ` +
|
`Leere Felder als leerer String bzw. leeres Array. Antworte AUSSCHLIESSLICH mit dem ` +
|
||||||
`JSON-Objekt, ohne Markdown, ohne Code-Fences, ohne weiteren Text.`;
|
`JSON-Objekt, ohne Markdown, ohne Code-Fences, ohne weiteren Text.`;
|
||||||
|
|
||||||
@@ -313,15 +313,23 @@ function pickArray(obj, keys) {
|
|||||||
for (const k of keys) if (Array.isArray(obj[k]) && obj[k].length) return obj[k];
|
for (const k of keys) if (Array.isArray(obj[k]) && obj[k].length) return obj[k];
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
// Render CV date ranges with a slash separator (MM/YYYY) regardless of how
|
||||||
|
// the model formatted them, so the timeline reads consistently. Only the
|
||||||
|
// month.year pattern is rewritten; year-only entries and "heute" stay as-is.
|
||||||
|
function normalizeDate(s) {
|
||||||
|
return String(s || '').replace(/\b(\d{1,2})\.(\d{4})\b/g, (_, m, y) => String(m).padStart(2, '0') + '/' + y);
|
||||||
|
}
|
||||||
|
|
||||||
function toZeitraum(v) {
|
function toZeitraum(v) {
|
||||||
if (!v) return '';
|
if (!v) return '';
|
||||||
if (typeof v === 'string') return v.trim();
|
let out;
|
||||||
if (typeof v === 'object') {
|
if (typeof v === 'string') out = v.trim();
|
||||||
|
else if (typeof v === 'object') {
|
||||||
const von = str(pick(v, ['von', 'from', 'start', 'beginn']));
|
const von = str(pick(v, ['von', 'from', 'start', 'beginn']));
|
||||||
const bis = str(pick(v, ['bis', 'to', 'ende', 'end']));
|
const bis = str(pick(v, ['bis', 'to', 'ende', 'end']));
|
||||||
return [von, bis].filter(Boolean).join(' – ');
|
out = [von, bis].filter(Boolean).join(' – ');
|
||||||
}
|
} else out = str(v);
|
||||||
return str(v);
|
return normalizeDate(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
// After an Anrede ending in a comma, the body continues the sentence, so its
|
// After an Anrede ending in a comma, the body continues the sentence, so its
|
||||||
|
|||||||
Reference in New Issue
Block a user