certflow.services.correction_queue_service module¶
#30 P1 校正队列服务(黄标校正 + 隔离释放 + upsert 自学习)
替代 VBA D 阶段的「InputBox 人工兜底 + Stop 硬断 + CanShuSheet 回写」: - 导入后黄标行(flag=True:口径/型号无标准号待复核)与隔离行(quarantine)
统一在校正队列 UI 列出;
人工校正后 upsert 进字典表(CaliberMapping / ModelParamMapping), 下次同值导入即自动命中(等价 VBA 自学习回写,但非阻塞、可追溯、团队共享);
隔离行可释放重建为 SalePlan(补全要货单号后回归正常导入)。
- 架构层次:View (CorrectionQueueView) → Controller (CorrectionQueueController)
→ Service (CorrectionQueueService) → Model (SalePlan/QuarantineSalePlan/字典表)
- class certflow.services.correction_queue_service.CorrectionQueueService(session)[源代码]¶
基类:
object校正队列服务:黄标校正 + 隔离释放 + 字典自学习。
- 参数:
session (Session)
- correct_sale_plan(sale_plan_id, corrections, learn=True, recheck=True)[源代码]¶
校正一条黄标销售计划记录,并可选 upsert 进字典表自学习。
补录后做**完整性核对**:仅当该行全部必填空白(口径 + 公称压力)都已 解决才清除黄标;仍有缺口则保留黄标,等后续续补。避免「补了一个口径就 默认整行补齐、误清黄标」(标准号导入期留空、打印回填,不计入黄标)。
合同口径保护:`product_spec`(合同口径)与 `product_model`(型号) 参与导入去重的唯一键计算,校正**一律不修改**这两列(空白必须保持空白, 否则重导入时 key 变化无法与原始记录对应)。从型号等推得的口径改写入 合格证字段 `cert_product_spec`(口径串)与 `spec_norm`(规范化数字, 不参与重导入 key,可安全写)。
- 参数:
sale_plan_id (int) -- 销售计划主键
corrections (dict[str, Any]) -- 校正字段。可写列:spec_norm / pressure_value / test_standard / cert_product_spec。product_spec / product_model 即使传入也被忽略(保护唯一键,仅作学习键读取)。
learn (bool) -- 是否把校正结果 upsert 进字典表(CaliberMapping/ModelParamMapping), 默认 True。仅校正字段非空且对应原始键存在时才学习。
recheck (bool) -- 是否做完整性核对决定黄标去留(默认 True)。为 False 时 强制清除黄标(对应 UI「仅标记已复核」)。
- 返回:
(更新后的 SalePlan, 仍未解决的字段中文名列表);id 不存在返回 (None, [])。 列表非空表示黄标已保留、仍有 N 处待补录。
- 返回类型: