Files
smart-project-pricing/后端服务/app/models/market_analysis_result.py
2026-01-31 21:33:06 +08:00

77 lines
1.9 KiB
Python

"""市场分析结果模型
存储项目的市场价格分析结果
"""
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"
)