Files
dpb/backend/app/api/v1/module_bre/pollen/model.py
T
34047007@qq.com b95053c52c init: 初始化 dpb 桃育种系统代码库
前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
2026-08-06 00:17:49 +08:00

59 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""花粉档案 数据模型"""
from datetime import date
from sqlalchemy import Date, Float, ForeignKey, Index, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column
from app.core.base_model import MappedBase, ModelMixin, UserMixin
class PollenModel(ModelMixin, UserMixin, MappedBase):
"""花粉档案:采集父本/日期/贮藏/活力/有效期,授粉窗口计划地基。"""
__tablename__ = "bre_pollen"
lot_code: Mapped[str] = mapped_column(
String(64), nullable=False, unique=True, comment="花粉批次号(如 PL-2026-0001"
)
male_tree_id: Mapped[int | None] = mapped_column(
Integer, ForeignKey("bre_tree.id", ondelete="SET NULL"),
index=True, nullable=True, comment="采集父本树(混合/外地采集可空)"
)
source_type: Mapped[str] = mapped_column(
String(16), nullable=False, default="tree",
comment="来源类型 tree父本树/mixed混合花粉/external外地采集"
)
source_desc: Mapped[str | None] = mapped_column(String(128), nullable=True, comment="来源说明(混合配比/外地品种)")
collect_date: Mapped[date | None] = mapped_column(Date, nullable=True, comment="花粉采集日期", default=None)
collect_method: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="采集方式(采花取粉/振动收集…)", default=None)
quantity: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="采集量(如 50g / 花药数)", default=None)
storage_method: Mapped[str] = mapped_column(
String(16), nullable=False, default="fridge",
comment="贮藏方式 fridge4℃/minus20/minus80/liquid_n2液氮"
)
viability_method: Mapped[str | None] = mapped_column(
String(16), nullable=True, comment="活力测定方法 ttc(TTC染色率)/germination(离体萌发率%)", default=None
)
viability_pct: Mapped[float | None] = mapped_column(Float, nullable=True, comment="花粉活力 %", default=None)
viability_test_date: Mapped[date | None] = mapped_column(Date, nullable=True, comment="活力测定日期", default=None)
expiry_date: Mapped[date | None] = mapped_column(Date, 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_pollen_created_deleted", "created_time", "is_deleted"),
)