diff --git a/flask_app/general/format_change.py b/flask_app/general/format_change.py index fe07c75..0049f91 100644 --- a/flask_app/general/format_change.py +++ b/flask_app/general/format_change.py @@ -85,7 +85,7 @@ def docx2pdf(file_path): raise ValueError(f"doc2pdf 仅支持 .docx 和 .doc 文件,当前文件扩展名为: .{ext}") # 定义转换接口 - endpoint = 'http://120.26.236.97:5005/convert_to_pdf' + endpoint = 'http://120.26.236.97:5008/convert_to_pdf' # 获取文件所在目录 output_dir = os.path.dirname(file_path) @@ -132,7 +132,7 @@ def doc2docx(file_path): raise ValueError(f"doc2docx 仅支持 .doc 文件,当前文件扩展名为: .{ext}") # 定义转换接口 - endpoint = 'http://120.26.236.97:5005/convert_to_docx' + endpoint = 'http://120.26.236.97:5008/convert_to_docx' # 获取文件所在目录 output_dir = os.path.dirname(file_path) diff --git a/flask_app/main/start_up.py b/flask_app/main/start_up.py index cce25cc..f44b3c0 100644 --- a/flask_app/main/start_up.py +++ b/flask_app/main/start_up.py @@ -33,14 +33,34 @@ class CSTFormatter(logging.Formatter): @app.before_request def before_request(): - # 每个请求开始前初始化 logger - create_logger() # 确保这个函数中设置了 g.logger + """ + 每个请求开始前初始化 logger 和 output_folder, + 根据请求的端点选择不同的子文件夹。 + """ + # 确定当前请求的端点 + endpoint = request.endpoint + # 映射端点到子文件夹 + subfolder_map = { + 'get_procurement_reqs': 'output3', + 'little_zbparse': 'output2', + 'zbparse': 'output1' + } + # 获取对应的子文件夹,默认为 'output1' + subfolder = subfolder_map.get(endpoint, 'output1') + # 创建 logger 和 output_folder + create_logger(subfolder) -def create_logger(): +def create_logger(subfolder): + """ + 创建一个唯一的 logger 和对应的输出文件夹。 + + 参数: + subfolder (str): 子文件夹名称,如 'output1', 'output2', 'output3' + """ unique_id = str(uuid.uuid4()) g.unique_id = unique_id - output_folder = f"flask_app/static/output/{unique_id}" + output_folder = os.path.join("flask_app", "static", "output", subfolder, unique_id) os.makedirs(output_folder, exist_ok=True) log_filename = "log.txt" log_path = os.path.join(output_folder, log_filename) @@ -55,6 +75,7 @@ def create_logger(): logger.addHandler(stream_handler) logger.setLevel(logging.INFO) g.logger = logger + g.output_folder = output_folder # @app.route('/upload', methods=['POST']) @@ -113,6 +134,16 @@ def create_logger(): # }) def validate_request(default_zb_type=1): + """ + 验证请求中的JSON数据。 + + 参数: + default_zb_type (int): 默认的zb_type值。 + + 返回: + tuple or Flask响应: 如果验证通过,返回(file_url, zb_type); + 如果失败,返回错误响应。 + """ if not request.is_json: return jsonify({'error': 'Missing JSON in request'}), 400 file_url = request.json.get('file_url') @@ -153,9 +184,17 @@ def get_procurement_reqs(): #提取采购需求 def download_and_process_file_for_procurement(file_url): + """ + 下载并处理采购需求文件。 + + 参数: + file_url (str): 文件的URL地址。 + + 返回: + dict: 处理后的数据。 + """ logger = g.logger - unique_id = g.unique_id - output_folder = f"flask_app/static/output/{unique_id}" # 直接使用全局 unique_id 构建路径 + output_folder = g.output_folder # 使用全局 output_folder filename = "ztbfile" downloaded_filename = os.path.join(output_folder, filename) # 下载文件,假设 download_file 函数已正确处理异常并返回文件路径 @@ -164,7 +203,7 @@ def download_and_process_file_for_procurement(file_url): logger.error("Unsupported file type or failed to download file") return None logger.info("Local file path: " + downloaded_filepath) - res =get_technical_requirements_main(downloaded_filepath,output_folder) + res = get_technical_requirements_main(downloaded_filepath, output_folder) return res @app.route('/little_zbparse',methods=['POST']) @@ -185,10 +224,19 @@ def little_zbparse(): logger.error('Exception occurred: ' + str(e)) # 使用全局 logger 记录 return jsonify({'error': str(e)}), 500 -def download_and_process_file(file_url,zb_type): +def download_and_process_file(file_url, zb_type): + """ + 下载并处理文件,根据zb_type选择处理函数。 + + 参数: + file_url (str): 文件的URL地址。 + zb_type (int): 标的类型,1表示工程标,2表示货物标。 + + 返回: + str: 处理后的文件路径。 + """ logger = g.logger - unique_id = g.unique_id - output_folder = f"flask_app/static/output/{unique_id}" # 直接使用全局 unique_id 构建路径 + output_folder = g.output_folder # 使用全局 output_folder filename = "ztbfile" downloaded_filename = os.path.join(output_folder, filename) @@ -200,7 +248,7 @@ def download_and_process_file(file_url,zb_type): return None logger.info("Local file path: " + downloaded_filepath) - processed_file_path = little_parse_main(output_folder, downloaded_filepath, file_type,zb_type,unique_id) + processed_file_path = little_parse_main(output_folder, downloaded_filepath, file_type, zb_type, g.unique_id) return processed_file_path def generate_response(final_json_path): @@ -255,10 +303,9 @@ def process_and_stream(file_url, zb_type): """ logger = g.logger unique_id = g.unique_id - output_folder = f"flask_app/static/output/{unique_id}" + output_folder = g.output_folder filename = "ztbfile" downloaded_filename = os.path.join(output_folder, filename) - start_time = time.time() # 记录开始时间 try: @@ -268,7 +315,7 @@ def process_and_stream(file_url, zb_type): logger.error("下载文件失败或不支持的文件类型") error_response = { 'message': 'File processing failed', - 'filename': None, + 'filename': '', 'data': json.dumps({'error': 'File processing failed'}) } yield f"data: {json.dumps(error_response)}\n\n" diff --git a/flask_app/货物标/货物标解析main.py b/flask_app/货物标/货物标解析main.py index c1457d1..0ab7c2c 100644 --- a/flask_app/货物标/货物标解析main.py +++ b/flask_app/货物标/货物标解析main.py @@ -180,6 +180,7 @@ def goods_bid_main(output_folder, file_path, file_type, unique_id): #TODO:目前的无效标这块的键值都删去空格了,所有的键名都删去空格 #广水市 2022 年义务教育学校多媒体补充采购项目 资格审查有问题 +#TODO:区分output目录 陕西省公安厅交通警察总队高速公路交通安全智能感知巡查系统项目 (1)_tobidders_notice_part2.pdf提取有问题 if __name__ == "__main__": import time