export type ReportObjectFieldKey =
  // Mandatory (always included)
  | 'title' | 'location' | 'mapImageUrl' | 'images'
  // Grunddaten
  | 'areaSqm' | 'rentPricePerSqm' | 'availabilityDate'
  | 'leaseTerm' | 'breakoutOption' | 'breakoutOptionDate' | 'currentTenant'
  | 'propertyNumber' | 'assetType'
  // Miet-/Vertragsdaten
  | 'floor' | 'parking' | 'fitOut' | 'isBarrierFree'
  // Technische Hard Facts
  | 'ceilingHeightM' | 'loadingDocksCount' | 'powerSupplyKva'
  | 'hasServerRoom' | 'roomHeight' | 'floorLoad'
  | 'deliveryAccess' | 'goodsLift' | 'passengerLift' | 'internet'
  // Soft Factors
  | 'prestigeScore' | 'visibilityScore' | 'footfallScore' | 'commuterAccessScore'
  | 'talentAccessScore' | 'esgScore' | 'flexibilityScore'
  | 'expansionPotentialScore' | 'taxEnvironmentScore'
  | 'microLocation' | 'competitionEnvironment' | 'infrastructure'
  // Marktinformationen
  | 'publicTransportScore' | 'marketSignals' | 'negotiationHints' | 'missingData'
  // Beschreibung & Medien
  | 'description' | 'units'
  // Datenqualität
  | 'softFactors' | 'dataQuality'

export interface ReportObjectFieldSelection {
  propertyId: string
  mandatoryFields: ReportObjectFieldKey[]
  selectedOptionalFields: ReportObjectFieldKey[]
}

export interface ReportEditableField {
  id: string
  label: string
  value: string
  fieldType: 'text' | 'textarea'
}

export interface InquiryPreparationReportDraft {
  id: string
  inquiryId: string
  selectedPropertyIds: string[]
  fieldSelections: ReportObjectFieldSelection[]
  marketSignalPropertyId?: string
  editableFields: ReportEditableField[]
  status: 'draft' | 'finalized'
  pdfUrl?: string
  createdAt: string
  updatedAt: string
}
