"""市场分析结果模型 存储项目的市场价格分析结果 """ from typing import TYPE_CHECKING from decimal import Decimal from datetime import date from sqlalchemy import BigInteger, Integer, Date, DECIMAL, ForeignKey from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import BaseModel if TYPE_CHECKING: from app.models.project import Project class MarketAnalysisResult(BaseModel): """市场分析结果表""" __tablename__ = "market_analysis_results" project_id: Mapped[int] = mapped_column( BigInteger, ForeignKey("projects.id", ondelete="CASCADE"), nullable=False, index=True, comment="项目ID" ) analysis_date: Mapped[date] = mapped_column( Date, nullable=False, index=True, comment="分析日期" ) competitor_count: Mapped[int] = mapped_column( Integer, nullable=False, comment="样本竞品数量" ) market_min_price: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="市场最低价" ) market_max_price: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="市场最高价" ) market_avg_price: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="市场均价" ) market_median_price: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="市场中位价" ) suggested_range_min: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="建议区间下限" ) suggested_range_max: Mapped[Decimal] = mapped_column( DECIMAL(12, 2), nullable=False, comment="建议区间上限" ) # 关系 project: Mapped["Project"] = relationship( "Project" )