This commit is contained in:
zy123 2024-10-24 09:55:42 +08:00
parent 5cfd6479d4
commit 7776c41ed0
3 changed files with 64 additions and 16 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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