Jobsuche: Berufsbezeichnungen steuern die Suche, nicht mehr Faehigkeiten
Der Feinschliff schlug per KI Technologien vor ("Proxmox", "Rechenzentrum")
und verbot Rollenbezeichnungen ausdruecklich - die sollte die Suche selbst
aus dem Lebenslauf ableiten. Das war schief: Welche Anzeigen ueberhaupt
gefunden werden, entscheidet die Suchanfrage, also der Stellentitel.
Technologien gewichten nur, was schon da ist. Damit schlug die KI genau das
vor, was der Such-Agent ohnehin selbst ableitet, waehrend die eine Sache,
die der Nutzer weder sieht noch steuern kann - unter welchen Titeln gesucht
wird -, bei jedem Lauf neu improvisiert wurde. Faellt "Fachinformatiker
Systemintegration" weg, merkt das niemand; es kommt nur wenig zurueck.
- Neues Profilfeld berufsbezeichnungen: die KI schlaegt es vor, der Nutzer
editiert es, der Such-Agent fragt jeden Titel einzeln ab.
- zusatz_begriffe bleibt, aber als Kontext (Branche, Umfeld, Arbeitszeit),
nicht als Stellentitel; ausschluesse unveraendert.
- Leeres Feld = altes Verhalten (Titel aus dem Lebenslauf), niemandes
Profil aendert sich durch das Update.
- Spalte wird fuer bestehende Installationen nachgezogen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -916,14 +916,15 @@ async function loadSuchprofil(userId) {
|
||||
async function saveSuchprofil(userId, profil) {
|
||||
const r = suchprofil.toRow(profil);
|
||||
await dbRun(
|
||||
`INSERT INTO suchprofil (user_id, aktiv, modus, staedte, zusatz_begriffe, ausschluesse, zeitplan_tage, zeitplan_zeit, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
|
||||
`INSERT INTO suchprofil (user_id, aktiv, modus, staedte, berufsbezeichnungen, zusatz_begriffe, ausschluesse, zeitplan_tage, zeitplan_zeit, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT(user_id) DO UPDATE SET
|
||||
aktiv = excluded.aktiv, modus = excluded.modus, staedte = excluded.staedte,
|
||||
berufsbezeichnungen = excluded.berufsbezeichnungen,
|
||||
zusatz_begriffe = excluded.zusatz_begriffe, ausschluesse = excluded.ausschluesse,
|
||||
zeitplan_tage = excluded.zeitplan_tage, zeitplan_zeit = excluded.zeitplan_zeit,
|
||||
updated_at = CURRENT_TIMESTAMP`,
|
||||
[userId, r.aktiv, r.modus, r.staedte, r.zusatz_begriffe, r.ausschluesse, r.zeitplan_tage, r.zeitplan_zeit]
|
||||
[userId, r.aktiv, r.modus, r.staedte, r.berufsbezeichnungen, r.zusatz_begriffe, r.ausschluesse, r.zeitplan_tage, r.zeitplan_zeit]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1525,14 +1526,16 @@ async function initializeDatabase() {
|
||||
`);
|
||||
|
||||
// Job-search profile (one row per user; a missing row = no search configured).
|
||||
// The user sets *where* (Städte/Modus) and the guard rails; the roles and
|
||||
// buzzwords are derived from their Lebenslauf at run time — see lib/suchprofil.
|
||||
// The user sets *where* (Städte/Modus), *unter welchen Titeln* gesucht wird
|
||||
// (berufsbezeichnungen) und die Leitplanken; Technologien/Buzzwords leitet die
|
||||
// Suche weiter aus dem Lebenslauf ab — siehe lib/suchprofil.
|
||||
await exec(`
|
||||
CREATE TABLE IF NOT EXISTS suchprofil (
|
||||
user_id INTEGER PRIMARY KEY,
|
||||
aktiv INTEGER NOT NULL DEFAULT 0,
|
||||
modus TEXT NOT NULL DEFAULT 'regional',
|
||||
staedte TEXT NOT NULL DEFAULT '[]',
|
||||
berufsbezeichnungen TEXT DEFAULT '',
|
||||
zusatz_begriffe TEXT DEFAULT '',
|
||||
ausschluesse TEXT DEFAULT '',
|
||||
zeitplan_tage TEXT DEFAULT '1,2,3,4,5',
|
||||
@@ -1541,6 +1544,13 @@ async function initializeDatabase() {
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
)
|
||||
`);
|
||||
// Bestehende Installationen: die Spalte kam nach dem CREATE TABLE oben dazu.
|
||||
// Leer heißt „wie bisher" — die Suche leitet die Rollen dann weiter selbst aus
|
||||
// dem Lebenslauf ab, niemandes Profil ändert sich durch das Update.
|
||||
const suchprofilSpalten = await dbAll('PRAGMA table_info(suchprofil)');
|
||||
if (!suchprofilSpalten.some((s) => s.name === 'berufsbezeichnungen')) {
|
||||
await exec("ALTER TABLE suchprofil ADD COLUMN berufsbezeichnungen TEXT DEFAULT ''");
|
||||
}
|
||||
|
||||
// Queue + history of search runs. The app only ever *enqueues* (status
|
||||
// 'angefordert'); the host-side runner (bin/jobsuche-runner.sh) picks runs up,
|
||||
|
||||
Reference in New Issue
Block a user