fix(akquise): Anbieter wieder als Freitext mit Vorschlaegen

Das Dropdown fiel dem Feld zur Last: neue Vermittler tauchen zu oft auf, als
dass das Eintragen an einer gepflegten Liste haengen sollte. Anbieter ist wieder
ein Textfeld, jetzt mit Vorschlagsliste aus den bisherigen Eintraegen - der
zuletzt benutzte zuerst.

In den Einstellungen bleiben die drei Listen "Von", "Kanal" und "Berater".
dropProviderOptions() nimmt 'provider' aus dem ENUM der Optionstabelle und
loescht die dort gepflegten Werte; die Anbieter der Akquise-Eintraege bleiben
unberuehrt, sie stehen als Text in crm_acquisitions.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-08-18 12:21:33 +02:00
co-authored by Claude Opus 5
parent 05cc261900
commit 23087a12fb
11 changed files with 135 additions and 50 deletions
+7 -5
View File
@@ -253,16 +253,18 @@ export type OpportunityViewMode = 'grid' | 'list' | 'pipeline';
/**
* Felder der Akquise, die aus einer Auswahlliste kommen. Die Werte stehen in der
* Datenbank (crm_acquisition_options) und werden unter Einstellungen -> Akquise
* gepflegt - als Freitext waeren "Hays", "hays" und "Hays AG" drei Anbieter.
* gepflegt.
*
* "Anbieter" ist ausdruecklich nicht dabei: dort wird frei getippt, mit
* Vorschlaegen aus den bisherigen Eintraegen (`AcquisitionList.provider_suggestions`).
*/
export const ACQUISITION_OPTION_FIELDS = ['sender', 'provider', 'channel', 'consultant'] as const;
export const ACQUISITION_OPTION_FIELDS = ['sender', 'channel', 'consultant'] as const;
export type AcquisitionOptionField = (typeof ACQUISITION_OPTION_FIELDS)[number];
/** Beschriftung der Felder - dieselbe in der Liste, im Formular und in den Einstellungen. */
export const ACQUISITION_FIELD_LABELS: Record<AcquisitionOptionField, string> = {
sender: 'Von',
provider: 'Anbieter',
channel: 'Kanal',
consultant: 'Berater',
};
@@ -270,7 +272,6 @@ export const ACQUISITION_FIELD_LABELS: Record<AcquisitionOptionField, string> =
/** Was in der jeweiligen Liste steht - als Hilfe in den Einstellungen. */
export const ACQUISITION_FIELD_HINTS: Record<AcquisitionOptionField, string> = {
sender: 'Personen, von denen Projekte kommen',
provider: 'Vermittler und Portale, z. B. Hays',
channel: 'Auf welchem Weg das Projekt kam',
consultant: 'Eigene Berater, für die Projekte gesucht werden',
};
@@ -284,7 +285,6 @@ export type AcquisitionOptions = Record<AcquisitionOptionField, AcquisitionOptio
export const EMPTY_ACQUISITION_OPTIONS: AcquisitionOptions = {
sender: [],
provider: [],
channel: [],
consultant: [],
};
@@ -337,6 +337,8 @@ export interface AcquisitionList {
counts: { eingang: number; archiv: number };
/** Inhalte der Dropdowns; kommen mit, damit die Eingabe sie sofort hat. */
options: AcquisitionOptions;
/** Schon benutzte Anbieter, der zuletzt verwendete zuerst - "Anbieter" ist Freitext. */
provider_suggestions: string[];
entries: Acquisition[];
}