Files

50 lines
1.9 KiB
Python
Raw Permalink Normal View History

"""单株评价 数据模型"""
from datetime import datetime
from sqlalchemy import Float, ForeignKey, Index, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column
from app.core.base_model import MappedBase, ModelMixin, UserMixin
class TreeEvaluationModel(ModelMixin, UserMixin, MappedBase):
"""单株评价 主数据表。"""
__tablename__ = "bre_tree_evaluation"
combination_id: Mapped[int] = mapped_column(
Integer, ForeignKey("bre_cross_combination.id", ondelete="CASCADE"),
index=True, nullable=False, comment="杂交组合"
)
tree_id: Mapped[int] = mapped_column(
Integer, ForeignKey("bre_tree.id", ondelete="CASCADE"),
index=True, nullable=False, comment="单株"
)
evaluate_year: Mapped[int | None] = mapped_column(Integer, nullable=True, comment="评价年份", default=None)
evaluate_date: Mapped[str | None] = mapped_column(String(20), nullable=True, comment="调查时间", default=None)
bre_personnel_id: Mapped[int] = mapped_column(
Integer, ForeignKey("bre_personnel.id", ondelete="CASCADE"),
index=True, nullable=True, comment="评价人"
)
overall_score: Mapped[float | None] = mapped_column(Float, nullable=True, comment="综合评分", default=None)
trial_study_id: Mapped[int | None] = mapped_column(
Integer, ForeignKey("bre_trial_study.id", ondelete="SET NULL"),
index=True, nullable=True, comment="所属试验研究点"
)
crop_load: Mapped[float | None] = mapped_column(Float, nullable=True, comment="座果率/产量负载", default=None)
remark: Mapped[str | None] = mapped_column(Text, nullable=True, comment="备注", default=None)
# 无 status 列:覆盖基类默认 ix_<表>_status_deleted 索引,
# 仅保留 (created_time, is_deleted) 复合索引用于数据权限过滤。
__table_args__ = (
Index("ix_bre_tree_evaluation_created_deleted", "created_time", "is_deleted"),
)