UI improvements: Leadspeicher, Maps enrichment, exports
- Rename LeadVault → Leadspeicher throughout (sidebar, topbar, page) - SidePanel: full lead detail view with contact, source, tags (read-only), Google Maps link for address - Tags: kontaktiert stored as tag (toggleable), favorit tag toggle - Remove Status column, StatusBadge dropdown, Priority feature - Remove Aktualisieren button from Leadspeicher - Bulk actions: remove status dropdown - Export: LeadVault Excel-only, clean columns, freeze row + autofilter - Export dropdown: click-based (fix overflow-hidden clipping) - ExportButtons: remove CSV, Excel only everywhere - Maps page: post-search Anymailfinder enrichment button - ProgressCard: "Suche läuft..." instead of "Warte auf Anymailfinder-Server..." - Quick SERP renamed to "Schnell neue Suche" - Results page: Excel export, always-enabled download button - Anymailfinder: fix bulk field names, array-of-arrays format - Apify: fix countryCode lowercase - API: sourceTerm search, contacted/favorite tag filters Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,6 @@ export interface VaultLead {
|
||||
linkedinUrl?: string | null;
|
||||
phone?: string | null;
|
||||
address?: string | null;
|
||||
emailConfidence?: number | null;
|
||||
serpTitle?: string | null;
|
||||
serpSnippet?: string | null;
|
||||
serpRank?: number | null;
|
||||
@@ -17,6 +16,7 @@ export interface VaultLead {
|
||||
country?: string | null;
|
||||
headcount?: string | null;
|
||||
industry?: string | null;
|
||||
description?: string | null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,7 +54,6 @@ export async function sinkLeadToVault(
|
||||
where: { id: existing.id },
|
||||
data: {
|
||||
email,
|
||||
emailConfidence: lead.emailConfidence ?? existing.emailConfidence,
|
||||
contactName: lead.contactName || existing.contactName,
|
||||
contactTitle: lead.contactTitle || existing.contactTitle,
|
||||
linkedinUrl: lead.linkedinUrl || existing.linkedinUrl,
|
||||
@@ -76,7 +75,6 @@ export async function sinkLeadToVault(
|
||||
linkedinUrl: lead.linkedinUrl || null,
|
||||
phone: lead.phone || null,
|
||||
address: lead.address || null,
|
||||
emailConfidence: lead.emailConfidence ?? null,
|
||||
serpTitle: lead.serpTitle || null,
|
||||
serpSnippet: lead.serpSnippet || null,
|
||||
serpRank: lead.serpRank ?? null,
|
||||
@@ -84,6 +82,7 @@ export async function sinkLeadToVault(
|
||||
country: lead.country || null,
|
||||
headcount: lead.headcount || null,
|
||||
industry: lead.industry || null,
|
||||
description: lead.description || null,
|
||||
sourceTab,
|
||||
sourceTerm: sourceTerm || null,
|
||||
sourceJobId: sourceJobId || null,
|
||||
@@ -119,8 +118,7 @@ export async function sinkLeadsToVault(
|
||||
where: { id: existing.id },
|
||||
data: {
|
||||
email,
|
||||
emailConfidence: lead.emailConfidence ?? existing.emailConfidence,
|
||||
contactName: lead.contactName || existing.contactName,
|
||||
contactName: lead.contactName || existing.contactName,
|
||||
contactTitle: lead.contactTitle || existing.contactTitle,
|
||||
linkedinUrl: lead.linkedinUrl || existing.linkedinUrl,
|
||||
phone: lead.phone || existing.phone,
|
||||
@@ -142,12 +140,14 @@ export async function sinkLeadsToVault(
|
||||
linkedinUrl: lead.linkedinUrl || null,
|
||||
phone: lead.phone || null,
|
||||
address: lead.address || null,
|
||||
emailConfidence: lead.emailConfidence ?? null,
|
||||
serpTitle: lead.serpTitle || null,
|
||||
serpTitle: lead.serpTitle || null,
|
||||
serpSnippet: lead.serpSnippet || null,
|
||||
serpRank: lead.serpRank ?? null,
|
||||
serpUrl: lead.serpUrl || null,
|
||||
country: lead.country || null,
|
||||
headcount: lead.headcount || null,
|
||||
industry: lead.industry || null,
|
||||
description: lead.description || null,
|
||||
sourceTab,
|
||||
sourceTerm: sourceTerm || null,
|
||||
sourceJobId: sourceJobId || null,
|
||||
|
||||
Reference in New Issue
Block a user