certflow.utils.status_inference module¶
状态推断模块
从自由文本 execution_status 中推断标准化的 production_status, 并支持提取日期信息。
规则设计原则: - 优先级从高到低:发货 > 完成 > 生产中 > 待生产 - 日期格式自动识别:2024/03/15已发、2024-03-20发完 等 - 默认返回"待生产"
配置驱动: - 状态枚举、推断规则、查询关键词均从 config.yaml 的 production_status 节点加载 - 调用 init_from_config() 后,所有硬编码回退值被配置值覆盖
- class certflow.utils.status_inference.StatusInference[源代码]¶
基类:
object从自由文本执行情况中推断生产状态
- execution_status 是历史自由文本字段,内容格式不统一:
"2024/03/15已发"
"已发货"
"2024-03-20发完"
"生产中"
"完成"
""(空值)
通过正则匹配将自由文本映射到标准化的 production_status。
配置驱动:调用 init_from_config() 从 config.yaml 加载推断规则和查询关键词。
示例
>>> StatusInference.infer("2024/03/15已发") '已发货' >>> StatusInference.infer("生产中") '生产中' >>> StatusInference.infer(None) '待生产' >>> StatusInference.extract_date("2024/03/15已发") '2024-03-15'
- STATUS_RULES: list[tuple[str, str]] = [('(部分发|分批发|已发部分)', '部分发货'), ('(已发|发完|发货|发运|已交付|已发出)', '已发货'), ('\\d{4}[/-]\\d{1,2}[/-]\\d{1,2}\\s*(已发|发货|发运)', '已发货'), ('(完成|完工|已完|制作完成)', '已完成'), ('(生产中|加工中|制作中)', '生产中'), ('(待生产|未开始|未生产|未加工)', '待生产')]¶
- classmethod init_from_config(config_path=None)[源代码]¶
从配置文件初始化状态推断模块
在应用启动时调用一次,从 config.yaml 的 production_status 节点加载: - 状态枚举值 (values) - 默认状态 (default) - 推断规则 (inference_rules) - 查询关键词 (query_keywords)
优先使用项目 ConfigLoader(支持 !include 语法), 回退到标准 yaml.safe_load(仅当配置不含自定义标签时)。
- 参数:
config_path (str | None) -- 配置文件路径,为 None 时自动查找
- 返回类型:
None
- classmethod load_rules_from_config(config)[源代码]¶
从配置字典加载规则(向后兼容旧接口)
- 参数:
config (dict[str, Any]) -- 配置字典,支持两种格式: - 旧格式:{"status_rules": [(pattern, status), ...]} - 新格式:{"inference_rules": [{"patterns": [...], "set_to": "..."}, ...]}
- 返回类型:
None
示例
>>> config = { ... "status_rules": [ ... ("已发|发完", "已发货"), ... ("完成", "已完成"), ... ] ... } >>> StatusInference.load_rules_from_config(config)