e95490eb72
- Grundriss (FloorPlanSection): PropertyUnit.floorPlanUrl?, Property.floorPlanUrl?; FloorPlanSection in MatchDetail + PropertyDetail; FloorPlanUrlSection in NewListing-Formular - Listenansicht (MatchCardCompact): horizontales Layout mit 120px Bildstreifen, Score-Badge, Asset-Label-Overlay, alle 3 grünen Punkte, Anfrage-Button - Light Industrial → "Gewerbe" überall (NeedInput, NeedCardPreview, CriteriaReviewPanel, newListingConstants, MyListings, propertyHelpers) - "Zum Originalinserat"-Button nur bei Maison-Work-Objekten - Image-Pool: propertyImageResolver mit sequentiellem Pool-Index (keine doppelten Bilder), nur Innenaufnahmen, rotate()-Trick für Sub-Pools - Overlay-Labels (Objekttyp + Stadtteil) in LocationPreview + IntelligenceMatchCard Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
export type PipelineStage = 'SAVED' | 'CONTACTED' | 'VISITED' | 'NEGOTIATION' | 'CLOSED_WON' | 'CLOSED_LOST'
|
|
|
|
export interface PipelineItem {
|
|
id: string
|
|
title: string
|
|
location: string
|
|
matchScore: number
|
|
resultType: 'VERIFIED_PORTFOLIO' | 'MAISON_WORK' | 'FUTURE_AVAILABILITY'
|
|
stage: PipelineStage
|
|
// Source match reference — used for navigating back to the detail page
|
|
matchId?: string
|
|
// 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
|
|
}
|
|
|
|
export interface PendingPipelineItem {
|
|
resultId: string
|
|
resultType: PipelineItem['resultType']
|
|
title: string
|
|
location?: string
|
|
matchScore: number
|
|
propertyId?: string
|
|
unitId?: string
|
|
propertyAddress?: string
|
|
areaLabel?: string
|
|
rentLabel?: string
|
|
availabilityLabel?: string
|
|
}
|