# 桃育种系统 · 规划对照总表 > **版本**:2026-07-29 新增 > **定位**:统一三份文档(业务功能规划报告 / 分层路线图 v1.1 / 模块扩展需求规格 v2.11)的模块级映射,消除口头"指回§3/§4"。 > **状态约定**:✅ 已落地(基础字段) | ⏳ 待建(规划已定,待生成器落地) | ⏳ 待灌(数据) | — 引擎/端点(不建表)。**2026-08-04 追加**:① 统计引擎两轮 P0 已代码落地(G×E + 性状方向标注);② 花粉档案 §3.19 落地(bre_pollen + 授粉窗口校验);③ 选择指数升级为**无性系级聚合**(决策正确性,可靠加权聚合 + 自株退化 + 系级决选);④ 配合力 GCA/SCA 支持**交配设计 `design_type`**(统计严谨:完全双列/部分双列/line×tester(NCII)/NCIII,`combining.solve` 按设计分支双因素模型 + 运行按设计过滤组合);⑤ **统计严谨·MLOps 复现性**(① Smith-Hazel 遗传相关改 **Calo 可靠性校正** r_g=r_EBV/√(rel_i·rel_j);② **PA 落库** pa=√reliability + 批次 accuracy 真 PA;③ **MLOps 溯源** data_version/input_hash/engine_version(同数据重跑哈希一致、改观测必变);④ **germplasm_id 填充**(亲本级 EBV 查询可用);⑤ **砧木字典扩列** 矮化类/砧穗亲和性;⑥ **空间竞争协变量** covariate=competition(Chebyshev 邻域株数,无坐标显式报错));⑥ **组合得失漏斗 v_combination_funnel**(按组合汇总 花→果→种→苗→定植→树→入选 六级派生指标——结实率/出苗率/选择强度滚到组合层,配合力第一手证据,只读端点可查);⑦ **分子育种「建数据能力」**(§3.7 四表落地:bre_marker / bre_genotyping_dataset / bre_genotype_sample(weld 补 sample_name)/ bre_genotype_call,全量 CRUD + Excel 导入导出 + **VCF 导入**(marker/sample 自动建号、GT 编码、幂等)+ **DNA 指纹防错**(无性系混杂检测,同源不一致/异源一致两类标记));⑧ **精修项四连发**(① **DUS/品种保护「数据能力(三表)」** bre_dus_descriptor/test/observation + UPOV TG/53 桃描述符种子 15 条 + 菜单 900230 真实页与 G 段按钮 900800-900808;② **stage 感知** bre_trait.stage(童期/成株)驱动 BLUP/选择指数/决策预览的过滤与警示 + 批次 stage 落库;③ **k-fold 交叉验证外部验证** ABLUP+GXEBLUP 双支持(sire 家系分层留出、逐折容错,bre_cv_result/fold 落库,MLOps 溯源复用);④ **按 site EBV 公平性报告** site 系统性偏差 deviation/flagged + 排名一致性 Spearman + G×E 模式);⑨ **六项能力完善**(① **MT-BLUP 遗传相关**——成对双性状 REML(`mtblup.solve_bivariate`:y 堆叠 Var(u)=G0⊗A,Va/Ve 取单性状 REML、仅对 ρ 黄金分割求极大精确 REML),`run_genetic_corr` 逐对 bivariate 组装 G0 + Higham 半正定投影,落 `bre_genetic_corr_result`(job_type=GENCORR),Smith-Hazel 增 `g_method="mtblup"`(单对不收敛回退 Calo+warning、G 非正定特征值截断、`g_source` 落库可审计);② **GBLUP/ssGBLUP 引擎**——`genomic.py`:VanRaden G method1/2 + MAF 过滤 + blend 岭;`solve_gblup` 仅基因型株、`solve_ssgblup` 单步法 H⁻¹=A⁻¹+[[0,0],[0,G⁻¹−A22⁻¹]] 且 **V 块用 H 协方差**;`run_gblup` 样本 tree 直连/名称兜底、未映射+多等位跳过+warning,落 PredictionModel(GBLUP/ssGBLUP)+EBV 行;③ **DUS 特异性统计检验**——QN LSD(t_crit 由 `fdist.f_icdf` 二分反解 F(1,df))+ PQ/QL 状态众数、**必测描述符**驱动建议、参照=同 trial_study 自动 + 显式覆盖、落 `analysis_json` + conclusion 自动建议;④ **AMMI/Finlay-Wilkinson 稳定性**——FW 环境指数回归 b/R²/se_b/flag_stable(完美拟合 b≈1 判稳)、AMMI 残差 SVD→IPC/ASV/ecovalence、`run_stability` site/year 两维、格子 <2×2→409,落 `bre_stability_result`;⑤ **MLOps 重训+版本回滚**——`bre_prediction.is_active` 版本链(无 active 时首批 active)、`model/drift` 输入哈希漂移检测(轻量 `_gather_digest_inputs`)、`model/retrain` 漂移才重训+active 转移、`model/activate` 回滚原语;⑥ **BLUP stage 拆分**——`bre_trait_observation.stage` 观测级发育阶段、`run_ablup(stage)` 按 coalesce(obs.stage,trait.stage) 过滤+model_name `_{stage}` 后缀+批次 stage 落库、未指定但有分歧→note 警示);⑩ **田间试验精度补强·砧木×接穗随机互作(G×R)**——rootstock 由固定哑变量升级为**第三随机效应槽**(`run_ablup(gxr=True)` → method=GXRBLUP/job_type=GXR,按 `(基因型,砧木)` 分组建 Z₂ 随机互作、克隆坍缩系谱与 G×E 共享、rootstock 强制移出固定效应防共线、不可辨识门禁(同基因型无跨砧木/单元内无重复/残差 df<1)→409、σ²gxr/gxr_ratio/n_cross_rootstock 落批次 note;**Z₂ 单槽位 → G×E/G×R 互斥**(双开 409 + 前端互斥 watcher);求解器 `_solve_gxe` 加 factor_label/factor_name(G×E 警告文案逐字节不变、G×R 显「砧木」)、ENGINE_VERSION 1.2.0;G×E tab 加 G×R 复选框、批次表同显 σ²gxr);⑪ **基因组选择(GS)实证严谨性·GBLUP/ssGBLUP 专用 k-fold 交叉验证**——`run_cv` 加 `dataset_id/method/maf_min`(method=KFCV/GBLUP·KFCV/ssGBLUP),`genomic.kfold_cv_genomic` 掩蔽留出 GEBV vs 表型实证 pearson/RMSE(G/H/Hinv 只建一次、固定种子随机分层——GS 同世代样本无家系树,区别于 ABLUP 的 sire 家系留出)、`_gather_gblup_inputs` 提取(run_gblup↔GS CV 复用)、`_build_h` 缺失基因型补 base、ENGINE_VERSION 1.1.0、_DATA_VERSION v2.11;SSR 多等位 dummy 编码留待后续);⑫ **现代桃育种领域覆盖·S-等位基因交配兼容性 + 抗病/需冷量性状字典**(① `bre_germplasm.s_alleles`(String32,Sf=自交亲和型)+ `cross_combination` create/update 兼容校验——任亲本含 Sf→放行、共享 2 个 S 等位→409「配了不结」硬门禁、共享 1 个→`out.s_compat` 半兼容警示;②③ `bre_trait` 种子 5 条 numeric(细菌性穿孔病/褐腐病/白粉病 0-5 级病情指数 + 需冷量 h + 需热量 GDD,category「抗病性」「生态适应性」,into_ebv=1、direction=asc 进选种目标——统计引擎仅消费 numeric);④ **MAS/QTL/GWAS 闭环**(GWAS 引擎 GLM+PC:SVD 群体结构校正 + 逐标记单标记回归 + Bonferroni/BH-FDR + QTL 区间合并,纯 numpy 复用 fdist 零新依赖;bre_gwas_result/bre_gwas_snp/bre_qtl/bre_mas_panel/bre_mas_panel_marker 五新表;服务端 gwas/run|list|{id} + qtl CRUD + mas-panel CRUD(选标记 favorable_dose/direction/effect);decision_preview 加 marker 条件——童期幼苗无表型/无 EBV 也可被标记辅助选入;前端 900214 GWAS/QTL 页翻转(Manhattan/QQ 裸 echarts + 运行对话框 + 三 tab);e2e 7 段全过 + GBLUP/ssGBLUP 回归零回归,2026-08-04);⑭ **九缺口补齐(2026-08-04,用户重扫 12 项缺口剔除 A1/A4 余 9 项拍板全做,三批独立 e2e + 回归)**——批1 经典侧计算端点(纯计算不建表):**数据质量** `POST /statistics/data-quality`(缺失率/CV + IQR + MAD 稳健 z-score 双法异常标记)+ **遗传增益** `POST /statistics/genetic-gain`(ΔG=k·r_g·σ_A,k 经 Acklam 有理近似 Φ⁻¹ 纯 numpy 零 scipy)+ **主动选配** `POST /statistics/mating-recommend`(S-等位硬过滤 + 亲缘 A 惩罚 score=w_ebv·mid_parent_EBV−w_kin·max(0,r−threshold),不落库);批2 分子侧严谨性:**EMMAX 混合模型 GWAS**(`gwas._emmax`:零模型方差分量复用 `genomic._profile_solve` + eigh 对角化 K→V⁻¹ + 逐标记 GLS t²→fdist,method=emmax,run_gwas 后处理抽共享函数 GLM 逐字节不变)+ **SSR 多等位虚拟编码**(VCF 按 ALT 数定 ssr/snp、`_allelic_from_gt` 每等位一列、`build_g_matrix` 多等位 VanRaden 推广)+ **QTL×E 环境互作**(`POST /statistics/gwas-qtl-x-e` 分环境 GWAS 合并 stable/env-specific/异号 G×QTL 警示,不建表)+ **MAS 面板语义**(bre_mas_panel_marker.mode/favorable_allele/haplotype_group 三列 + `_mas_hit_map` additive/dominance/recessive/allele/haplotype 五语义);批3 求解器核心:**AR1×AR1 空间协方差**(`blup.solve_spatial`:e~N(0,σ²e·R)、R=AR1(ρ)⊗AR1(ρ) R⁻¹ 纯 numpy eigh、REML 对 (h²,ρ) 坐标上升黄金搜索、run_ablup(spatial=True)→method=AR1×AR1、与 G×E/G×R 互斥、缺坐标 409)+ **稀疏 A⁻¹+共轭梯度**(`_build_ainv_sparse` COO + `_cg_solve`、n>N_SPARSE(1000) 阈值分派 solver=sparse-cg、Hutchinson k=100 估 PEV 对角 reliability 近似、稠密路径逐字节不变)。`_DATA_VERSION` v2.13、blup 1.3.0 / genomic 1.2.0 / gwas 1.1.0。详见 `桃育种系统统计引擎实施记录.md`);⑮ **十二项真缺口补齐(2026-08-05,用户全量现状盘点收敛 12 件真缺口、剔除过时「待建」标记,拍板只补这 12 件,分三批独立 e2e + 全量回归零回归)**——批1 引擎三件(solver 扩展独立路径):**ssGWAS**(`gwas._ssgwas`:`build_g_matrix` 岭保正定构 G → `solve_gblup` 全样本 GEBV û → **Wang et al. 单步 GWAS MEM 对角近似**反推标记效应 `ê_j=(M_j'Z'G⁻¹û)/(2Σp_j(1−p_j))`、Wald t=ê/SE → fdist,共享 `_finalize`/`_bh_qvalues`/`_cluster` 后处理,method=ssgwas 透传+前端下拉,gwas 1.2.0)+ **全 MT-BLUP solve_multi**(m 性状 y 堆叠 Var(u)=G0⊗A、**EM-REML 迭代** G0+ve 单性状初始+特征值截断/Higham 投影保正定、max_iter 兜底,输出 G0 全元素+r_g 矩阵+n_iter/converged/warning,`run_genetic_corr(full_mtblup=True)` 一次 m 性状给完整 G0,逐对 bivariate 保活,mtblup 1.1.0)+ **AR1×AR1 双参 ρ aniso**(R_ij=ρ_row^|Δrow|·ρ_col^|Δcol|、ρ_row/ρ_col 交替坐标上升,`run_ablup(spatial_aniso=True)` → method=AR1×AR1(aniso)、note 落 rho_row/rho_col,**aniso=False 与 v1 逐字节一致**,blup 1.4.0);批2 模块四件(标准 CRUD 五件套+前端+菜单翻转+文案清理):**field_operation 农事操作 900051**(op_type 字典施肥/喷药/修剪/灌溉/疏果/套袋/采收 bre_dict 灌入)+ **observation 通用观测 900050**(EAV plot 级通用录入、obs_type numeric/text/date)+ **breeding_report 育种报告 900075**(CRUD + `POST /report/generate` 聚合 bre_prediction/bre_stability_result/bre_cv_result 结构化报告)+ **analysis_dataset 分析数据集 900070**(新表 bre_analysis_dataset jsonb×3 + status,「查看性状值」跳 statistics trait-values 复用既有视图);批3 底座五件:**审计切面**(base_crud 三写注入 CREATE/UPDATE 字段级 diff/DELETE + 批量导入仅汇总 IMPORT 一条 + `GET /bre/audit/list`)+ **统一编号服务**(`app/utils/number_gen.py` NumberGenService + `bre_sequence` + **pg_advisory_xact_lock 原子取号**,迁移 cross_combination/tree/selection_result/seedling 4 处格式保持)+ **超期预警定时任务**(每日 job 按 selection_rule 扫描树 N 年未决策/花粉批次过期/seed_lot 超期 → `bre_alert` + `GET /bre/alert/list` + 前端「预警中心」)+ **备份容灾**(`backend/scripts/pg_backup.sh`/`pg_restore.sh`,Temp/backup 按日期 + N 天轮转,每日 02:00 系统 job)+ **BrAPI + MIAPPE 互操作**(`/brapi/v2` 只读五端点 germplasm/observationvariables/studies/observations/miappe,BrAPI 2.x metadata+pagination+result 包裹,bre_germplasm→germplasmDbId/genus=Prunus/species=persica/subtaxa 映射);`_DATA_VERSION` v2.14、gwas 1.2.0 / mtblup 1.1.0 / blup 1.4.0。详见规格 §8.24–8.26 / `桃育种系统统计引擎实施记录.md` §十七);⑯ **桃育种业务流全面完善(2026-08-05,用户要求「对现有功能,结合桃育种实际业务流程与需求,进行全面测试分析,并完善」,三路审计收敛 10 项真缺口,拍板全部实施 + 两裁决:**导入按钮维持隐藏**(23+ 页显式隐藏非缺口)/ **采收入口走农事操作**(op_type=harvest 结构化产量表单,非独立模块),分三批独立 e2e + 全量回归零回归)**——批A 业务数据链(A1-A6):**果实采收结构化入口**(bre_field_operation 加 yield_kg/fruit_count/avg_fruit_weight/marketable_rate,op_type=harvest 树级采收同步写 bre_trait_observation 4 行、plot 级只留操作记录)+ **产量构成/物候/品质/生长量/描述性状种子 19 条**(bre_yield_phenology_traits.sql:单株产量/果数/均果重/好果率/裂果率 + 盛花期/果实成熟期/落叶期 + 可溶性固形物/可滴定酸/固酸比 + 主干周长/树高/冠幅 + 果形/茸毛/离核/果皮底色/着色类型)+ **种质级观测**(bre_observation.germplasm_id 描述数据入口)+ **授粉→收种→种子处理补链**(seed_lot.pollination_id + seed_treatment.seed_lot_id)+ **EAV 观测校验**(numeric/date parse + valid_min/max 越界 + 同(tree/plot/germplasm,trait,year,date)重复 409)+ **育种阶段自动设置 + 成株性状门禁**(tree stage 按 breeding_generation 推断、童期树录成株性状 409);批B 统计算法(B1-B4):**Type-B 多环境遗传力**(run_type_b_heredity 复用 mtblup.solve_bivariate 把环境当"性状"、env_dim=site/year、落 bre_type_b_result + /type-b-heredity + /type-b/{id})+ **遗传相关 genetic 模式**(correlation mode=genetic 逐对 bivariate 组装 G0,pheno 分支逐字节不变、不落库)+ **选择指数自动权重**(auto_weights=True → default_h2 兜底 0.1、强制 use_h2=False、direction 翻转)+ **UPGMA 层次聚类**(run_cluster 纯 numpy,POST /statistics/cluster 不落库);批C 前端(C1-C4):观测录入增强(observation plot/站点/germplasm 过滤 + germplasm 表单、field_operation harvest 结构化表单)+ 统计可视化 ECharts(correlation 热图 + gblup 可靠性热图/趋势折线 + type-B tab + cluster 树状图)+ combination-funnel 前端入口对话框 + stage_phenotype 容器同步(通用观测/农事操作翻真实页);`_DATA_VERSION` v2.15。详见规格 §8.27 / `桃育种系统统计引擎实施记录.md` §十八);⑰ **遗传链完整性两次修复(2026-08-05,用户先后报告「建种质断链」与「近交惩罚静默关闭」,核实确认 + 拍板落地,e2e 验证通过)**——① **世代闭环修复**:`selection_result._promote_tree_to_clone` 单株晋级到 line/regional_trial/released 建种质时**同步落 `bre_pedigree`**(child_code=品种名、dam/sire=tree.dam/sire 回退组合 female/male_parent_id、combination_id、generation、child_code 幂等)→ 晋升种质不再被统计引擎当 founder,跨世代系谱链闭合(判别点 A[T2,T3]=0→0.125、A[gT1,gA]=0.5);② **近交惩罚「静默关闭」修复**:`mating_recommend` 亲缘矩阵旧靠 `bre_pedigree.child_code` 精确字符串匹配建系谱,名称大小写/空格/代号错配即全空 → 所有配对 r=0 → kin_pen=0 → 近交规避失效且无告警;重写 `_germplasm_pedigree` **多源级联**(① 规范化 strip+casefold 名称反查显式系谱为权威 → ② `tree.germplasm_id` 直连 FK 兜底(多对去重后唯一一致才采纳、歧义回退 founder)→ ③ founder;祖先 BFS 展开 + 去重,修复候选既是 child 又是祖先时系谱重复抛『系谱个体重复』崩溃);`mating_recommend` 新增 **kinship_status(ok/partial/none) + kinship_warning + 逐对『亲缘未解析(r 按 0 计)』旗标**,绝不静默 no-op;设计红线 **FK 只兜底不覆盖显式系谱**(A6 回归 r=0.5 保真)。e2e 14 组断言 + 回归 A6/batch/gaps_base 零回归 + HTTP 核验新字段。详见规格 §8.28 / `桃育种系统统计引擎实施记录.md` §18.5/§18.6。);⑱ **选配「亲本 EBV」回退逻辑方法学修复(2026-08-05,用户报告 `mating_recommend` 旧实现对缺直接 EBV 的候选用「其子代树 EBV 均值」代表亲本育种值——① progeny-test 值非亲本自身值;② 双亲都缺时同一子代树等权计入 dam 与 sire 两侧稀释;③ 跨组合混合无区分,会误导选配排序。核实确认 + 拍板落地)**——`mating_recommend` EBV 回退重写:**direct(germplasm_id 直连亲本自身预测值)优先**、有 direct 绝不被子代树值污染;回退仅当无自身值时用、**显式标注「子代测验近似」并降权 0.5 参与打分**(`_EBV_SOURCE_FACTOR={direct:1.0,progeny:0.5,missing:0.0}`,mid=(f_a·ebv_a+f_b·ebv_b)/2,回退不掩盖 direct);**双亲均缺直接值的子代树剔除**(防双侧等权重复计);记 n_progeny/n_combos 辨别跨组合;返回体加 `candidate_ebv` + `ebv_source.coverage` + 逐对旗标「亲本EBV为子代测验近似(降权0.5)」/「亲本无EBV(按0计)」——EBV 来源显式可查绝不静默降级。e2e 5 组断言 + 回归 A6/亲缘/batch/gaps_base 零回归 + HTTP 核验(真实数据 coverage={direct:0,progeny:0,missing:12})。详见规格 §8.29 / `桃育种系统统计引擎实施记录.md` §18.7。);⑲ **数据质量报告「离群值」方向语义错位修复(2026-08-05,用户报告 §8.23 数据质量端点 IQR/MAD 把任何偏离分布的值都标「离群株」,与育种目标方向错位——正向偏离正是要选的精英单株,核实确认 + 拍板落地)**——`data_quality_report` 方向感知分流:按 `bre_trait.direction`(desc/None=高值优、asc=低值优)判定 `desirable_high`,IQR/MAD 命中的株按偏离侧**双通道分类**(`is_high=v>med`、`is_elite=is_high==desirable_high`):**同向偏离 → `extreme_candidates` 极值候选(精英)**(class=extreme_candidate)/ **反向偏离 → `outliers` 疑似录入错误**(class=outlier,高值优的异常低值、低值优的异常高值),两表互斥;返回体加 `direction` + `extreme_candidates` + `summary.n_extreme_candidates`、`has_warning/n_outliers` 语义收紧为疑似录入错误计数;前端数据质量 tab 改双表(精英 success / 错误 danger)+ 选育方向指示 + 无误报绿色 info alert。e2e 17 株断言(精英 16.0 进 extreme_candidates/side=high、错误 2.0 进 outliers/side=low、互斥不串表)+ 回归 A6/亲缘/batch/gaps_base 零回归 + HTTP 核验(asc 裂果率 bB_DIR5668 与 desc 果重 dA_DIR5668 方向/双表/计数经真实端点正确返回,真实数据无极端值→双表空无误报)。详见规格 §8.30 / `桃育种系统统计引擎实施记录.md` §18.8。);⑳ **ΔG 投影假设声明 + 工程健壮性打磨(2026-08-05,用户报告两点均非功能 bug,核实确认 + 拍板落地,e2e 验证通过)**——① **ΔG 投影假设显式声明**:`genetic_gain` 旧实现 `next_pheno_mean = pheno_mean ± dg` 隐含「环境均值恒定」,年际气候漂移会使投影偏;属投影演示性质,返回体新增 `note` 假设声明(环境均值恒定、未计入年际气候漂移与栽培措施变化;ΔG=k·r_g·σ_A 仅含遗传增益分量,next_pheno_mean 为投影演示值而非实测预测),前端 gain tab info alert 展示;② **空间模型缺坐标优雅降级**:`run_ablup(spatial=True)` 旧实现任一观测树缺 row/col 即整批 ValueError,现改为**剔除缺坐标株表型(保留系谱 → EBV 仍由系谱预测)、仅全缺坐标才整批 409**,剔除数显式写批次 note「缺坐标剔除N株表型(EBV由系谱预测)」、input_hash 用剔除后子集;③ **numpy 工程清理**:7 处函数体内重复 `import numpy` 收敛为模块级单次 + `data_quality_report` 逐株 flag 循环改 numpy 布尔掩码向量化(输出逐字节不变)。e2e spatial 降级场景(5 株含 1 缺坐标 → method=AR1×AR1/train_n=4/note 含剔除/5 株均有 EBV)+ A6 note 断言 + 回归 spatial/A6/亲缘/batch/gaps_base 五套零回归 + vue-tsc EXIT=0 + HTTP 核验(genetic-gain 返回 note、data-quality 返回 direction)。详见规格 §8.31 / `桃育种系统统计引擎实施记录.md` §18.9。);㉑ **A–F 六项功能级缺口·批1 父本验证 + 近交衰退(2026-08-05,用户全模块 grep 实证 A–F 六项缺口均为「有无/深度」问题、非正确性 bug,逐项复核确认 + 拍板「全部六项分批落地」;批1 独立 e2e + 全量回归零回归)**——**A 父本验证(consistency 不落库)**:① `pollination` 花粉来源一致性——`_validate_pollen_parent`(create/update 统一):花粉批次声明采集父本树(pollen.male_tree_id)时授粉声明父本树须一致否则 409(含「不一致」文案),批次无采集父本(混合/外地)或授粉未声明放行不武断;② `tree` 显式亲本 vs 组合父母本警示——`_resolve_parents` 返回 `(dam,sire,warning)`:显式 dam/sire 偏离组合 female/male_parent 时返回体 `warning`「显式母本/父本与组合母本/父本不一致(以显式为准)」(双侧/单侧聚合),**warning 不阻断**(tree 可独立建,武断 409 误伤),schema 只读字段不落库;③ `cross_combination` 同质自交门禁——`_check_parent_roles` 中 `female_parent_id==male_parent_id` → 409「母本与父本同为「{名}」,自交组合请确认」(create/update 生效亲本统一,与 S-等位 409 语义一致);**C 近交衰退分析(计算端点不建表)**——`POST /statistics/inbreeding-depression`(入参 trait_id/trait_code + year/trial_study_id 可选 + min_n=10):`blup.relationship_matrix` 的 F=A_ii−1(按树,**非近交树从 individuals 默认 F=0 兜底**否则被排除)+ trait 树级表型 group_by(tree_id) 均值 → **纯 numpy lstsq 回归 phenotype~F**——`sufficient/reason/n_obs/mean_F/max_F/direction/regression{intercept,slope,r2,t_slope,depression_rate,has_depression,interpretation}/high_inbreeding`(F 降序前 10 含 tree_no/value);`has_depression=slope<0 且 t_slope≤−1.645`(单侧 95% 大样本近似);n候选/空候选/λ<0 409;**E MABC 标记辅助回交**——`POST /statistics/mabc-progress`(纯计算不落库):**前景选择**复用 `_mas_hit_map`(五语义、stage 无关、童期幼苗可用)`foreground_pass`=命中≥阈值;**背景基因组恢复率**对 background 面板逐标记候选 vs 轮回亲本「纯合剂量一致」比例(`_pure_homologous`,杂合不计)均值=恢复率 %;**回交代建议**按 `_BC_LADDER`(F1→BC1→…→BC5→自交固定)+ `_MABC_GENERATIONS`:晋级下一代 / 再回交一代 / 恢复无法评估(轮回亲本缺背景基因型)补测后判定 / 前景未通过;输出 per_tree{前景命中/恢复率/bc_generation/reason} + `recommended`(前景通过按恢复率降序)+ summary + warning;门禁空候选/空面板/generation 非法/background_target∉(0,100]/轮回亲本不存在 409。e2e `ocs` 17 断言(Σc/c≥0/λ 梯度 avg_kinship 单调非增 1.0→0.5157→0.3211→0.2685/λ=0 退化=贪心/partial+warning/三 409)+ `mabc` 23 断言(前景 5pass+1fail/恢复复算 100·75·75·0/reason 晋级·再回交·前景未通过/recommended 恢复率降序/童期 C6/轮回亲本缺基因型 None+warning/六 409)+ 回归 molrigor/gwas/mating_kinship/mating_ebv/gblup_cv/statsflow/spatial/busflow/gaps_base/b8/prediction_rigor/audit_fix 全套零回归 + vue-tsc EXIT=0 + HTTP 核验。`_DATA_VERSION` v2.24。详见规格 §8.34 / `桃育种系统统计引擎实施记录.md` §18.12。);㉔ **A–F 六项功能级缺口·批4 分子亲本验证 + 试验设计深度(2026-08-05,用户实证 grep 指出 genotype_call 对 mendelian/parentage 零命中 + trial_design 仅 RCBD,逐项复核确认 + 拍板「平方格子+一般循环回退」,独立 e2e + 全量回归零回归)**——**A 孟德尔/亲本一致性检验**(`GET /bre/genotype_call/mendelian/check`,纯计算不落库):子代树样本基因型 vs 声明亲本(tree.dam_id/sire_id→germplasm)逐标记 union 规则(子代等位集 ⊆ dam∪sire 并集)判兼容,单株兼容率=兼容/信息位点、rate0→has_warning);系谱消费方断开隔离树亲本链(退化为 founder 表型保留:`_build_pedigree`/`run_ablup`/`inbreeding_depression`/`kinship_matrix`/`run_cv`/`_germplasm_pedigree`,GBLUP/ssGBLUP 基因型样本不受影响);**N2 统计引擎全量数值真值校验**:新探针 `e2e_stats_numerics_20260805.py` **ok=101 fail=0** 逐段独立 ground-truth 对照(blup/gxe/block/spatial-aniso/gblup/ssgblup/bivariate/multi/FW/ammi/rcbd/diallel/ocs/UPGMA/ΔG/data-quality/kinship 全验证),探针自身两处 fixture 缺陷修复(低 h² 小样本 r_g 假收敛换高遗传力良态设计、B4.2 硬编码 tree_id),**引擎本体零缺陷**;`_DATA_VERSION` v2.26、`blup.ENGINE_VERSION` 1.5.0。详见规格 §8.37 / `桃育种系统统计引擎实施记录.md` §18.15。);㉖ **批6 规划↔目标↔试验 可追溯性闭环(2026-08-05,用户全代码库 grep 实证 `bre_plan` 彻底孤立根表——零传入外键、`bre_trial` 无 plan_id/target_id、无 project/program 表;拍板「加试验挂目标」最小双链,独立 e2e 探针 17 断言 + 全量回归零回归)**——**三可空 FK 双链闭合**:`bre_target.plan_id` + `bre_trial.plan_id`(目标链 plan→target→cross_combination→tree)+ `bre_trial.target_id`(试验链 plan→trial→trial_study→tree),weld SQL 幂等、target/trial 三件套透传 + get_list 解析 `plan_name`/`target_name`;**父校验**(target/trial create 坏 plan_id/target_id → 409,None 跳过——孤目标/独立试验仍可建)+ **删除守卫**(plan.delete 有 target/trial 子 409、target.delete 有 combo/trial 子 409);**计划可追溯端点** `GET /bre/plan/trace/{id}`(plan 基础 + targets[] 组合株数 + trials[] 试验点株数 + totals,软删过滤、孤目标不入链、不存在 409);前端 target/trial 「所属计划/目标」select + plan 页「追溯」弹窗。验证:`e2e_plan_trace_20260805.py` 17 断言全过 + 全量回归零回归(含审计切面残留检查限定 `entity_type` 根治跨表撞 id 误报)+ vue-tsc EXIT=0 + HTTP 核验;`_DATA_VERSION` v2.27。详见规格 §8.38 / `桃育种系统统计引擎实施记录.md` §18.16。);㉗ **批7 统计引擎全量十模块 golden 复查·系谱键空间错位修复(2026-08-05,用户质疑 GBLUP/ssGBLUP、genetic_corr、type_b、cluster、stability、OCS、MABC、inbreeding_depression、trial_design、mendelian 十新建模块缺逐模块数值校验(golden-test 缺失)、历史上 G–L 静默失效都靠校验暴露,拍板「全量十项逐一复查」)**——复查确认 **8/10 已 golden**(GBLUP/ssGBLUP、cluster、stability、OCS、MABC、inbreeding_depression、trial_design、mendelian 既有探针已具严格数值断言),**type_b 与 genetic_corr 补齐 golden 缺口**——审计深处暴露**系谱键空间错位真 bug**:`run_type_b_heredity`/`correlation_matrix`(mtblup)/`run_genetic_corr` 四个服务路径把 **int `tree_id` 表型键**传给 `mtblup.solve_bivariate`,而 `_build_pedigree` 系谱用 **str `"t{id}"`**,`blup.solve` 把系谱外个体自动并入 base(无关 founder)→ **系谱被静默丢弃**(平衡数据同株跨环境掩盖;**分裂家系数据**无同株跨环境、靠全同胞链桥接暴露——int 键 → r_B/r_g 锁死 ±0.99 平剖面端点假收敛假阴性)。修复:共享 helper `_tree_individual_keys`(int→`"t{id}"` 对齐系谱键空间)收口**四个调用点**(`_genetic_corr_matrix`/`_smith_hazel_index` mtblup 分支/`run_genetic_corr`/`run_type_b_heredity`),`run_ablup` 早已正确不受影响。新探针 `e2e_rg_golden_20260805.py` **ok=21 fail=0**(20 founder×10 全同胞家系×3 同胞=30 株、3 站点、高遗传力 h²≈0.89:P0 诊断 str 键恢复 r_B=0.7+/int 键锁死 −0.99;P1 type_b 分裂家系 r_B(1,2)>0.5 + **n_common=0**(无共有树、系谱桥接生效直接证据);P2 correlation 平衡 r_g(A,B)>0.65/AC,BC<0.4/判别间隙>0.3/h²∈(0,1);P2b 分裂家系 discriminator r_g(S1,S2)>0.5)。验证:`e2e_statsflow`(单家系 fixture 对键 bug 不敏感 15 断言零变化)+ `e2e_advanced_mtblup` 回归通过 + **全量回归零回归**(60 套件,含版本断言同步)+ vue-tsc EXIT=0 + 后端重启 HTTP 核验(type-b-heredity / genetic-corr/run 分裂家系判别经真实端点)+ 备份镜像 `Temp/claude/backup_keyspace_20260805/`;`_DATA_VERSION` v2.28。详见规格 §8.39 / `桃育种系统统计引擎实施记录.md` §18.17;㉘ **回归基建:统一回归 + 高风险模块正式 tc 套件(2026-08-05,用户三点质疑——tc 零覆盖分析模块 / 批7 无 golden / 新模块算偏当正常输出(G/I 静默失效同款隐患)——核实全部成立,拍板「两者都要」;纯测试基建不 bump 版本)**——`run_regression.py`(仓库根)顺序串跑 `Temp/claude/e2e_*.py` + `backend/scripts/test_bre_analysis_*_tc.py` = **63 测试**、每测试独立子进程 log 到 `regression_logs/`、EXIT 汇总、`DPB_PYTHON` 覆盖解释器、utf-8 防 GBK;**4 个正式 tc 套件**(TestClient 真实 API + golden 数值断言,高风险模块必测):`test_bre_analysis_ssgblup_tc.py` ok=14(非基因型株 GBLUP EBV=0 / ssGBLUP EBV≠0——H⁻¹ 拼接判别)、`test_bre_analysis_ocs_tc.py` ok=23(投影梯度收敛/λ 单调/c'Ac/λ=0 退化)、`test_bre_analysis_mabc_tc.py` ok=24(前景/背景恢复率/晋级/童期)、`test_bre_analysis_mendelian_tc.py` ok=9(POST run 落库 + 隔离注册表 + 阈值 0.0 可逆);教训:HTTP schema 校验 → 422 / 服务层 CustomException → 409、tc 须显式 import UserModel、隔离断言时序、启动残留预清理 `_wipe`。全量回归 58/59(gaps_engines 批量卡死单跑 RC=0 确认);备份镜像 `Temp/claude/backup_test_rigor_20260805/`;交付流程:改统计引擎/业务链后端后跑 `python run_regression.py` 全量 EXIT=0。详见规格 §8.40 / `桃育种系统统计引擎实施记录.md` §18.18。);㉙ **回归基建 2:分析模块 tc 补齐(5 套)+ pytest 接入 + 本机 CI stage(2026-08-05,用户对 4 套 tc 认可后拍板补齐 genetic_corr/type_b_heredity/inbreeding_depression/trial_design/run_stability 五个静默失效风险较低模块,v8 验收标准定为「CI 跑通 pytest 全绿」;纯测试基建不 bump 版本,`_DATA_VERSION` 保持 v2.28)**——**补 5 套正式 tc**(`backend/scripts/test_bre_analysis_{genetic_corr,type_b,inbreeding,trial_design,stability}_tc.py`,TestClient 真实 API + `-X utf8` + `_wipe()` 残留预清理):genetic_corr ok=19(平衡 3 性状 r_g(AB)>0.65/间隙>0.3 + **分裂家系判别** r_g(S1,S2)>0.5 且 n_common=0,独立种子 SEED_S=3)、type_b ok=18(3 站点分裂家系 r_B>0.5 且 n_common=0,复刻 tY-first rng 序→0.990)、inbreeding ok=44(方向感知:衰退 slope<−40/无衰退/上升 slope>30 + deep 系谱 F=0.125 + min_n insufficient)、trial_design ok=25(增广对照 block_no=None 不落库 + α-格子平方 λ≤1/非素数告警/一般贪心 + **block_no=rep*100+block DB 读回** + 四 409)、stability ok=16(FW b≈2/1/0 + flag_stable C1=True + AMMI ASV rank + engine_version 落库);**pytest 接入**——`backend/tests/test_stat_analysis_tc.py` 9 套 @pytest.mark.pg + subprocess 串跑真实脚本、skipif 探测真实 PG16+Redis(**protocol=2**——redis-py 7.x 默认 RESP3 对老 WSL redis-server 报 ResponseError,与 app redis_connect 对齐)、env 显式构建剥 conftest 污染解析 .env.dev 可 TC_CI_* 覆盖;pyproject 注册 pg marker、conftest collect_ignore_glob 排除 scripts;**本机 CI stage `run_ci.py`**(仓库根,step 0 探测 PG+Redis 失败指引 / step 1 `pytest -m pg` / step 2 EXIT=0「CI 全绿」,日志 Temp/claude/ci_logs/;不做 GitHub Actions——全工程无 git 仓库);验证 5 套 EXIT=0(122 断言)+ `pytest -m pg` 9 passed(146s)+ skipif 9 skipped 不红 + run_ci EXIT=0 + run_regression glob 自动纳入;备份镜像 `Temp/claude/backup_analysis_tc2_20260805/`;交付流程:v8 验收 = `python run_ci.py` EXIT=0。详见规格 §8.41 / `桃育种系统统计引擎实施记录.md` §18.19。);㉚ **O2–O4 统计方法学广度(2026-08-05,用户系统核对统计引擎能力后确认三项 P2 方法学缺口——幼年–成年遗传相关 / 非线性基因组预测 / 约束选择指数,均零命中、不影响当前业务正确性属方法库广度,拍板「O2–O4 先落地」+ 两决策:① O4 用经典 Kempthorne–Nordskog =0 闭式解(纯 numpy 不迭代)② 前后端同步扩展;`_DATA_VERSION` v2.28 → v2.29、genomic 1.4.0,无新表)**——**O2 幼年–成年遗传相关**:`_values_by_tree_env` 加 env_dim=stage 分支(`coalesce(obs.stage, TraitModel.stage)` 分组)+ `run_type_b_heredity` env_dim 校验扩 stage——发育阶段当"环境"逐对 `mtblup.solve_bivariate` REML 精确估 r_g(>0.5 表示童期可借力成株、早期间接选择有效),复用 `bre_type_b_result` 不建表,前端 Type-B 下拉加 stage;**O3 非线性基因组预测**:`genomic.py` 1.4.0 加 `solve_rrblup`(岭回归逐标记 u=(Xc'Xc+λI)⁻¹Xc'yc,**与 GBLUP 数学对偶**(同数据 EBV 逐位吻合)、输出 marker effects)+ `solve_bayesb`(BayesB Gibbs 可变选择 δ_j~Bernoulli(1−π)、**确定性 seed 可复现**)+ `kfold_cv_genomic` dosage 分派 rrblup/bayesb(实证 CV);`run_gblup` method 扩 rrblup/bayesb + seed 透传落 PredictionModel(method=RRBLUP/BayesB)+EBV 行、`run_cv` GS 分支 KFCV/RRBLUP·KFCV/BayesB;**O4 约束选择指数**:`_smith_hazel_index` 加 restricted(**Kempthorne-Nordskog Lagrange 闭式投影** b=P⁻¹·G·(I−M)·a、M=C'(C·G·P⁻¹·G·C')⁻¹·C·G·P⁻¹·G → 受限性状 **ΔG=0**;对照旧公式 M=C'(C·P⁻¹·C')⁻¹·C·P⁻¹ 实测 ΔG=4.46 不满足证明修正必要)+ economic_weights(绝对尺度不归一化、可与 restricted 叠加、asc 翻转),method 校验扩 zsum/smith_hazel/restricted、落库 SI_RES;**顺手修复 tc 暴露的既有缺口**:`cv_detail` 折明细缺 `cv_result_id` → 任意 GET /cv/{id} 400(既有 tc 未触达静默失效)——补上可查;验证:e2e 探针 19 断言(对偶逐位 1.42e-13 / BayesB 可复现 / 受限 ΔG=0 机器精度 −8.88e-16 / O2 真实 PG r_g=0.6145)+ 正式 tc 第 10 套 `test_bre_analysis_o234_tc.py` ok=41 fail=0(r_g=0.8995 / bayesb 同 seed 两次 EBV 逐位一致 / rrblup·GBLUP EBV 相关 1.000 / b_受限=0.0 / economic desc>0·asc<0 / 三 409)+ 全量回归零回归 + `run_ci.py` EXIT=0;备份镜像 `Temp/claude/backup_o234_20260805/`。详见规格 §8.42 / `桃育种系统统计引擎实施记录.md` §18.20。;㉛ **O1 花期数据消费补强(2026-08-06,用户系统核对花期字段零消费——`bre_germplasm.flowering_period` 等从未被任何统计/决策逻辑消费,核实确认 + 定性 P1 数据消费补强 + 辅助信息(非 S-allele 级硬错误防呆),拍板三档位落地;`_DATA_VERSION` v2.29 → v2.30,无新表)**——① **花期数据建模升级(结构化区间,前置)**:`bre_germplasm` 加双 Date 列 `bloom_start_date`/`bloom_end_date`(weld SQL 幂等 + COMMENT),`flowering_period` 5 档字典保留作粗粒度 fallback;model/schema/service(Excel 导入导出/模板 header 同步)+ 前端 germplasm 表单改两个独立 date 字段直绑(useCrudForm 无提交前 transform → 弃 daterange,与 acquisition_date 同模式零转换)——花期字段首次被消费;② **mating_recommend 花期重叠软警示(不硬阻断)**:`_bloom_overlap`(结构化区间月日年际比较 `_md()` 取 tm_yday 优先;缺区间 fallback 5 档 `_BLOOM_TIER_ORDER` 相邻/同档视为重叠)四态——overlap(重叠可同期授粉,**不进 flags[] 不阻断**)/ store(父本先开花需采粉贮藏)/ offset(母本先开花注意柱头可授期)/ unknown(缺花期数据提示补录),pairs 加 bloom_status/bloom_msg、非重叠三态追加 flags[](前端红色 tag);③ **授粉窗口规划消费 bre_pollen**:新端点 `GET /bre/pollen/window-plan?window_start=&window_end=`(`window_plan` 服务方法,窗口反向 409)——花期种质 `_project_bloom` 结构化区间按年际月日投影到窗口起始年(3-4 月单年窗口假设)、缺区间 fallback `_BLOOM_TIER_SPAN` 5 档代表区间并标注「粗粒度」;**窗口覆盖三态** covered(整段有批次 collect≤bs and expiry≥be)/partial/none(n_need_pollen 计 none);**库存五态** full/expiring(窗口内到期)/entering(窗口内采集)/expired(窗口前失效)/not_started;前端花粉页「授粉窗口规划」卡(daterange + 生成 + 缺粉 alert + 花期覆盖表 + 库存状态表,默认 03-01~04-30)。验证:e2e 探针 `e2e_o1_bloom_20260805.py` 4 段全断言(花期建模双 Date 落库 / 6 种质 15 对四态(区间三类 + 档位 store + 混合对 unknown)/ 窗口覆盖三态 + 档位投影 + 缺粉集合 / 库存五态 / 反向 409)+ vue-tsc EXIT=0 + 全量回归零回归 + `run_ci.py` EXIT=0 + HTTP 核验;备份镜像 `Temp/claude/backup_o1_bloom_20260805/`。详见规格 §8.43 / `桃育种系统统计引擎实施记录.md` §18.22。;**2026-08-06 追加**:业务链路与数据模型说明书 v1.1 已与代码同步(O1 花期 / N4 血缘 / 亲本校验 / 世代闭环 / §九 QA 与 CI)。 --- ## 一、主表:模块 ↔ 层 ↔ 规格 ↔ SOP ↔ 一期 ↔ 数据表 ↔ 状态 | 模块 | 层 | 规格章节(v2.7) | 报告SOP阶段 | 一期 | 数据表 | 状态 | |---|---|---|---|---|---|---| | 种质资源 | L1 | §4 germplasm | 阶段1 | 是 | breeding_germplasm | ✅落地(基础+**s_alleles** S-等位基因,Sf=自交亲和型,2026-08-04) | | 性状字典 | L1 | §3.1 | 阶段6 表型 | 是 | breeding_trait | ✅落地(基础+direction/into_ebv/default_h2+**抗病/需冷量 5 条 numeric 种子**:细菌性穿孔病/褐腐病/白粉病 0-5 级病情指数 + 需冷量 h + 需热量 GDD,into_ebv=1 进选种目标,2026-08-04;**产量构成/物候/品质/生长量/描述性状种子 19 条**:单株产量/果数/均果重/好果率/裂果率 + 盛花期/果实成熟期/落叶期 + 可溶性固形物/可滴定酸/固酸比 + 主干周长/树高/冠幅 + 果形/茸毛/离核/果皮底色/着色类型,2026-08-05) | | 砧木字典 | L1 | — | 阶段6 表型 | 是 | breeding_rootstock | ✅落地(矮化类/砧穗亲和性;**G×R 随机互作** rootstock 由固定哑变量升随机效应槽,2026-08-04) | | 选择规则 | L1 | §3.11 | 阶段7 评价 | 是 | breeding_selection_rule | ✅落地(方向感知 conditions_json) | | 试验基地 | L1 | §4 site | 阶段5 | 是 | breeding_site | ✅落地(基础) | | 试验地块 | L1 | — | 阶段5 | 是 | breeding_plot | ✅落地 | | 育种人员 | L1 | — | 全程 | 是 | breeding_personnel | ✅落地 | | 育种目标 | L1 | — | 阶段1 | 是 | breeding_target | ✅落地 | | 系谱链(pedigree) | L1 | §3.18 | 阶段1 | 是 | breeding_pedigree | ✅落地(独立系谱表,dam/sire 递归闭环,clone+germplasm 统一覆盖,A 矩阵唯一权威,2026-08-04;**mating_recommend 亲缘矩阵多源解析**——显式系谱规范化名称反查权威 + `tree.germplasm_id` 直连 FK 兜底(唯一一致)+ BFS 祖先展开去重,kinship_status/warning 显式告警,2026-08-05) | | 杂交组合 | L2 | §4 cross_combination | 阶段2 | 是 | breeding_cross_combination | ✅落地(基础+**S-等位基因交配兼容性校验**:任亲本含 Sf→放行、共享 2 个→409「配了不结」硬门禁、共享 1 个→s_compat 半兼容警示,2026-08-04;**同质自交门禁**:female==male → 409「自交组合请确认」(create/update 生效亲本统一,A3),2026-08-05) | | 授粉管理 | L2 | §4 pollination(含 §3.19 关联) | 阶段2 | 是 | breeding_pollination | ✅落地(基础+pollen_lot_id/授粉方式/窗口校验,2026-08-04;**花粉来源父本一致性**:批次采集父本≠授粉声明父本→409(混合/外地批次放行,A1),2026-08-05) | | 花粉档案 | L2 | §3.19 | 阶段2 | 是 | breeding_pollen | ✅落地(采集/贮藏/活力/有效期+available_lots,2026-08-04;**pollination 来源一致性消费** male_tree_id,2026-08-05) | | 种子处理 | L2 | — | 阶段3 | 是 | breeding_seed_treatment | ✅落地(基础+**seed_lot_id 关联补链**(收种→种子处理,A4),2026-08-05) | | 种子批库存 | L2 | §3.13 | 阶段3 | 是 | breeding_seed_lot | ✅落地(基础+超期预警接入+**pollination_id 关联补链**(授粉→收种,A4),2026-08-05) | | 育苗管理 | L2 | §4 seedling | 阶段4 | 是 | breeding_seedling | ✅落地(基础) | | 定植管理 | L2 | §4 planting | 阶段5 | 是 | breeding_planting | ✅落地(基础) | | 单株评价 | L2 | §4 tree_evaluation | 阶段6 | 是 | breeding_tree_evaluation | ✅落地(基础) | | 育种单株 | L2 | §4 tree | 阶段6 | 是 | breeding_tree | ✅落地(基础+**stage 自动设置**(create 按 breeding_generation 推断 juvenile/evaluation,A6),2026-08-05;**显式亲本 vs 组合父母本警示**:显式 dam/sire 偏离组合时返回体 warning「以显式为准」(不阻断,A2),2026-08-05) | | 单株照片 | L2 | — | 阶段6 | 是 | breeding_tree_photo | ✅落地 | | 扩展观测(EAV) | L2 | §3.2 | 阶段6 | 是 | breeding_observation | ✅落地(EAV 通用录入可挂 plot 级、obs_type numeric/text/date,900050;**germplasm 级观测**(bre_observation.germplasm_id 描述性数据入口,A3)+**EAV 校验**(numeric/date parse、valid_min/max 越界、同键重复 409,A5),2026-08-05) | | 农事操作 | L2 | §3.3 | 阶段6 | 是 | breeding_field_operation | ✅落地(op_type 字典施肥/喷药/修剪/灌溉/疏果/套袋/采收,900051;**采收结构化入口** op_type=harvest 产量表单 yield_kg/fruit_count/avg_fruit_weight/marketable_rate,树级采收同步写统计性状观测、plot 级只留操作记录,A1,2026-08-05) | | 选育结果 | L2 | §4 selection_result | 阶段7 | 是 | breeding_selection_result | ✅落地(基础;**晋级同步落系谱**——单株晋级 line/regional_trial/released 建种质时自动写 bre_pedigree(tree.dam/sire 回退组合亲本),跨代系谱链闭合,2026-08-05) | | 克隆扩繁 | L2 | §3.8 | 阶段8 | 是 | breeding_propagation | ✅落地 | | 分组/标签 | L2 | §3.5 | 阶段8 | 否(二期) | breeding_group / member | ✅落地(2026-08-05) | | DUS/品种保护 | L2 | §8.17 台账 | 阶段9 | 否 | breeding_dus_descriptor / breeding_dus_test / breeding_dus_observation | ✅落地(数据能力三表 + UPOV TG/53 描述符种子,2026-08-04) | | 区域试验/登记 | L2 | — | 阶段10 | 否 | (target 关联) | ⏳待建 | | MET 试验结构 | L3 | §3.4 | 阶段5 | 否(二期) | breeding_trial / trial_study / study_entry | ✅落地(trial/trial_study/trial_study_entry 全模块,2026-08-05;**RCBD 试验设计深度**——`POST /statistics/trial-design` 按 block_count 均分 entry 到区组 + random.Random(seed) 组内随机可复现、`bre_trial_study_entry.block_no` 落库;`run_anova(block=True)` 设计基 ANOVA 析出区组效应 SS_block/F_block/p_block(method=ANOVA/H2/RCBD),A–F 六缺口·批2,v2.23,2026-08-05;**增广/α-格子设计深度**——augmented 对照 anchoring(check_germplasm_ids 每区组重复、block_no 不落库)+ 新品系 round-robin 均分区组;alpha 平方闭式格子(v=k² 直线构造、完全格子 r=k+1、k 素数完全平衡否则 balance_warning 保守告警)/ 一般 v 贪心可分解回退,block_no=rep*100+block 复合编码,A–F 六缺口·批4,v2.25,2026-08-05) | | 环境因子(G×E) | L3 | §3.9 | 全程 | 否(二期) | breeding_environment_condition | ✅落地(2026-08-05) | | 统一性状值视图 | L3 | §4 末尾 | 阶段6 | 是(视图) | v_trait_value | ✅落地(v_trait_value + /statistics/trait-values 长表查询,2026-08-04) | | 描述统计 / ANOVA | L3 | §5 3.6–3.8 | — | 是(地基) | (引擎) | ✅落地(/describe 描述统计 + /anova/run ANOVA+H²,纯 numpy 零 R,2026-08-04) | | **配合力 GCA/SCA** | L3 | §5 3.9 | — | **是(一期2个)** | (引擎 + prediction) | ✅落地(交配设计 design_type) | | **育种值 EBV/ABLUP** | L3 | §3.12 / §5 3.10 | — | **是(一期2个)** | breeding_prediction / breeding_prediction_value | ✅落地(ABLUP+GXEBLUP+G×E,2026-08-03;**PA 落库**+**MLOps 溯源** data_version/input_hash/engine_version+**germplasm_id 填充**+**空间竞争协变量** covariate=competition+**stage 感知**(童期/成株过滤与警示、批次 stage 落库)+**k-fold CV 外部验证**(ABLUP/GXEBLUP 双支持,sire 家系分层留出,bre_cv_result/fold 落库)+**MT-BLUP 成对双性状遗传相关**+**GBLUP/ssGBLUP 基因组选择引擎**+**AMMI/Finlay-Wilkinson 稳定性**+**BLUP stage 拆分**(观测级 stage 过滤,model_name `_{stage}` 后缀)+**MLOps 重训/版本回滚**(is_active 版本链 + drift/retrain/activate 端点)+**G×R 砧木×接穗随机互作**(method=GXRBLUP,rootstock 升级第三随机效应槽、与 G×E 互斥、σ²gxr 落 note,2026-08-04)+**GS 专用 k-fold 交叉验证**(GBLUP/ssGBLUP 掩蔽留出 GEBV vs 表型实证 pearson,method=KFCV/GBLUP·KFCV/ssGBLUP,固定种子随机分层、G/H/Hinv 只建一次,`genomic.kfold_cv_genomic`,2026-08-04)+**AR1×AR1 空间协方差**(run_ablup(spatial=True) → method=AR1×AR1/model_name=SPATIAL_*,e~N(0,σ²e·R) R=AR1(ρ)⊗AR1(ρ) 纯 numpy eigh 求 R⁻¹、REML 对 (h²,ρ) 坐标上升黄金搜索、与 G×E/G×R 互斥、缺 row/col 坐标 409,blup 1.3.0,2026-08-04)+**稀疏 A⁻¹+共轭梯度**(n>N_SPARSE(1000) 阈值分派 solver=sparse-cg、`_build_ainv_sparse` COO + `_cg_solve` + Hutchinson k=100 可靠性近似、稠密路径零变化,2026-08-04)+**经典侧计算端点**(数据质量 data-quality IQR+MAD 异常诊断 / 遗传增益 genetic-gain ΔG=k·r_g·σ_A 逐轮投影 / 主动选配 mating-recommend S-等位硬过滤+亲缘惩罚,纯计算不建表,2026-08-04;**EBV 来源置信修复**——direct 亲本自身值优先、缺直接值回退「子代测验近似」显式标注+降权 0.5、双亲均缺的子代树剔除防双侧等权重复计、candidate_ebv/coverage/逐对旗标显式可查,2026-08-05;**离群值方向语义修复**——IQR/MAD 偏离株按 bre_trait.direction 双通道分流:同向偏离→`extreme_candidates` 极值候选(精英)/ 反向偏离→`outliers` 疑似录入错误(高值优的异常低值、低值优的异常高值),返回体加 direction/extreme_candidates/summary.n_extreme_candidates、outliers 只含反向株、前端双表+方向指示,2026-08-05)+**Type-B 多环境遗传力**(run_type_b_heredity:`mtblup.solve_bivariate` 把环境当"性状"逐对精确 REML、env_dim=site/year、落 `bre_type_b_result`、POST /statistics/type-b-heredity + GET /type-b/{id})+**遗传相关 genetic 模式**(correlation mode=genetic 逐对 bivariate 组装 G0、pheno 分支逐字节不变、不落库)+**UPGMA 层次聚类**(POST /statistics/cluster 纯 numpy、输出 clusters/merges/order、不落库),2026-08-05)+**近交衰退分析**(POST /statistics/inbreeding-depression:`relationship_matrix` 的 F=A_ii−1(非近交树 F=0 兜底)+ trait 树级表型均值 → numpy lstsq 回归 phenotype~F——slope/r2/t_slope/depression_rate/has_depression/interpretation + high_inbreeding 高 F 株清单(前 10),n