certflow.services.report_bom_enricher module¶
报告 BOM 材质富集器(阶段 C:C1–C4 串联)
把「按生产令号查 BOM → 关键词归类 → 查材质化学/力学 → 产出主材位+待核对明细」
串成一个可单测、不污染 ReportView 的服务。
- 数据流(docs/PATCH_LOG.md 补丁 14「阶段 C:BOM 材质集成到报告生成」):
- query_by_production_order_no(pno) → list[BomMaterial]
→ BomPartClassifier.classify → {主材位: [BomMaterial]} + 待核对 → MaterialGradeService.get_by_grade → 化学/力学性能范围 → MaterialPart(命中的主材位,带虚拟实测值)+ 待核对明细(未命中/多牌号/缺数据)
设计要点: - 命中的主材位才自动落报告材质块;匹配不到 / 多对一 / 牌号缺 material_grades 记录
的零件一律进「待核对明细」,不写 sale_plan、不写超链接(原则 3)。
归类与报告富集各自独立、可单测(原则:不污染 UI)。
多标准牌号策略(§9.2 待定 → 取 is_active 优先):
generate_composition_values已按is_active.is_(True)过滤;富集器仅用get_by_grade判定牌号是否在表, 缺化学/力学范围时记入待核对明细提示,不报错中断生成(C3.3)。
- class certflow.services.report_bom_enricher.BomEnrichResult(production_order_no='', matched=0, detail_count=0, classified=<factory>, detail=<factory>, leftover_parts=<factory>)[源代码]¶
基类:
objectBOM 材质富集结果。
- 参数:
- classified¶
主材位标识 → 该位代表性 MaterialPart(含化学/力学性能,来源=bom)。
- classified: dict[str, MaterialPart]¶
- leftover_parts: list[MaterialPart]¶
- certflow.services.report_bom_enricher.enrich_parts(production_order_no, parts, material_svc, cfg=None)[源代码]¶
富集已取出的 BOM 零件列表(无 DB 依赖,便于单测)。
- 参数:
- 返回:
BomEnrichResult:命中的主材位 MaterialPart + 待核对明细。
- 返回类型: