import type { AssetType } from './enums' export interface ParsedNeedCriteria { assetType?: AssetType areaRange?: { min: number; max: number } preferredLocations?: string[] budgetRange?: { maxPerSqm: number; maxMonthlyTotal?: number; currency: string } timing?: { earliestMoveIn: string; latestMoveIn?: string; contractDurationMonths?: number; flexibleTiming: boolean } mustHaveCriteria?: string[] softFactors?: { minPrestige?: number; requireParking?: boolean; maxPublicTransportMinutes?: number; requireHighVisibility?: boolean } infrastructureRequirements?: string[] accessibilityRequirements?: string[] prestigeImportance?: 'LOW' | 'MEDIUM' | 'HIGH' flexibilityNeed?: 'LOW' | 'MEDIUM' | 'HIGH' expansionPotential?: boolean parkingNeed?: boolean visibilityNeed?: 'LOW' | 'MEDIUM' | 'HIGH' footfallNeed?: 'LOW' | 'MEDIUM' | 'HIGH' companyName?: string notes?: string } export interface FollowUpQuestion { id: string questionText: string targetField: string reason: string suggestedAnswerOptions?: string[] importance: 'required' | 'recommended' | 'optional' } export interface ParseNeedResult { extractedCriteria: ParsedNeedCriteria confidenceByField: Record missingFields: string[] assumptions: string[] suggestedWeights: Record followUpQuestionCandidates: FollowUpQuestion[] rawSummary: string promptVersion: string schemaVersion: string } export const NeedBuilderStep = { IDLE: 'idle', PARSING: 'parsing', PARSED_REQUIRES_REVIEW: 'parsed_requires_review', CLARIFICATION_REQUIRED: 'clarification_required', WEIGHTING_REVIEW: 'weighting_review', READY_TO_SAVE: 'ready_to_save', SAVING: 'saving', SAVED: 'saved', ERROR: 'error', } as const export type NeedBuilderStep = typeof NeedBuilderStep[keyof typeof NeedBuilderStep] export const WEIGHTING_KEYS = ['area', 'location', 'budget', 'timing', 'prestige', 'accessibility', 'expansionPotential', 'flexibility'] as const export type WeightingKey = typeof WEIGHTING_KEYS[number] export const WEIGHTING_LABELS: Record = { area: 'Fläche', location: 'Standort', budget: 'Budget', timing: 'Verfügbarkeit', prestige: 'Prestige', accessibility: 'Erreichbarkeit', expansionPotential: 'Expansionspotenzial', flexibility: 'Flexibilität', }