77 lines
1.9 KiB
Python
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"
|
|
)
|