| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import argparse 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from importlib import import_module 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from crossborder.utils.log import  get_logger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,12 +31,28 @@ def run_province(name, year=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             fake_argv.extend(['--year', str(year)]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sys.argv = fake_argv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        module.main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 调用模块main函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if hasattr(module, 'main'): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            module.main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error(f"❌ {name} 模块缺少main()入口函数") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.error(f"❌ {name} 执行失败: {e}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 强制切换工作目录为exe所在目录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if getattr(sys, 'frozen', False): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 打包后的exe路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        application_path = os.path.dirname(sys.executable) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 开发环境路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        application_path = os.path.dirname(os.path.abspath(__file__)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    os.chdir(application_path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if len(sys.argv) == 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sys.argv = ['run-crossborder.exe', '--all'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     parser = argparse.ArgumentParser(description="跨省数据采集器") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     group = parser.add_mutually_exclusive_group(required=True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     group.add_argument('--province', '-p', choices=PROVINCE_MODULES.keys(), help='指定省份') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -44,11 +61,17 @@ def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     args = parser.parse_args() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 如果没有指定参数,默认执行all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if not (args.province or args.all): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        args.all = True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if args.province: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         run_province(args.province, args.year) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elif args.all: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for name in PROVINCE_MODULES: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             run_province(name, args.year) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log.info("数据采集全部执行完成!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if __name__ == "__main__": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     main() 
			 |