init: 初始化 dpb 桃育种系统代码库
前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
-- ============================================================
|
||||
-- 桃育种业务流完善·既有表补列(2026-08-05)——幂等
|
||||
-- 背景:create_all 只建新表不补已有表列;以下 4 处均对既有表 ADD COLUMN IF NOT EXISTS。
|
||||
-- A1 采收结构化:bre_field_operation 补产量构成四列(op_type=harvest)
|
||||
-- A3 种质级观测:bre_observation 补 germplasm_id(描述性观测目标)
|
||||
-- A4 关联补链: bre_seed_lot 补 pollination_id / bre_seed_treatment 补 seed_lot_id
|
||||
-- ============================================================
|
||||
|
||||
-- A1 采收产量构成 ------------------------------------------------
|
||||
ALTER TABLE bre_field_operation ADD COLUMN IF NOT EXISTS yield_kg double precision;
|
||||
ALTER TABLE bre_field_operation ADD COLUMN IF NOT EXISTS fruit_count integer;
|
||||
ALTER TABLE bre_field_operation ADD COLUMN IF NOT EXISTS avg_fruit_weight double precision;
|
||||
ALTER TABLE bre_field_operation ADD COLUMN IF NOT EXISTS marketable_rate double precision;
|
||||
COMMENT ON COLUMN bre_field_operation.yield_kg IS '单株产量(kg,op_type=harvest)';
|
||||
COMMENT ON COLUMN bre_field_operation.fruit_count IS '果实个数(op_type=harvest)';
|
||||
COMMENT ON COLUMN bre_field_operation.avg_fruit_weight IS '平均单果重(g,op_type=harvest)';
|
||||
COMMENT ON COLUMN bre_field_operation.marketable_rate IS '好果率(%,op_type=harvest)';
|
||||
|
||||
-- A3 种质级观测 --------------------------------------------------
|
||||
ALTER TABLE bre_observation ADD COLUMN IF NOT EXISTS germplasm_id integer;
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bre_observation_germplasm_id_fkey') THEN
|
||||
ALTER TABLE bre_observation ADD CONSTRAINT bre_observation_germplasm_id_fkey
|
||||
FOREIGN KEY (germplasm_id) REFERENCES bre_germplasm(id) ON DELETE CASCADE;
|
||||
END IF;
|
||||
END $$;
|
||||
CREATE INDEX IF NOT EXISTS ix_bre_observation_germplasm_id ON bre_observation (germplasm_id);
|
||||
COMMENT ON COLUMN bre_observation.germplasm_id IS '种质资源(可空,描述性观测)';
|
||||
|
||||
-- A4 授粉→收种关联 ----------------------------------------------
|
||||
ALTER TABLE bre_seed_lot ADD COLUMN IF NOT EXISTS pollination_id integer;
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bre_seed_lot_pollination_id_fkey') THEN
|
||||
ALTER TABLE bre_seed_lot ADD CONSTRAINT bre_seed_lot_pollination_id_fkey
|
||||
FOREIGN KEY (pollination_id) REFERENCES bre_pollination(id) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
CREATE INDEX IF NOT EXISTS ix_bre_seed_lot_pollination_id ON bre_seed_lot (pollination_id);
|
||||
COMMENT ON COLUMN bre_seed_lot.pollination_id IS '授粉记录(关联补链)';
|
||||
|
||||
-- A4 收种→种子处理关联 -------------------------------------------
|
||||
ALTER TABLE bre_seed_treatment ADD COLUMN IF NOT EXISTS seed_lot_id integer;
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'bre_seed_treatment_seed_lot_id_fkey') THEN
|
||||
ALTER TABLE bre_seed_treatment ADD CONSTRAINT bre_seed_treatment_seed_lot_id_fkey
|
||||
FOREIGN KEY (seed_lot_id) REFERENCES bre_seed_lot(id) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
CREATE INDEX IF NOT EXISTS ix_bre_seed_treatment_seed_lot_id ON bre_seed_treatment (seed_lot_id);
|
||||
COMMENT ON COLUMN bre_seed_treatment.seed_lot_id IS '种子批(关联补链)';
|
||||
Reference in New Issue
Block a user