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>
- 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>
- 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>
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>
JWT-Laufzeit (JWT_EXPIRES_IN) standardmaessig auf 7d gesetzt, damit
Benutzer nicht mehr taeglich neu anmelden muessen. Doku (Betrieb,
Benutzeranleitung, Glossar) und .env.example angepasst.
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>