Files
property-match/src/domain/pipeline.ts
T
Benjamin Sutter e95490eb72 feat: Grundriss-Feature, Listenansicht mit Bildern, Gewerbe-Label, Image-Pool
- 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>
2026-05-24 22:12:43 +02:00

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
}