init: 初始化 dpb 桃育种系统代码库

前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
This commit is contained in:
34047007@qq.com
2026-08-06 00:17:49 +08:00
commit b95053c52c
1469 changed files with 322298 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
-- ============================================================
-- 桃育种·花粉档案(bre_pollen)+ 授粉表花粉批次外键
-- 背景:桃花期仅 3–7 天,父本花粉是杂交季命脉。花粉需采集、贮藏、测活力,
-- 授粉窗口(采集日→失效日)校验支撑"当前花期可用批次"与复盘坐果率。
-- 幂等:CREATE TABLE IF NOT EXISTS / ADD COLUMN IF NOT EXISTS,可重复执行。
-- 说明:bre_pollen 表可由 create_all 建,此处显式落库保证先于后端重启存在;
-- bre_pollination 已存在,新列必须 ALTER。
-- ============================================================
CREATE TABLE IF NOT EXISTS bre_pollen (
id SERIAL PRIMARY KEY,
uuid varchar(64) NOT NULL UNIQUE,
is_deleted boolean NOT NULL DEFAULT false,
created_time timestamptz NOT NULL DEFAULT now(),
updated_time timestamptz NOT NULL DEFAULT now(),
deleted_time timestamptz,
created_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
updated_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
deleted_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
-- 领域字段
lot_code varchar(64) NOT NULL UNIQUE, -- 花粉批次号(如 PL-2026-0001
male_tree_id integer REFERENCES bre_tree(id) ON DELETE SET NULL, -- 采集父本树(混合/外地可空)
source_type varchar(16) NOT NULL DEFAULT 'tree', -- tree父本树 / mixed混合花粉 / external外地采集
source_desc varchar(128), -- 来源说明(混合配比/外地品种)
collect_date date, -- 花粉采集日期
collect_method varchar(32), -- 采集方式(采花取粉/振动收集…)
quantity varchar(32), -- 采集量(如 50g / 花药数)
storage_method varchar(16) NOT NULL DEFAULT 'fridge',-- 贮藏方式 fridge4℃ / minus20 / minus80 / liquid_n2液氮
viability_method varchar(16), -- 活力测定 ttc(TTC染色率) / germination(离体萌发率%)
viability_pct double precision, -- 花粉活力 %
viability_test_date date, -- 活力测定日期
expiry_date date, -- 有效期/失效日期(授粉窗口上界)
remark text
);
CREATE INDEX IF NOT EXISTS ix_bre_pollen_created_deleted ON bre_pollen (created_time, is_deleted);
CREATE INDEX IF NOT EXISTS ix_bre_pollen_male_tree_id ON bre_pollen (male_tree_id);
COMMENT ON TABLE bre_pollen IS '花粉档案:采集父本/日期/贮藏/活力/有效期,授粉窗口计划地基';
COMMENT ON COLUMN bre_pollen.lot_code IS '花粉批次号(唯一,如 PL-2026-0001';
COMMENT ON COLUMN bre_pollen.male_tree_id IS '采集父本树 FK→bre_tree(混合/外地采集可空)';
COMMENT ON COLUMN bre_pollen.source_type IS '来源类型 tree父本树/mixed混合花粉/external外地采集';
COMMENT ON COLUMN bre_pollen.collect_date IS '花粉采集日期';
COMMENT ON COLUMN bre_pollen.collect_method IS '采集方式(采花取粉/振动收集…)';
COMMENT ON COLUMN bre_pollen.storage_method IS '贮藏方式 fridge4℃/minus20/minus80/liquid_n2液氮';
COMMENT ON COLUMN bre_pollen.viability_method IS '活力测定方法 ttc(TTC染色率)/germination(离体萌发率%)';
COMMENT ON COLUMN bre_pollen.viability_pct IS '花粉活力 %';
COMMENT ON COLUMN bre_pollen.viability_test_date IS '活力测定日期';
COMMENT ON COLUMN bre_pollen.expiry_date IS '有效期/失效日期(授粉窗口上界)';
-- 授粉表补花粉批次外键(窗口校验:授粉日期须在 [采集日, 失效日] 内)
ALTER TABLE bre_pollination ADD COLUMN IF NOT EXISTS pollen_lot_id integer NULL REFERENCES bre_pollen(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_pollination_pollen_lot_id ON bre_pollination (pollen_lot_id);
COMMENT ON COLUMN bre_pollination.pollen_lot_id IS '花粉批次 FK→bre_pollen(授粉所用花粉,支撑父本效力分析与窗口校验)';
-- 授粉表补授粉方式(一期文档规划,此前遗漏)
ALTER TABLE bre_pollination ADD COLUMN IF NOT EXISTS pollination_method varchar(32);
COMMENT ON COLUMN bre_pollination.pollination_method IS '授粉方式(人工点授/喷粉/涂抹…)';