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

54 lines
6.1 KiB
SQL
Raw Permalink 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.
-- ============================================================
-- 桃育种业务流完善·产量构成/果实品质/物候/生长量/描述性状 trait 种子(2026-08-05
-- 背景:全量盘点发现 bre_trait 字典缺产量构成(单株产量/好果率)、品质(SS%/酸/固酸比)、
-- 物候(仅 first_flower_date 一条)、生长量(主干周/树高/冠幅)——真实桃育种
-- 品比/丰产性评价与 EBV 选种目标都依赖这些数值性状;
-- 另补描述性 categorical 性状(离核/果皮底色/着色类型)供种质级观测(bre_observation EAV)使用。
-- 设计:统计引擎(_trait_meta_map)仅消费 data_type='numeric' 且 into_ebv='1' 的性状;
-- · 产量构成/品质/生长量 numeric + into_ebv='1' 进 EBV/指数(direction 按育种目标)
-- · 物候 data_type='date' + into_ebv='0'(不参与统计,作物候历)
-- · 描述性状 data_type='text' + into_ebv='0'categorical,走 EAV text 观测)
-- 幂等:trait_code 冲突则更新(不动 uuid/created_time),同 bre_trait_seed.sql 惯例。
-- avg_fruit_weight/fruit_shape/pubescence 已存在,仅在 DO UPDATE 刷新数值范围(不改 category)。
-- ============================================================
INSERT INTO bre_trait
(trait_code, trait_name, category, data_type, unit, is_core, scale_json, uuid, is_deleted, created_time,
direction, into_ebv, default_h2, valid_min, valid_max, stage, method)
VALUES
-- ① 产量构成(numeric,越高越好)--------------------------------
('single_tree_yield', '单株产量', '产量构成', 'numeric', 'kg', '1', NULL, md5(random()::text||'single_tree_yield'), false, now(), 'desc', '1', 0.3, 0, 200, 'evaluation', '单株采收产量(kg/株),丰产性核心'),
('fruit_number', '果实个数', '产量构成', 'numeric', '个', '1', NULL, md5(random()::text||'fruit_number'), false, now(), 'desc', '1', 0.3, 0, 5000, 'evaluation', '单株采收果实个数'),
('marketable_rate', '好果率', '产量构成', 'numeric', '%', '1', NULL, md5(random()::text||'marketable_rate'), false, now(), 'desc', '1', 0.4, 0, 100, 'evaluation', '商品果率(%),分级后商品果占比'),
('fruit_crack_rate', '裂果率', '产量构成', 'numeric', '%', '1', NULL, md5(random()::text||'fruit_crack_rate'), false, now(), 'asc', '1', 0.3, 0, 100, 'evaluation', '裂果率(%),越低越好'),
-- ② 果实品质(numeric,SS 高优/酸低优/固酸比高优)----------------
('ss_content', '可溶性固形物', '果实品质', 'numeric', '%', '1', NULL, md5(random()::text||'ss_content'), false, now(), 'desc', '1', 0.5, 0, 35, 'evaluation', '可溶性固形物含量(SS%,折光仪测定),核心风味指标'),
('titratable_acid', '可滴定酸', '果实品质', 'numeric', '%', '1', NULL, md5(random()::text||'titratable_acid'), false, now(), 'asc', '1', 0.4, 0, 3, 'evaluation', '可滴定酸含量(%,中和滴定),过高味酸'),
('ss_acid_ratio', '固酸比', '果实品质', 'numeric', '', '1', NULL, md5(random()::text||'ss_acid_ratio'), false, now(), 'desc', '1', 0.4, 5, 50, 'evaluation', '固酸比(SS/酸),风味协调性综合指标'),
-- ③ 物候(date,不参与统计,作物候历/育种排期)-------------------
('full_bloom_date', '盛花期', '物候', 'date', '', '0', NULL, md5(random()::text||'full_bloom_date'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '盛花期(整株 75% 花开放日期),花期避霜排期关键'),
('fruit_maturity_date','果实成熟期', '物候', 'date', '', '0', NULL, md5(random()::text||'fruit_maturity_date'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '果实成熟期(采收起始日期),早熟性核心'),
('leaf_fall_date', '落叶期', '物候', 'date', '', '0', NULL, md5(random()::text||'leaf_fall_date'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '落叶期(株叶 75% 脱落日期)'),
-- ④ 生长量(numeric,树势)--------------------------------------
('trunk_circumference','主干周长', '生长量', 'numeric', 'cm', '0', NULL, md5(random()::text||'trunk_circumference'), false, now(), 'desc', '0', NULL, 0, 500, 'evaluation', '距地面 20cm 处主干周长(cm),树势指标'),
('tree_height', '树高', '生长量', 'numeric', 'm', '0', NULL, md5(random()::text||'tree_height'), false, now(), 'desc', '0', NULL, 0, 20, 'evaluation', '树高(m'),
('crown_width', '冠幅', '生长量', 'numeric', 'm', '0', NULL, md5(random()::text||'crown_width'), false, now(), 'desc', '0', NULL, 0, 20, 'evaluation', '冠幅(东西+南北均值,m'),
-- ⑤ 描述性 categoricaltext,种质级观测,不参与统计)-------------
('freestone', '离核性', '果核', 'text', '', '0', NULL, md5(random()::text||'freestone'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '离核/半离核/黏核(categorical'),
('ground_color', '果皮底色', '果皮', 'text', '', '0', NULL, md5(random()::text||'ground_color'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '果皮底色(categorical:黄/白/绿/红…)'),
('coloring_type', '着色类型', '果皮', 'text', '', '0', NULL, md5(random()::text||'coloring_type'), false, now(), 'asc', '0', NULL, NULL, NULL, 'evaluation', '果实着色类型(categorical:全红/条红/斑点/无…)')
ON CONFLICT (trait_code) DO UPDATE SET
trait_name = EXCLUDED.trait_name,
category = EXCLUDED.category,
data_type = EXCLUDED.data_type,
unit = EXCLUDED.unit,
is_core = EXCLUDED.is_core,
scale_json = EXCLUDED.scale_json,
direction = EXCLUDED.direction,
into_ebv = EXCLUDED.into_ebv,
default_h2 = EXCLUDED.default_h2,
valid_min = EXCLUDED.valid_min,
valid_max = EXCLUDED.valid_max,
stage = EXCLUDED.stage,
method = EXCLUDED.method;