'use client'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import * as React from 'react'; import { AddToCompareButton } from '@/components/comparison/add-to-compare-button'; import { AiAdviceCards } from '@/components/listings/ai-advice-cards'; import { ImageGallery } from '@/components/listings/image-gallery'; import { InquiryModal } from '@/components/listings/inquiry-modal'; import { PriceHistoryChart } from '@/components/listings/price-history-chart'; import { SocialShare } from '@/components/listings/social-share'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { AiEstimateButton } from '@/components/valuation/ai-estimate-button'; import { analyticsApi } from '@/lib/analytics-api'; import type { NearbyPOI } from '@/lib/analytics-api'; import { formatPrice, formatPricePerM2 } from '@/lib/currency'; import { composeWhyThisLocation, derivePersonas } from '@/lib/listing-personas'; import { type AgentQualityScore, type ListingDetail, type ListingSimilarItem, type NeighborhoodScoreResult, type PriceHistoryItem, listingsApi, } from '@/lib/listings-api'; import { PROPERTY_TYPES, DIRECTIONS, TRANSACTION_TYPES, FURNISHING_OPTIONS, PROPERTY_CONDITION_OPTIONS, } from '@/lib/validations/listings'; import type { POIItem } from '@/components/neighborhood'; const NeighborhoodRadarChart = dynamic( () => import('@/components/neighborhood').then((m) => m.NeighborhoodRadarChart), { ssr: false }, ); const NeighborhoodPOIMap = dynamic( () => import('@/components/neighborhood').then((m) => m.NeighborhoodPOIMap), { ssr: false, loading: () => (
Đang tải bản đồ...
Không có bất động sản tương tự trong quận này
| Tiêu đề | Diện tích | Giá | Quận |
|---|---|---|---|
|
{comp.title}
{comp.publishedAt && (
{new Date(comp.publishedAt).toLocaleDateString('vi-VN')} )} |
{comp.areaM2} m² | {formatVND(comp.priceVND)} | {comp.district} |
{agent.agency}
)} {agentQualityScore && (Vì sao nên ở đây
{narrative}
{label}
{value}
{label}
{value}
{property.address}, {property.ward}, {property.district}, {property.city}
Chưa có lịch sử biến động giá cho tin này
Đang tải...
{property.description}
Tìm thấy {nearbyPois.length} điểm quan tâm trong bán kính 2 km
> ) : (Chưa có tọa độ cho tin đăng này
Chưa có dữ liệu đánh giá khu vực này
{formatVND(listing.priceVND)} đ
{listing.pricePerM2 != null && (~{formatPricePerM2(listing.pricePerM2)}
)} {listing.rentPriceMonthly && (Thuê: {formatPrice(listing.rentPriceMonthly)}/tháng
)} {listing.valuationEstimate && (AVM: {formatVND(listing.valuationEstimate.value)} đ · {Math.round(listing.valuationEstimate.confidence * 100)}% tin cậy
)}{seller.fullName}
{seller.phone}
Môi giới: {agent.agency}
Hoa hồng: {listing.commissionPct}%
{listing.viewCount}
Lượt xem
{listing.saveCount}
Lượt lưu
{listing.similarCount}
Tin tương tự
Đăng ngày {new Date(listing.publishedAt).toLocaleDateString('vi-VN')}
)}