54 lines
6.1 KiB
SQL
54 lines
6.1 KiB
SQL
-- ============================================================
|
||||
|
|
-- 桃育种业务流完善·产量构成/果实品质/物候/生长量/描述性状 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)'),
|
|||
|
|
-- ⑤ 描述性 categorical(text,种质级观测,不参与统计)-------------
|
|||
|
|
('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;
|