Files
dpb/doc/桃育种系统规划对照总表.md
T
34047007@qq.com e937fc930c checkpoint: real-scale 数据链 + 统计引擎 + ABLUP 稀疏性能修复
init 后首次落盘,累计工作:
- 数据侧:simulate_breeding_data real-scale 3.5万树重建 + 分层观测
- 引擎侧:ABLUP 稀疏生产档 EM-REML(blup 1.6.0/1.7.0);性能倒挂修复——
  系谱闭包收口为 BFS 可达祖先 + N_EXACT 3000 对齐 N_SUBSAMPLE(选中 200~3000 树
  不再顶进数小时精确迹尾),A/B 数值等价实证 + 守卫探针
- 前端:观测过滤 + 表单/HTTP 工具链完善
- 文档:业务链/观测梳理 + 引擎实施记录 + 规划对照总表
- gitignore:排除 Temp/调试脚本/一次性验证输出
2026-08-07 08:03:10 +08:00

98 lines
66 KiB
Markdown
Raw 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.
# 桃育种系统 · 规划对照总表
> **版本**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=competitionChebyshev 邻域株数,无坐标显式报错));⑥ **组合得失漏斗 v_combination_funnel**(按组合汇总 花→果→种→苗→定植→树→入选 六级派生指标——结实率/出苗率/选择强度滚到组合层,配合力第一手证据,只读端点可查);⑦ **分子育种「建数据能力」**(§3.7 四表落地:bre_marker / bre_genotyping_dataset / bre_genotype_sampleweld 补 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⊗AVa/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 LSDt_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_nameG×E 警告文案逐字节不变、G×R 显「砧木」)、ENGINE_VERSION 1.2.0G×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/RMSEG/H/Hinv 只建一次、固定种子随机分层——GS 同世代样本无家系树,区别于 ABLUP 的 sire 家系留出)、`_gather_gblup_inputs` 提取(run_gblup↔GS CV 复用)、`_build_h` 缺失基因型补 base、ENGINE_VERSION 1.1.0、_DATA_VERSION v2.11SSR 多等位 dummy 编码留待后续);⑫ **现代桃育种领域覆盖·S-等位基因交配兼容性 + 抗病/需冷量性状字典**(① `bre_germplasm.s_alleles`String32Sf=自交亲和型)+ `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·σ_Ak 经 Acklam 有理近似 Φ⁻¹ 纯 numpy 零 scipy+ **主动选配** `POST /statistics/mating-recommend`S-等位硬过滤 + 亲缘 A 惩罚 score=w_ebv·mid_parent_EBVw_kin·max(0,rthreshold),不落库);批2 分子侧严谨性:**EMMAX 混合模型 GWAS**`gwas._emmax`:零模型方差分量复用 `genomic._profile_solve` + eigh 对角化 K→V⁻¹ + 逐标记 GLS t²→fdistmethod=emmaxrun_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(1p_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/miappeBrAPI 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_rateop_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 组装 G0pheno 分支逐字节不变、不落库)+ **选择指数自动权重**auto_weights=True → default_h2 兜底 0.1、强制 use_h2=False、direction 翻转)+ **UPGMA 层次聚类**run_cluster 纯 numpyPOST /statistics/cluster 不落库);批C 前端(C1-C4):观测录入增强(observation plot/站点/germplasm 过滤 + germplasm 表单、field_operation harvest 结构化表单)+ 统计可视化 EChartscorrelation 热图 + 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 回退重写:**directgermplasm_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_ii1(按树,**非近交树从 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<min_n 优雅降级 sufficient=false+reason(不 409);前端「亲缘/近交」tab 加衰退区(trait/year + el-alert + el-descriptions + 高 F 株表,el-alert `'error'` 修复 TS2322)。e2e `parent_validation` 10 断言(A1 不一致 409/一致放行/混合放行/update 同门禁 + A2 双侧警示/单侧仅父本/一致无警示/update 警示 + A3 create/update 同质 409+ `inbreeding_depression` 4 断言(12 树 F 梯度:衰退 y=10060F → slope≈−60/has_depression=true/前 6 高 F=自交株;无衰退 slope≈0/未检出;min_n=20 insufficient 含「12 棵」「≥20」;性状不存在 409+ 回归 spatial/statsflow/A6/亲缘/batch/gaps_base 六套零回归 + vue-tsc EXIT=0 + HTTP 核验(真实稀疏数据 code=0/sufficient=false/n_obs=2/reason)。`_DATA_VERSION` v2.22。详见规格 §8.32 / `桃育种系统统计引擎实施记录.md` §18.10。;㉒ **A–F 六项功能级缺口·批2 GS 家系 CV + 试验设计深度(2026-08-05,批1 已落地 ㉑/v2.22;批2 = B+F,独立 e2e + 全量回归零回归)**——**B GS 家系 CV(深度:随机分层 → 家系阻塞折)**——`genomic.kfold_cv_genomic` 加 `split="random"|"family"` + `family_of`random 现有 round-robin 逐字节不变(回归零变化);family 照 blup.kfold_cv 的 sire 家系留出模式——同家系个体同折(防亲缘泄漏高估准确度)、无家系个体自成一族、**家系数<折数 k 折叠并 warning**、单家系 folds=[]+warning,输出 n_families`run_cv` 加 split 透传——ped_rows 已取 sire_id/male_parent_id → `family_of={t{tid}: s{sire}}`sire 缺失回退组合 male_parent),note 记 `split=family · n_families=N`;前端 runCv 加 split 下拉 + n_families 列;**F 试验设计深度(RCBD 生成 + 设计基 ANOVA**——F1 `bre_trial_study_entry.block_no`weld SQL 幂等)+ `POST /statistics/trial-design` RCBD 生成器(按 block_count 均分到区组 + `random.Random(seed)` 组内随机可复现、case() 批量落库、blocks 输出、无条目 409);F2 `anova.solve_rcbd` RCBD 双因素 Type I 顺序(析出 SS_block/F_block/p_block + 校正后遗传差异)+ `run_anova(block=True)`method=ANOVA/H2/RCBD、<2 区组 409 提示先运行 trial-designblock=False 单因素路径逐字节不变);前端 ANOVA tab 加「生成 RCBD 设计」工具条 + 设计区组表 + block 校正 checkbox + 区组均值。e2e `trial_design` 5 组断言(生成/复现/落库/block=True 区组效应/门禁)+ `gs_family_cv` 5 组断言(家系阻塞折 [3,6,6]/每折1家系/random 回归零变化/家系数折叠/单家系边界)+ 回归 gblup_cv/statsflow/spatial/busflow/kinship/gaps_base/molrigor 七套零回归 + vue-tsc EXIT=0 + HTTP 核验。`_DATA_VERSION` v2.23、genomic 1.3.0。详见规格 §8.33 / `桃育种系统统计引擎实施记录.md` §18.11。);㉓ **A–F 六项功能级缺口·批3 OCS 最优贡献选择 + MABC 标记辅助回交(2026-08-05,批1/批2 已落地 ㉑/v2.22、㉒/v2.23;批3 = D+EAF 六项闭环收官;独立 e2e + 全量回归零回归)**——共享 **`_candidate_ebv_map` 抽取**mating_recommend 内联 EBV 解析原样提取为共享 helperdirect germplasm_id 优先 / progeny 子代均值降权 0.5 / **双亲均缺直接值子代树剔除(v2.19 双侧去重方法论随抽取原样保留,非回归)**/ n_progeny·n_combos/coveragemating 回归 14/14 零变化);**D OCS 最优贡献选择**——`POST /statistics/ocs`(纯计算不落库):**max Σc_i·ebv_i λ·c'Acs.t. Σc=n_select、c≥0**(纯 numpy **欧氏投影梯度** `_proj_simplex` + `_solve_ocs`,无 scipyA 由系谱+`blup.relationship_matrix` rmat 组装、对角=1、覆盖<100% → kinship_status=partial+warning);输出 `contributions`c 降序含 ebv/source/可选 n_progeny·n_combos+ `mean_ebv` + `avg_kinship`c'Ac+ `kinship_quad` + `vs_top_n`(贪心 top-n 对照:mean_ebv 相当 + kinship_reduction,量化 OCS 亲缘控制价值);门禁 n_select>候选/空候选/λ<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 并集)判兼容,单株兼容率=兼容/信息位点、rate<compat_threshold(0.98 对齐指纹)判 flag,亲本基因型跨数据集解析(同数据集优先否则全库最低 id 兜底)、双亲空→no_declared_parents/亲本声明但无 germplasm 基因型→missing_parent_genotype(不 409,数据现状)、incompatible_markers 明细(marker_id/allele/dam/sire)——填补 genotype_call 仅 fingerprint_check 的 parentage 零命中缺口;**B 试验设计深度(trial_design 仅 RCBD → augmented+alpharcbd 路径逐字节不变)**——**增广** check_germplasm_ids 显式对照每区组重复(anchors、block_no 不落库)+ 新品系 rng.shuffle round-robin 均分区组落 1..block_count(对照非条目子集/无对照 409);**α-格子** block_size=k+reps=r 可选——平方 v=k² 闭式格子(rep m 直线 y≡m·x+(b1) mod k、m=k=竖列、完全格子 r=k+1 任一对至多同块一次 λ≤1、k 素数完全平衡否则 balance_warning=True 保守告警)、非平方 v 贪心可分解构造(used_pairs 避免同块对重复+卡死复用告警)、block_no 复合编码 rep*100+block 落库(探针抓出平方分支 0-based off-by-one 真 bug 已修)、校验 v%k≠0/非平方缺 k/重复数越界 409。e2e mendelian_check 8 断言(跨数据集解析/alien 等位 rate=0.8 flag/双亲空与缺基因型状态/空数据集零值)+ trial_design_ext 19 断言(增广 anchoring/平方格子 λ≤1/部分 r/非素数告警/一般贪心/四 409)+ rcbd 路径零变化 + 全套 13 套回归零回归 + vue-tsc EXIT=0 + HTTP 核验(mendelian/check 200 零值 + trial-design augmented/alpha 分派 409 + latin 非法 409)。`_DATA_VERSION` v2.25。详见规格 §8.36 / `桃育种系统统计引擎实施记录.md` §18.14。);㉕ **批5 区组随机效应 ABLUP + 孟德尔检验落库/隔离/进报告 + 统计引擎全量数值校验(2026-08-05,用户实证复查三项全部成立、拍板落地,独立三探针 + 27 套全量回归零回归)**——**N3 区组随机效应**`blup.solve` 加 `block` 参数分派 `_solve_block`(第二随机效应、镜像 `_solve_gxe`,σ²block/block_ratio/block_effects/n_blocksENGINE_VERSION 1.5.0);`run_ablup(block=True)` → method=ABLUP-BLOCK`bre_tree.block_no` 作区组(增广/α-格子不完全区组结构终于被 BLUP 消费)、缺 block_no 树降级剔表型留系谱、<2 区组 409、与 gxe/gxrZ₂ 槽)及 spatial(残差结构)互斥 409,前端 GxE tab block 开关;**N1 孟德尔检验落库 + 自动隔离 + 进报告**:纯计算核心抽共享 `_compute_mendelian`,新 `POST /bre/genotype_call/mendelian/check/run` 落 `bre_mendelian_check`+每树子表+`bre_pedigree_exclusion` 隔离注册表(flag→upsert 隔离、未 flag→清除,**可逆**),GET 只读预览零回归;`data_quality_report(dataset_id)` 加 mendelian 段(flagged>0→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 → 409None 跳过——孤目标/独立试验仍可建)+ **删除守卫**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.99P1 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=9POST run 落库 + 隔离注册表 + 阈值 0.0 可逆);教训:HTTP schema 校验 → 422 / 服务层 CustomException → 409、tc 须显式 import UserModel、隔离断言时序、启动残留预清理 `_wipe`。全量回归 58/59gaps_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 stage2026-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=183 站点分裂家系 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=16FW 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=0122 断言)+ `pytest -m pg` 9 passed146s+ 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。);㉚ **O2O4 统计方法学广度(2026-08-05,用户系统核对统计引擎能力后确认三项 P2 方法学缺口——幼年–成年遗传相关 / 非线性基因组预测 / 约束选择指数,均零命中、不影响当前业务正确性属方法库广度,拍板「O2–O4 先落地」+ 两决策:① O4 用经典 KempthorneNordskog =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·(IM)·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=0r_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 档字典保留作粗粒度 fallbackmodel/schema/serviceExcel 导入导出/模板 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/nonen_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 + 需热量 GDDinto_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_lots2026-08-04**pollination 来源一致性消费** male_tree_id2026-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/evaluationA6),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/date900050**germplasm 级观测**bre_observation.germplasm_id 描述性数据入口,A3+**EAV 校验**numeric/date parse、valid_min/max 越界、同键重复 409A5),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 级只留操作记录,A12026-08-05) |
| 选育结果 | L2 | §4 selection_result | 阶段7 | 是 | breeding_selection_result | ✅落地(基础;**晋级同步落系谱**——单株晋级 line/regional_trial/released 建种质时自动写 bre_pedigreetree.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_blockmethod=ANOVA/H2/RCBD),AF 六缺口·批2v2.232026-08-05**增广/α-格子设计深度**——augmented 对照 anchoringcheck_germplasm_ids 每区组重复、block_no 不落库)+ 新品系 round-robin 均分区组;alpha 平方闭式格子(v=k² 直线构造、完全格子 r=k+1、k 素数完全平衡否则 balance_warning 保守告警)/ 一般 v 贪心可分解回退,block_no=rep*100+block 复合编码,AF 六缺口·批4v2.252026-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.63.8 | — | 是(地基) | (引擎) | ✅落地(/describe 描述统计 + /anova/run ANOVA+H²,纯 numpy 零 R2026-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×E2026-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=GXRBLUProotstock 升级第三随机效应槽、与 G×E 互斥、σ²gxr 落 note2026-08-04+**GS 专用 k-fold 交叉验证**GBLUP/ssGBLUP 掩蔽留出 GEBV vs 表型实证 pearsonmethod=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 坐标 409blup 1.3.02026-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_ii1(非近交树 F=0 兜底)+ trait 树级表型均值 → numpy lstsq 回归 phenotype~F——slope/r2/t_slope/depression_rate/has_depression/interpretation + high_inbreeding 高 F 株清单(前 10),n<min_n 优雅降级 sufficient=false 不 409`_DATA_VERSION` v2.22AF 六缺口·批12026-08-05)+**GS 家系阻塞折 CV**`genomic.kfold_cv_genomic``split="family"` + `family_of`:同家系个体同折防亲缘泄漏高估准确度、无家系个体自成一族、家系数<折数折叠并 warning、单家系边界、输出 n_families;`run_cv` 加 split 透传——family_of 由树 sire(回退组合 male_parent)构建,note 记 split=family·n_familiesrandom 路径逐字节不变,A–F 六缺口·批2,`_DATA_VERSION` v2.232026-08-05)+**OCS 最优贡献选择**POST /statistics/ocsmax Σc·ebv λ·c'Ac 投影梯度求解,n_select/λ 权衡、vs_top_n 贪心对照量化亲缘控制价值、kinship_status 显式告警,EBV 复用共享 `_candidate_ebv_map`、纯计算不落库,A–F 六缺口·批3)+**MABC 标记辅助回交**POST /statistics/mabc-progress:前景 MAS 命中+背景纯合剂量一致恢复率+`_BC_LADDER` 回交代建议、recommended 恢复率降序、童期幼苗可筛,A–F 六缺口·批3,`_DATA_VERSION` v2.242026-08-05)+**区组随机效应 ABLUP**`run_ablup(block=True)` → method=ABLUP-BLOCK`bre_tree.block_no`(增广/α-格子已落库的不完全区组结构)作第二随机效应 `_solve_block`(镜像 `_solve_gxe`,σ²block/block_ratio/n_blocks 落 note、PEV 可靠性)、缺 block_no 树降级剔表型留系谱、<2 区组 409、与 gxe/gxrZ₂ 槽)及 spatial(残差结构)互斥 409、blup 1.5.0,批5)+**统计引擎全量数值真值校验**(`e2e_stats_numerics_20260805.py` ok=101 fail=0blup/gxe/block/spatial-aniso/gblup/ssgblup/bivariate/multi/FW/ammi/rcbd/diallel/ocs/UPGMA/ΔG/data-quality/kinship 逐段独立 ground-truth 对照,探针 fixture 两处缺陷修复、引擎本体零缺陷,批5,`_DATA_VERSION` v2.262026-08-05) |
| 遗传力 h²/H² | L3 | §5 3.11 | — | 否 | (引擎) | ✅落地(随BLUP批次落主表,2026-08-03) |
| 选择指数 | L3 | §5 3.15 | — | 否 | (引擎) | ✅落地(zsum+smith_hazel,方向翻转+default_h2兜底;**无性系级聚合** aggregate=clone 可靠加权+自株退化+系级决选;**Smith-Hazel 遗传相关** g_method=calo(可靠性校正 r_g=r_EBV/√(rel_i·rel_j))mtblup(**成对双性状 BLUP**G 非对角用 bivariate REML,单对失败回退 Calo+warning)+g_corr/g_note/g_source 落库可审计,2026-08-04**自动权重** auto_weights=True → default_h2 兜底 0.1、强制 use_h2=False 防双重相乘、direction 翻转、weights_json 记 __autoB32026-08-05) |
| 选择强度链 / 组合得失漏斗 | L3 | §3.13 | — | 否 | seed_lot 计数 | ✅落地(组合得失漏斗 v_combination_funnel:花→果→种→苗→定植→树→入选六级派生指标 结实率/出苗率/选择强度,只读端点,2026-08-04**前端入口** statistics 页「组合得失漏斗」对话框,C32026-08-05) |
| 育种报告 | L3 | §3.6 | — | 否 | breeding_report | ✅落地(CRUD + POST /report/generate 聚合预测/稳定性/CV9000752026-08-05) |
| 分析数据集 | L3 | — | — | 否 | breeding_analysis_dataset | ✅落地(trait_codes/sample_ids/config jsonb + status9000702026-08-05) |
| 超期预警 | L0 | — | 全程 | 否 | breeding_alert | ✅落地(每日 job 按 selection_rule 扫描树超期/花粉过期/种子超期 → bre_alert + /bre/alert/list + 前端预警中心,2026-08-05) |
| 审计切面 | L0 | §3.10 | 全程 | 是(切面) | breeding_audit_log | ✅落地(base_crud 三写注入 CREATE/UPDATE 字段级 diff/DELETE + 批量导入汇总,/bre/audit/list2026-08-05) |
| 互操作 BrAPI | L0 | 原则7/§6 | — | 否 | (只读端点/不建表) | ✅落地(/brapi/v2 germplasm/observationvariables/studies/observations2026-08-05) |
| 互操作 MIAPPE | L0 | 原则6 | — | 否 | (元数据模板/不建表) | ✅落地(/brapi/v2/miappe 模板导出,2026-08-05) |
| 统一编号服务 | L0 | §3.10 | 全程 | 是 | breeding_sequence | ✅落地(NumberGenService + pg_advisory_xact_lock 原子取号,4 处迁移 YY+3位/组合-序号/clone_code/batch_no2026-08-05) |
| 备份容灾 | L0 | — | 全程 | 是 | (脚本+每日 02:00 job) | ✅落地(pg_backup.sh/pg_restore.shTemp/backup 按日期 + N 天轮转,2026-08-05) |
| 分子标记 | L4-2 | §3.7 | — | 否(V2.0) | breeding_marker | ✅落地(CRUD+Excel2026-08-04) |
| 基因型数据集 | L4-2 | §3.7 | — | 否 | breeding_genotyping_dataset | ✅落地(CRUD+Excel2026-08-04) |
| 基因型样品 | L4-2 | §3.7 | — | 否 | breeding_genotype_sample | ✅落地(CRUD+Excel2026-08-04) |
| 基因型调用 | L4-2 | §3.7 | — | 否 | breeding_genotype_call | ✅落地(CRUD+VCF+指纹,2026-08-04**孟德尔/亲本一致性检验**——`GET /genotype_call/mendelian/check`:子代树样本 vs 声明亲本(tree.dam_id/sire_id)逐标记 union 规则判兼容、rate<0.98 判 flag、亲本基因型跨数据集解析、双亲空/缺基因型归状态不 409、incompatible_markers 明细,填补 parentage 零命中,AF 六缺口·批4v2.252026-08-05**落库+自动隔离+进报告**——`POST /genotype_call/mendelian/check/run``bre_mendelian_check`+每树子表+`bre_pedigree_exclusion` 隔离注册表(flag→隔离、未 flag→清除可逆),`data_quality_report(dataset_id)` 含 mendelian 段,系谱消费方断开隔离树亲本链退化为 founder,GET 只读预览零回归,批5v2.262026-08-05) |
| GWAS/QTL/MAS 标记辅助选择 | L4-2 | §3.7 | — | 否 | bre_gwas_result / bre_gwas_snp / bre_qtl / bre_mas_panel / bre_mas_panel_marker | ✅落地(900214 GWAS/QTL 页翻转 + GLM+PC 关联扫描 + QTL 定位 + MAS 决策 hook2026-08-04**EMMAX 混合模型** method=emmax 零模型 `_profile_solve` + eigh 对角化 + 逐标记 GLS、**QTL×E 环境互作** 分环境 GWAS 合并 stable/env-specific 计算端点不建表、**MAS 面板语义** mode/favorable_allele/haplotype_group 五语义命中,gwas 1.1.02026-08-04**MABC 标记辅助回交** POST /statistics/mabc-progress——前景 MAS 命中(复用 `_mas_hit_map` 五语义、stage 无关童期可筛)+ 背景基因组恢复率(候选 vs 轮回亲本纯合剂量一致比例)+ `_BC_LADDER` 回交代建议,`_DATA_VERSION` v2.24AF 六缺口·批32026-08-05) |
| ML辅助/图像/LLM | L4-2/3 | §6 | — | 否 | (外部服务) | ⏳待建 |
---
## 二、各层模块级落位(2026-07-29 定稿)
- **L0 系统底座**RBAC(✅) · 部门隔离 sys_dept=课题组(✅) · 数据字典(✅四类已灌) · 操作审计 sys_log(✅)+breeding_audit_log 切面(✅,2026-08-05) · 文件(✅) · 编号服务(✅ NumberGenService 原子取号,2026-08-05) · 定时任务(✅ ap_scheduler 3 系统 job2026-08-05) · **BrAPI 只读适配(✅)+MIAPPE 元数据模板(✅)/brapi/v2 五端点,2026-08-05** · **性能(纯 numpy 引擎异步 job 队列,零 R,✅)** · **备份容灾(PG 备份 pg_backup.sh+每日 02:00 job,✅,2026-08-05)**
- **L1 基础数据**:种质(✅)/性状字典(✅ 含抗病/需冷量 numeric 种子)/选择规则(✅)/基地(✅)/地块(✅)/人员(✅)/目标(✅)/系谱(✅ breeding_pedigree)。
- **L2 育种流程**:杂交/授粉/种子/育苗/定植/评价/单株/照片/选育(✅基础) + observation(✅ 900050)/field_operation(✅ 900051)/seed_lot(✅)/propagation(✅)/group(✅)/analysis_dataset(✅ 900070)/breeding_report(✅ 900075)/alert(✅ 超期预警)**数据接入=Excel 导入,一期先性状记录模板(yz.sql 蓝本),余表分批**。
- **L3 统计决策**:地基(统一视图/ MET/ 环境/ 系谱A/ 审计) + 计算(描述/ANOVA/相关PCA + **一期2个:配合力+EBV**) + 决策(遗传力/指数/报告/预警,后续)。
- **L4-2 分子层(V2.0)**marker / genotyping_dataset / genotype_sample / genotype_call 四表(✅数据能力:CRUD+VCF 导入+DNA 指纹防错+**孟德尔/亲本一致性检验**(子代 vs 声明亲本 union 规则、跨数据集亲本基因型解析、flag 阈值、incompatible_markers 明细,AF 六缺口·批42026-08-05**落库+自动隔离**——POST /genotype_call/mendelian/check/run 落 bre_mendelian_check+每树子表+bre_pedigree_exclusion 隔离注册表(flag→隔离、未 flag→清除可逆)、data_quality_report(dataset_id) mendelian 段、系谱消费方断开隔离树亲本链退化为 founder 表型保留,批5v2.262026-08-05),2026-08-04) + **GBLUP/ssGBLUP 引擎(✅:VanRaden G(method1/2)+MAF+blend 岭、单步法 H⁻¹=A⁻¹+[0,0;0,G⁻¹−A22⁻¹] 且 V 块用 H 协方差、run_gblup 样本 tree 直连/名称兜底、未映射+多等位跳过,2026-08-04)** + **GS 专用 k-fold 交叉验证(✅:`genomic.kfold_cv_genomic` 掩蔽留出 GEBV vs 表型实证 pearson/RMSEKFCV/GBLUP·KFCV/ssGBLUP、固定种子随机分层、G/H/Hinv 只建一次,run_cv 加 dataset_id/method/maf_min2026-08-04)** + **GWAS/QTL/MAS 闭环(✅:GLM+PC 关联扫描 + QTL 定位 + MAS 面板,bre_gwas_result/snp + bre_qtl + bre_mas_panel/marker 五新表,decision_preview marker 条件,900214 页翻转,2026-08-04)**
- **L4-3 AI 前瞻(V4.0)**:占位,触发细化=一期 Web 跑通真实数据 + 分子/统计数据到位。
---
## 三、时间线统一(波次 ↔ 版本,2026-07-29 定稿)
| 版本 | 周期(估) | 波次 | 交付 |
|---|---|---|---|
| V0.5 | 02 周 | 01 | 底座 + 基础数据闭环 + 性状导入模板 |
| V1.0 | 212 周 | 24 | 育种流程核心 + 统计地基 + **统计一期2个(EBV+配合力)** |
| V1.1 | 1218 周 | 4余+6部 | 遗传力/选择指数/EBV持久化 + 育种报告 |
| V1.2 | 1824 周 | 5部 | 移动端田间采集 |
| V2.0 | 分子层 | 5深+§6(4.34.5) | 分子四表 + GS/GWAS/GBLUP |
| V3.0 | 保护+互操作 | §4(2.142.15)+§7(0.8) | DUS/登记 + BrAPI/MIAPPE |
| V4.0 | AI 前瞻 | §6(4.64.9)+图层 | 触发=一期跑通+分子/统计数据到位 |
---
## 四、与三份文档关系
- 本文 = **统一映射总表**,是模块级交叉引用的唯一真相。
- 业务背景/10阶段 SOP → `桃育种系统业务功能规划报告.md`
- 顶层分层/波次/版本 → `桃育种系统功能规划(分层路线图).md` v1.1
- 字段级规格 → `桃育种系统模块扩展需求规格.md` v2.11
- **统计引擎落地台账** → `桃育种系统统计引擎实施记录.md` v1.52026-08-04G×E 引擎 + 性状方向标注 + 花粉档案 §3.19 + 选择指数无性系级聚合 + 配合力交配设计 + 统计严谨·MLOps 复现性①Calo②PA③溯源④germplasm_id⑤砧木⑥空间竞争 + 组合得失漏斗 + 精修项四连发(DUS 数据能力三表 / stage 感知 / k-fold CV / 按 site 公平性报告)+ **十一、六项能力完善**MT-BLUP 遗传相关 / GBLUP-ssGBLUP 引擎 / DUS 特异性统计检验 / AMMI-FW 稳定性 / MLOps 重训回滚 / BLUP stage 拆分)+ **十二、田间试验精度补强·砧木×接穗随机互作 G×R**rootstock 第三随机效应槽,G×E 互斥,含探针验证与备份)+ **十三、十四**2026-08-04 前段)+ **十五、GWAS/QTL/MAS 标记辅助选择闭环**GLM+PC 求解器 / 5 新表 / gwas·qtl·mas-panel 端点 / decision_preview marker 条件 / 前端 900214 翻转 / 验证 7 段+回归零回归)+ **十六、九缺口补齐**(经典侧计算端点 A5 数据质量/A3 遗传增益/A6 主动选配 + 分子侧严谨性 B1 EMMAX/B2 SSR 多等位虚拟编码/B3 QTL×E/B4 MAS 面板语义 + 求解器核心 A2 AR1×AR1 空间协方差/A7 稀疏 A⁻¹+共轭梯度+Hutchinson 可靠性,三批 e2e+回归全过)+ **十八、桃育种业务流全面完善**(批A 业务数据链 A1-A6 / 批B 统计算法 B1-B4 / 批C 前端 C1-C4+ **§18.5 世代闭环修复**(单株晋级落系谱)+ **§18.6 近交惩罚静默关闭修复**(亲缘多源解析)+ **§18.7 EBV 回退方法学修复**(direct 优先+子代测验降权+双侧去重)+ **§18.8 数据质量离群值方向语义修复**(同向=精英 / 反向=疑似录入错误)+ **§18.9 ΔG 投影假设 + 工程健壮性打磨**(note 假设声明 / spatial 缺坐标降级 / numpy 收敛向量化))
- 数据表脚本(含本表所有表的最新建表 SQL)→ `backend/sql/breeding_tables.sql`