from dataclasses import dataclass, field
from typing import Any
@dataclass
class NormalizedProperty:
property_type: str | None = None
deal_type: str | None = None
title: str | None = None
description: str | None = None
price: float | None = None
currency: str | None = None
original_price: float | None = None
original_currency: str | None = None
price_per_sqm: float | None = None
total_area: float | None = None
living_area: float | None = None
kitchen_area: float | None = None
land_area: float | None = None
rooms_count: int | None = None
bedrooms_count: int | None = None
bathrooms_count: int | None = None
layout: str | None = None
floor: int | None = None
floors_total: int | None = None
building_year: int | None = None
building_type: str | None = None
renovation_status: str | None = None
ceiling_height: float | None = None
material: str | None = None
has_balcony: bool | None = None
has_loggia: bool | None = None
balcony_count: int | None = None
loggia_count: int | None = None
bathroom_type: str | None = None
elevator_count: int | None = None
has_freight_elevator: bool | None = None
parking_type: str | None = None
heating_type: str | None = None
internet: bool | None = None
security: bool | None = None
windows_direction: str | None = None
window_view: str | None = None
address_raw: str | None = None
city: str | None = None
district: str | None = None
micro_district: str | None = None
street: str | None = None
house_number: str | None = None
metro_station: str | None = None
metro_distance_min: int | None = None
metro_distance_type: str | None = None
latitude: float | None = None
longitude: float | None = None
contact_phone: str | None = None
contact_name: str | None = None
contact_email: str | None = None
is_agent: bool | None = None
agency_name: str | None = None
publish_date: str | None = None
url_source: str | None = None
images: list[str] = field(default_factory=list)
custom_fields: dict[str, Any] = field(default_factory=dict)
@dataclass
class AiImageAnalysis:
overall_condition: str | None = None
rooms_observed: int | None = None
issues_found: list[str] = field(default_factory=list)
positive_highlights: list[str] = field(default_factory=list)
view_from_window: str | None = None
furniture_included: bool | None = None
appliances_included: list[str] = field(default_factory=list)
@dataclass
class AiEnrichmentResult:
extracted_features: dict[str, Any] = field(default_factory=dict)
price_assessment: dict[str, Any] = field(default_factory=dict)
listing_quality_score: int | None = None
reliability_rating: int | None = None
sentiment_score: float | None = None
classification: str | None = None
image_analysis_results: dict[str, Any] = field(default_factory=dict)
generated_description: str | None = None
summary: str | None = None
model_version: str | None = None
processing_time_ms: int | None = None