certflow.config.settings module¶
CertFlow 配置管理 - 所有值从 config.yaml / .env 读取,零硬编码
提供模块级配置常量(直接通过 _cfg() 读取 YAML)和工具函数.
- get_config_value(key, env_var=None, default=None)[源代码]¶
获取配置值,优先级: 环境变量 > YAML > 传入默认值
提供统一的配置读取接口,优先使用环境变量,其次使用YAML配置, 最后使用代码中的默认值.
- 参数:
- 返回:
获取到的配置值
- 返回类型:
Any
示例
>>> get_config_value("paths.sales_plan.primary", "VALVE_SALES_PLAN_PATH") "/path/to/sales/plan.xlsx"
- DATABASE_PATH: Path = WindowsPath('D:/links/CertFlow-PySide6/database/certflow.db')¶
SQLite数据库文件完整路径
- NUMBERING_SUFFIXES: dict = {'default': '', 'market': 'B', 'production': '', 'purchase': 'Y', 'repair': 'XL', 'stock': '', 'supply': 'G', 'test': 'L'}¶
编号后缀映射(V2)
- NUMBERING_AUTO_NUMBER_MODE: dict | None = {'description': '是否启用自动编号模式', 'enabled': False, 'rules': [{'action': '清空并重新编号', 'condition': '背景色=65535 AND 未发货 AND 未编号'}, {'action': '自动获取编号', 'condition': '单元格为空'}, {'action': '保留原编号', 'condition': '单元格非空 AND 含连字符 AND 未发货 AND 未编号'}, {'action': '清空并重新编号', 'condition': '单元格非空 AND 不含连字符 AND 未发货 AND 未编号'}]}¶
自动编号模式配置(V2)
- NUMBERING_SUFFIX_RULES: list = [{'exclude': None, 'field': '生产令号', 'keywords': ['维修', '修理', '修复', '返修'], 'suffix': 'XL'}, {'exclude': None, 'field': '种类', 'keywords': ['维修', '修理', '修复', '返修'], 'suffix': 'XL'}, {'exclude': None, 'field': '种类', 'keywords': ['试压'], 'suffix': 'L'}, {'exclude': None, 'field': '供货商', 'keywords': ['供应'], 'suffix': 'G'}, {'exclude': ['自产', 'FFFFFF', ''], 'field': '颜色标记', 'keywords': [], 'suffix': 'Y'}]¶
编号后缀规则列表(V2)
- VBA_COLORS: dict = {0: '未发货', 255: '红字', 65535: '待编号', 10092543: '外购未回', 16711680: '已发货', 16777164: '外购已回', 16777215: '自产'}¶
VBA颜色索引到颜色的映射
- BG_COLOR_TO_STATUS: dict = {65535: '待编号', 10092543: '外购未回', 16777164: '外购已回', 16777215: '自产'}¶
背景颜色到状态的映射
- EXPORT_SUMMARY_SUM_COLUMNS: list = [{'field': '数量', 'formula': 'SUM'}, {'criteria': '是', 'field': '已发货', 'formula': 'COUNTIF'}]¶
需要求和的列列表
- SALE_PLAN_COLUMNS: dict = {'业务归口': 'business_dept', '产品名称': 'product_name', '产品型号': 'product_model', '产品编号': 'product_code', '产品规格': 'product_spec', '付款方式': 'payment_method', '供货类型': 'supply_type', '单价': 'unit_price', '合同交货期': 'contract_delivery_date', '合同号': 'contract_no', '合格证清单备注': 'certificate_remarks', '总价': 'total_price', '执行情况': 'execution_status', '技术要求': 'tech_requirements', '数量': 'quantity', '生产令号': 'production_order_no', '种类': 'category', '计划交货期': 'planned_delivery_date', '计划单号': 'plan_no', '计划日期': 'plan_date', '订货单位': 'customer', '设备位号': 'equipment_code', '重量': 'weight', '销售计划备注': 'sales_plan_remarks', '销售订单号': 'sales_order_no', '隶属部门': 'affiliated_dept', '项目单位': 'project_unit', '项目名称': 'project_name'}¶
销售计划列映射字典
- COLUMN_ALIASES: dict = {'affiliated_dept': ['隶属部门', '部门'], 'business_dept': ['业务归口', '业务规口', '规口'], 'category': ['种类', '产品种类'], 'certificate_remarks': ['备注', '合格证清单备注', '合格证备注'], 'contract_delivery_date': ['合同交货期', '合同交货期\\到货日期'], 'contract_no': ['合同编号', '合同号'], 'customer': ['订货单位', '用户单位', '客户', '订货公司', '用户名称'], 'equipment_code': ['设备位号', '设备位号/计划号/物代码', '产品位号'], 'execution_status': ['执行情况', '执行状态', '生产状态'], 'payment_method': ['付款方式'], 'plan_date': ['计划日期', '下计划日期', '日期', '排产日期'], 'plan_no': ['计划单号', '计划编号'], 'planned_delivery_date': ['计划交货期'], 'product_code': ['产品编号', '出厂编号', '合格证编号'], 'product_model': ['产品型号', '型 号', '型号', '阀门型号', '规格型号'], 'product_name': ['产品名称', '阀门名称', '名称'], 'product_spec': ['产品规格', '规格', '口径'], 'production_order_no': ['生产令号', '令号', '生产编号', 'AP'], 'project_name': ['项目名称', '项目', '工程项目'], 'project_unit': ['项目单位'], 'quantity': ['数量', '台数', '订货数量'], 'sales_order_no': ['销售订单号', '订单号', '销售订单', 'AO'], 'sales_plan_remarks': ['备 注', '备 注', '销售计划备注', '销售计划备注信息'], 'supply_type': ['供货类型', '执'], 'tech_requirements': ['技术要求'], 'total_price': ['总价', '总价(元)', '总价\n(元)'], 'unit_price': ['单价', '单价(元)'], 'weight': ['重量', '产品重量']}¶
列别名映射
- IMPORT_MAPPING_PREPROCESSOR: dict | None = {'delete_columns': [{'check_row': 2, 'header': '用户单位'}, {'check_row': 2, 'header': '类别'}], 'description': 'Python脚本执行预处理', 'enabled': True, 'merge_fields': {'fields': [{'null_value': '【空白】', 'prefix': '技术要求:', 'source': '技术要求'}, {'null_value': '【空白】', 'prefix': '设备位号:', 'source': '销售订单号'}, {'null_value': '【空白】', 'prefix': '子项目:', 'source': '生产令号'}, {'null_value': '【空白】', 'prefix': '产品编号:', 'source': '产品编号'}, {'null_value': '【空白】', 'prefix': '种类:', 'source': '种类'}, {'null_value': '【空白】', 'prefix': '重量:', 'source': '重量'}], 'separator': '|', 'target': '技术要求'}}¶
导入映射预处理器配置
- IMPORT_MAPPING_COLUMN_MAPPING: list = [{'group': '业务', 'source': '合同编号', 'target': '合同号'}, {'group': '可修改', 'source': '下计划日期', 'target': '计划日期'}, {'group': '可修改', 'source': '计划单号', 'target': '计划单号'}, {'group': '可修改', 'source': '用户单位', 'target': '订货单位'}, {'group': '业务', 'source': '项目名称', 'target': '项目名称'}, {'group': '业务', 'source': '项目单位', 'target': '项目单位'}, {'group': '业务', 'source': '种类', 'target': '种类'}, {'group': '可修改', 'source': '产品名称', 'target': '产品名称'}, {'group': '可修改', 'source': '型 号', 'target': '产品型号'}, {'group': '可修改', 'source': '规格', 'target': '产品规格'}, {'group': '可修改', 'source': '数量', 'target': '数量'}, {'group': '价格', 'source': '单价(元)', 'target': '单价'}, {'group': '价格', 'source': '总价(元)', 'target': '总价'}, {'group': '业务', 'source': '业务规口', 'target': '业务归口'}, {'group': '业务', 'source': '隶属部门', 'target': '隶属部门'}, {'group': '产品', 'source': '产品编号', 'target': '产品编号'}, {'group': '交货', 'source': '合同交货期\\到货日期', 'target': '计划交货期'}, {'group': '业务', 'source': '付款方式', 'target': '付款方式'}, {'group': '业务', 'source': '执行情况', 'target': '是否发货重点'}, {'group': '交货', 'priority': 1, 'source': '计划交货期', 'target': '计划交货期'}, {'group': '交货', 'source': '执', 'target': '供货类型'}, {'group': '技术', 'source': '技术要求', 'target': '技术要求'}, {'group': '技术', 'source': '备 注', 'target': '备注2'}, {'group': '设备', 'source': '设备位号/计划号/物代码', 'target': '设备位号'}, {'group': '设备', 'source': '销售订单号', 'target': '销售订单号'}, {'group': '设备', 'source': '生产令号', 'target': '生产令号'}, {'group': '设备', 'source': '重量', 'target': '重量'}, {'group': '备份', 'source': '下计划日期', 'target': '计划日期_原始'}, {'group': '备份', 'source': '用户单位', 'target': '订货单位_原始'}, {'group': '备份', 'source': '产品名称', 'target': '产品名称_原始'}, {'group': '备份', 'source': '型 号', 'target': '产品型号_原始'}, {'group': '备份', 'source': '规格', 'target': '产品规格_原始'}, {'group': '备份', 'source': '数量', 'target': '数量_原始'}]¶
导入列映射规则列表
- IMPORT_MAPPING_DEFAULT_VALUES: dict = {'供货商': '', '启闭件材质': '', '工作介质': '', '工作温度': '', '试压标准': '', '阀体材质': '', '阀杆材质': ''}¶
导入默认值映射
- LOG_FORMAT: str = '{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}'¶
日志格式字符串
- TEMPLATE_CERTIFICATE_CHINESE: Path = WindowsPath('D:/links/CertFlow-PySide6/data/templates/中文合格证模板.xlsx')¶
中文合格证模板路径
- TEMPLATE_CERTIFICATE_BILINGUAL: Path = WindowsPath('D:/links/CertFlow-PySide6/data/templates/中英文合格证模板.xlsx')¶
中英文合格证模板路径
- MONITORED_FIELDS: list = ['product_name', 'product_model', 'product_spec', 'quantity', 'customer', 'project_name', 'plan_date']¶
导入时监控变更的字段列表
- get_sort_rules()[源代码]¶
获取完整排序规则列表
示例
>>> get_sort_rules() [{"field": "order_number", "order": "asc"}, {"field": "amount", "order": "desc"}]
- SORTING_KEYS: list = [{'field': 'product_name', 'order': 'asc'}, {'field': 'product_model', 'order': 'asc'}, {'field': 'product_spec', 'order': 'asc'}]¶
组内排序键列表,每个元素包含 field 和 order
- get_column_by_alias(excel_column)[源代码]¶
通过别名查找目标列名
在列别名映射中查找给定的Excel列名,返回对应的目标字段名.
示例
>>> get_column_by_alias("订单号") "order_number" >>> get_column_by_alias("客户名称") "customer_name"
- add_recent_file(file_path)[源代码]¶
添加文件到最近打开列表
如果文件已存在,会移到列表开头.
- 参数:
file_path (str) -- 文件路径
- 返回类型:
None
- get_recent_import_files(max_count=5)[源代码]¶
获取最近导入的文件列表
- 参数:
max_count (int) -- 最大返回数量,默认为5
- 返回:
最近导入文件列表
- 返回类型:
List[Dict]