Report_Generate_Server/tools/argtool.py

107 lines
4.4 KiB
Python
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.

from typing import Dict, Any
import json
import argparse
def load_config(config_path: str) -> Dict[str, Any]:
"""从JSON配置文件加载配置"""
with open(config_path, 'r', encoding='utf-8') as f:
return json.load(f)
def parse_arguments():
parser = argparse.ArgumentParser(description='报告生成工具')
# 添加配置文件参数
parser.add_argument('--config', '-c', dest='config_file',
default='config.json',
help='配置文件路径默认为当前目录下的config.json')
# 保留一些关键参数作为命令行可覆盖选项
parser.add_argument('--turbine_id', '--id', dest='turbine_id',
help='覆盖配置文件中的风机ID')
parser.add_argument('--output_dir', '--out', dest='output_dir',
help='覆盖配置文件中的输出目录')
parser.add_argument('--if_waibu', type=lambda x: x.lower() in ('true', '1', 'yes'),
help='是否包含外部作业章节')
parser.add_argument('--if_neibu', type=lambda x: x.lower() in ('true', '1', 'yes'),
help='是否包含内部作业章节')
parser.add_argument('--if_fanglei', type=lambda x: x.lower() in ('true', '1', 'yes'),
help='是否包含防雷作业章节')
parser.add_argument('--userName', dest='userName',
help='报告编制人')
parser.add_argument('--baogaoCheck', dest='baogaoCheck',
help='报告审核状态')
parser.add_argument('--key_words', dest='key_words',
help='关键词,英文逗号分隔')
parser.add_argument('--data_processor', dest='data_processor',
help='数据处理人')
parser.add_argument('--jiancha_renyuan', dest='jiancha_renyuan',
help='检查人员')
parser.add_argument('--check_date', dest='check_date',
help='检查日期,格式 YYYY-MM-DD')
parser.add_argument('--coverurl', dest='coverurl',
help='封面图片 URL')
parser.add_argument('--conclusion', dest='conclusion',
help='报告总结')
return parser.parse_args()
def merge_configs(default_cfg: Dict[str, Any],
file_cfg: Dict[str, Any],
cli: argparse.Namespace) -> Dict[str, Dict[str, Any]]:
"""合并默认配置、文件配置和命令行参数"""
merged = {
'json1': {**default_cfg['json1'], **file_cfg.get('json1', {})},
'json2': {**default_cfg['json2'], **file_cfg.get('json2', {})}
}
# 高频覆盖项
if cli.turbine_id:
merged['json1']['turbine_id'] = cli.turbine_id
if cli.output_dir:
merged['json2']['shengcheng_dir'] = cli.output_dir
for key in ('if_waibu', 'if_neibu', 'if_fanglei', 'userName',
'baogaoCheck', 'key_words', 'data_processor',
'jiancha_renyuan', 'check_date', 'coverurl', 'conclusion'):
val = getattr(cli, key, None)
if val is not None:
merged['json2'][key] = val
return merged
def get_default_config() -> Dict[str, Dict[str, Any]]:
"""获取默认配置"""
return {
'json1': {
"turbine_id": "183463dbf40d9278549a76b82b175dd9",
},
'json2': {
'shengcheng_dir': "",
"dianxing_enum": "TYPICAL",
"quexian_enum": "DEFECT",
"other_enum": "OTHER",
"waibu_enum": "out-work",
"neibu_enum": "in-work",
"fanglei_enum": "lightning-protection-work",
"if_waibu": True,
"if_neibu": True,
"if_fanglei": True,
"userName": "admin",
"baogaoCheck": "未审核",
'key_words': '缺,损,裂,脱,污',
"data_processor": "未获取",
"shigong_fangan": None,
'jiancha_renyuan': '未获取',
"check_date": None,
"coverurl": None,
"conclusion": "未填写总结",
"if_docx_fengmian": True,
"if_docx_project_overview": True,
"if_docx_inspection_method": True,
"if_docx_inspection_info": True,
"if_docx_chengguo_sub": True,
"if_docx_inspection_text": True,
"if_docx_inspection_picture": True,
"if_docx_defect_picture": True,
"if_docx_conclusion": True,
}
}