package com.gxwebsoft.house.entity;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * AI找房语义解析结果
 */
@Data
@Schema(name = "HouseAiIntent对象", description = "AI找房语义解析结果")
public class HouseAiIntent implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "原始问题")
    private String originalQuestion;

    @Schema(description = "意图类型 faq/house/mixed/unknown")
    private String intentType;

    @Schema(description = "归一化问题")
    private String normalizedQuestion;

    @Schema(description = "面积最小值")
    private Integer extentMin;

    @Schema(description = "面积最大值")
    private Integer extentMax;

    @Schema(description = "楼层最小值")
    private Integer floorMin;

    @Schema(description = "楼层最大值")
    private Integer floorMax;

    @Schema(description = "月租最小值")
    private BigDecimal monthlyRentMin;

    @Schema(description = "月租最大值")
    private BigDecimal monthlyRentMax;

    @Schema(description = "售价最小值")
    private BigDecimal salePriceMin;

    @Schema(description = "售价最大值")
    private BigDecimal salePriceMax;

    @Schema(description = "总价最小值")
    private BigDecimal totalPriceMin;

    @Schema(description = "总价最大值")
    private BigDecimal totalPriceMax;

    @Schema(description = "区域/地段")
    private String regionKeyword;

    @Schema(description = "城市")
    private String cityKeyword;

    @Schema(description = "租售类型 rent/sale")
    private String tradeType;

    @Schema(description = "装修类型")
    private String decorationType;

    @Schema(description = "配套要求")
    private String supportingKeyword;

    @Schema(description = "朝向")
    private String toward;

    @Schema(description = "房型")
    private String houseType;

    @Schema(description = "是否需要空调")
    private Boolean airConditioningAvailable;

    @Schema(description = "是否需要停车")
    private Boolean parkingAvailable;

    @Schema(description = "水费计费方式")
    private String waterBillingType;

    @Schema(description = "电费计费方式")
    private String electricityBillingType;

    @Schema(description = "物业费上限")
    private BigDecimal propertyFeesMax;

    @Schema(description = "水费单价上限")
    private BigDecimal waterUnitPriceMax;

    @Schema(description = "电费单价上限")
    private BigDecimal electricityUnitPriceMax;

    @Schema(description = "其他关键词")
    private List<String> tags = new ArrayList<>();

    @Schema(description = "客户明确不可放宽的条件字段")
    private List<String> requiredFields = new ArrayList<>();
}
