Neues Feld alarm_min_score (0-100 %): Alarm nur, wenn ein
Alarm-Schlagwort gefunden wurde und die Quote den Wert erreicht.
0 % = bei jedem Fund wie bisher.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neues Feld exclude_companies: steht ein Eintrag im Firmennamen der
Anzeige (z. B. "Hays"), verwirft der Agent sie. Beim Speichern werden
vorhandene Treffer dieser Firmen gelöscht (außer "in Bearbeitung").
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eisblau auf kaltem Weiß (hell) bzw. Winternacht (dunkel), verschneite
Berg- und Waldgrafik hinter Kopfleiste und Menü. Schneefall im Canvas
(SnowWeather) sammelt sich am unteren Rand, alle 4 Minuten räumt ein
Pflug in ICON-Gold. Canvas liegt mit z-[45] unter den Dialogen (z-50).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ersetzt die feste Auswahl bis/über 21 Tage durch zwei freie Felder,
einzeln oder kombiniert (z. B. älter 14, jünger 30). API: olderThan,
youngerThan; age=recent|old bleibt für Altaufrufe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seit dem Wegfall der Altersgrenze lieferten BA und StepStone nur die
relevantesten Anzeigen aller Jahre - fünf Läufe lang 0 neue Treffer.
- BA: erst veroeffentlichtseit=7 (bis 200), dann ohne Grenze (bis 200)
- StepStone: sort=2 Seiten 1-2 plus Relevanz Seite 1
(action=sort_publish hatte keine Wirkung)
- Dashboard liest DB-Zeitstempel als UTC (vorher 2 h zu früh)
Erster Lauf danach: 481 statt 298 Anzeigen, 40 neue Treffer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- sort + dir serverseitig für Quote, Agent, Stelle, Unternehmen, Börse,
Veröffentlicht, Status, Gefunden; leere Werte immer unten
- neue Spalte Veröffentlicht (Alter der Anzeige, Datum im Tooltip)
- Feld Sortierung bleibt als Schnellwahl
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Suche ohne 21-Tage-Grenze (BA ohne veroeffentlichtseit, Adzuna ohne
max_days_old); Einstellung Höchstalter entfällt
- Dashboard: Filter Anzeigenalter (bis/älter als 21 Tage), Sortierung
älteste Anzeige, Filter nur Alarm, Zeitraum heißt jetzt Gefunden
- Suchagent: Schlagwörter mit Alarm; Treffer mit alarm = 1 melden sich
über den AlarmWatcher (App-weit, jede Minute) mit Ton und Pop-up,
Quittieren gilt für alle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Anführungszeichen um Begriffe beim Eingeben, Speichern und Lesen
entfernen; der Agent vom 29.09. suchte nach "Interim" samt Zeichen
- Umlaute in Such-URLs umschreiben, karriere.at-404 = keine Treffer
- Filterleiste mit festen Breiten, bricht um statt überzulaufen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Eingabezeile über der Liste, mit Abstand und Knopf Hinzufügen;
Liste neueste zuerst, neue Einträge erscheinen direkt darunter
- Letzter Kontakt neuer Zeilen = heute (Ortszeit), auch serverseitig,
wenn das Feld beim Anlegen fehlt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- email als Symbol mit Adresse im Tooltip, Klick öffnet mailto:
(Spalte per migrateColumns nachgezogen)
- Löschen-Knopf am Zeilenende; Server erlaubt Löschen jetzt auch
ohne vorheriges Archivieren
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neuer Menüpunkt über Leads mit Unterpunkt Archiv.
- Tabelle Name, Funktion, Unternehmen, LinkedIn, Website, Notiz,
Letzter Kontakt, Nächster Impuls; leere Zeile unten, speichert beim
Verlassen. Links als Symbol mit URL im Tooltip.
- Nächster Impuls: Tage eingeben, Erinnerung über den ReminderWatcher
- Archivieren, Zurückholen, endgültig löschen (nur aus dem Archiv)
- Lead erstellen öffnet die Lead-Karte vorbelegt (LeadModal.initial),
danach wandert der Suspect mit lead_id ins Archiv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quelle, Schlüsselfeld in Einstellungen -> Scanner und Doku raus.
Agenten, die jooble noch gespeichert haben, bekommen es nicht mehr
angezeigt; die Pipeline überspringt unbekannte Quellen ohnehin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- BA-API v6: firma, stellenlokationen, datumErsteVeroeffentlichung,
vertragsdauer; Land kommt als OESTERREICH ohne Umlaut
- StepStone: eingebettete <style>-Blöcke vor dem Auslesen entfernen
- karriere.at: Ort ohne Komma, Art nur aus passender Pille
- Firmenabgleich: GesmbH als Rechtsform
Live auf icrm.icon-experts.de getestet: 109 Anzeigen, 71 Treffer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neuer Menüpunkt Scanner mit Dashboard und Suchagenten, Zeitplan und
API-Schlüssel unter Einstellungen -> Scanner.
- Quellen: Agentur für Arbeit (API), StepStone, karriere.at,
freelancermap (HTML) sowie Adzuna und Jooble (kostenlose Schlüssel)
- Quote = gefundene Schlagwörter, Titel zählt doppelt; keine KI
- Abgleich mit icon_companies, bekannte Firmen oben mit Abzeichen
- Zeitplan Vorgabe stündlich Mo-Fr 06-20 Uhr, einstellbar
- Sperre gegen parallele Läufe wie im perinco-Scanner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gpt-6-luna kostet rund 50 % weniger als gpt-5.6-luna. Das Modell in
icon_settings (Einstellungen -> KI) hat weiter Vorrang vor der Vorgabe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Einstellungen -> KI: statt freiem Modellnamen ein Dropdown mit den
Chat-Modellen, die der hinterlegte OpenAI-Schluessel nutzen darf.
- Backend: listAiModels() fragt OpenAI GET /v1/models, filtert auf
Chat-Modelle (gpt-*, o*, chatgpt-*; ohne Embedding/Audio/Bild/Instruct
usw.), neueste zuerst, 10 min im Speicher (Schluesselwechsel laedt neu)
- Neuer Endpunkt GET /api/ai/models (admin)
- Frontend: aktives Modell bleibt waehlbar, auch wenn nicht mehr gelistet;
Rueckfall auf Textfeld, wenn die Liste nicht abrufbar ist
- Doku: 05-ki (Modellauswahl mit Ablaufdiagramm), 10-api, 08-anleitung
Zieht ausserdem den bereits live laufenden, bisher nicht eingecheckten
Stand nach (perinco-Kontaktabgleich/MergeDialog, Projektmargen,
Whisper-Anpassungen u. a.). Repo entspricht damit icrm.icon-experts.de.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>