6a6ff7f2e2
Navigation: Deal Pipeline moved after Vergleich (before Anfragen) Compare → Pipeline: - Bookmark icon per column header; BookmarkCheck when already in pipeline - Passes propertyId, propertyAddress, area/rent labels on save Pipeline cards now unit-level: - propertyAddress shown with MapPin on every card - Chat icon (MessageSquare) on cards with linked inquiry → navigates to /demand/anfragen?inquiry=xxx - Detail panel: Chat chip links to specific inquiry thread, propertyAddress displayed Anfragen → Pipeline KI detection: - Keyword scan on every sent message (besichtigung → VISITED, mietvertrag → NEGOTIATION, unterschrieben → CLOSED_WON) - Only advances stage, never goes back - Purple KI alert banner with direct Pipeline link, auto-dismisses after 6s - Pipeline badge in inquiry list + stage chip in chat header with nav link - URL param ?inquiry=xxx pre-selects inquiry (used from Pipeline chat button) Domain: PipelineItem gains propertyId, unitId, propertyAddress, inquiryId Mock data: pl-001/pl-002/pl-004 linked to inq-001/inq-005/inq-004 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
25 lines
706 B
TypeScript
25 lines
706 B
TypeScript
export type PipelineStage = 'SAVED' | 'DISCOVERED' | 'QUALIFIED' | 'VISITED' | 'NEGOTIATION' | 'CLOSED_WON' | 'CLOSED_LOST'
|
|
|
|
export interface PipelineItem {
|
|
id: string
|
|
title: string
|
|
location: string
|
|
matchScore: number
|
|
resultType: 'VERIFIED_PORTFOLIO' | 'EXTERNAL_MARKET' | 'MAISON_WORK' | 'FUTURE_AVAILABILITY'
|
|
stage: PipelineStage
|
|
// Property / unit reference — always set for unit-level tracking
|
|
propertyId?: string
|
|
unitId?: string
|
|
propertyAddress?: string
|
|
// Linked inquiry (chat thread)
|
|
inquiryId?: string
|
|
// Display labels
|
|
areaLabel?: string
|
|
rentLabel?: string
|
|
availabilityLabel?: string
|
|
addedAt: string
|
|
updatedAt: string
|
|
notes?: string
|
|
assignedTo?: string
|
|
}
|