-- ============================================================
-- 现代桃育种领域覆盖·抗病性状 + 需冷量/需热量 trait 字典种子（2026-08-04）
-- 背景：bre_trait 字典原 66 行（6 标签页：基本鉴定/果实外观/果皮/果实大小/果肉/果核）
--       「其它」标签页由用户自定义追加。缺口：
--   ③ 细菌性穿孔病 / 褐腐病 / 白粉病——减药育种核心目标，原字典一条都没有；
--   ② 需冷量/需热量——原字典无，只存在于 germplasm 属性(bre_germplasm.chilling_requirement)
--      与环境侧(bre_environment_condition.chilling_hours/GDD)；选种性状侧缺失。
-- 设计：统计引擎(EBV/选择指数)仅消费 data_type='numeric' 的性状（_trait_meta_map 过滤），
--       故抗病/需冷量全部建 numeric 病情指数/小时数，direction=asc（低值优），into_ebv='1' 进选种目标。
--   · 抗病用 0-5 级病情指数（0=免疫 1=高抗 2=抗 3=中抗 4=感 5=高感），direction=asc
--   · 需冷量 = 品种打破自然休眠所需 0~7.2℃ 低温累计小时数(h)，direction=asc（低需冷适应暖区）
--   · 需热量 = 发芽前 >7.2℃ 有效积温(GDD)，direction=asc（低需热早熟/暖区）
-- 幂等：以 trait_code 冲突则更新（不动 uuid/created_time），同 bre_trait_seed.sql 惯例。
-- ============================================================

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 0-5 级病情指数，越低越抗）--------------------
('disease_shot_hole',     '细菌性穿孔病',  '抗病性', 'numeric', '级', '1', NULL, md5(random()::text||'disease_shot_hole'),     false, now(), 'asc', '1', 0.3, 0, 5, 'evaluation', '田间自然发病病情指数 0-5 级（0免疫/1高抗/2抗/3中抗/4感/5高感）'),
('disease_brown_rot',     '褐腐病',        '抗病性', 'numeric', '级', '1', NULL, md5(random()::text||'disease_brown_rot'),     false, now(), 'asc', '1', 0.3, 0, 5, 'evaluation', '果实/花器褐腐病病情指数 0-5 级（低=抗）'),
('disease_powdery_mildew','白粉病',        '抗病性', 'numeric', '级', '1', NULL, md5(random()::text||'disease_powdery_mildew'), false, now(), 'asc', '1', 0.3, 0, 5, 'evaluation', '叶/果白粉病病情指数 0-5 级（低=抗）'),
-- ② 生态适应性（需冷量/需热量，低值=暖区适应/早熟）---------------
('chilling_requirement',  '需冷量',        '生态适应性', 'numeric', 'h', '1', NULL, md5(random()::text||'chilling_requirement'),  false, now(), 'asc', '1', 0.5, 0, 3000, 'evaluation', '打破自然休眠所需 0~7.2℃ 低温累计小时数（品种需冷量）'),
('heat_requirement',      '需热量',        '生态适应性', 'numeric', 'GDD', '1', NULL, md5(random()::text||'heat_requirement'),      false, now(), 'asc', '1', 0.4, 0, 10000, 'evaluation', '发芽前 >7.2℃ 有效积温生长度日（品种需热量）')
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,
    updated_time = now();
