10.24
This commit is contained in:
parent
5cfd6479d4
commit
7776c41ed0
@ -85,7 +85,7 @@ def docx2pdf(file_path):
|
|||||||
raise ValueError(f"doc2pdf 仅支持 .docx 和 .doc 文件,当前文件扩展名为: .{ext}")
|
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)
|
output_dir = os.path.dirname(file_path)
|
||||||
@ -132,7 +132,7 @@ def doc2docx(file_path):
|
|||||||
raise ValueError(f"doc2docx 仅支持 .doc 文件,当前文件扩展名为: .{ext}")
|
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)
|
output_dir = os.path.dirname(file_path)
|
||||||
|
@ -33,14 +33,34 @@ class CSTFormatter(logging.Formatter):
|
|||||||
|
|
||||||
@app.before_request
|
@app.before_request
|
||||||
def 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())
|
unique_id = str(uuid.uuid4())
|
||||||
g.unique_id = unique_id
|
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)
|
os.makedirs(output_folder, exist_ok=True)
|
||||||
log_filename = "log.txt"
|
log_filename = "log.txt"
|
||||||
log_path = os.path.join(output_folder, log_filename)
|
log_path = os.path.join(output_folder, log_filename)
|
||||||
@ -55,6 +75,7 @@ def create_logger():
|
|||||||
logger.addHandler(stream_handler)
|
logger.addHandler(stream_handler)
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
g.logger = logger
|
g.logger = logger
|
||||||
|
g.output_folder = output_folder
|
||||||
|
|
||||||
|
|
||||||
# @app.route('/upload', methods=['POST'])
|
# @app.route('/upload', methods=['POST'])
|
||||||
@ -113,6 +134,16 @@ def create_logger():
|
|||||||
# })
|
# })
|
||||||
|
|
||||||
def validate_request(default_zb_type=1):
|
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:
|
if not request.is_json:
|
||||||
return jsonify({'error': 'Missing JSON in request'}), 400
|
return jsonify({'error': 'Missing JSON in request'}), 400
|
||||||
file_url = request.json.get('file_url')
|
file_url = request.json.get('file_url')
|
||||||
@ -153,9 +184,17 @@ def get_procurement_reqs():
|
|||||||
|
|
||||||
#提取采购需求
|
#提取采购需求
|
||||||
def download_and_process_file_for_procurement(file_url):
|
def download_and_process_file_for_procurement(file_url):
|
||||||
|
"""
|
||||||
|
下载并处理采购需求文件。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
file_url (str): 文件的URL地址。
|
||||||
|
|
||||||
|
返回:
|
||||||
|
dict: 处理后的数据。
|
||||||
|
"""
|
||||||
logger = g.logger
|
logger = g.logger
|
||||||
unique_id = g.unique_id
|
output_folder = g.output_folder # 使用全局 output_folder
|
||||||
output_folder = f"flask_app/static/output/{unique_id}" # 直接使用全局 unique_id 构建路径
|
|
||||||
filename = "ztbfile"
|
filename = "ztbfile"
|
||||||
downloaded_filename = os.path.join(output_folder, filename)
|
downloaded_filename = os.path.join(output_folder, filename)
|
||||||
# 下载文件,假设 download_file 函数已正确处理异常并返回文件路径
|
# 下载文件,假设 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")
|
logger.error("Unsupported file type or failed to download file")
|
||||||
return None
|
return None
|
||||||
logger.info("Local file path: " + downloaded_filepath)
|
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
|
return res
|
||||||
|
|
||||||
@app.route('/little_zbparse',methods=['POST'])
|
@app.route('/little_zbparse',methods=['POST'])
|
||||||
@ -185,10 +224,19 @@ def little_zbparse():
|
|||||||
logger.error('Exception occurred: ' + str(e)) # 使用全局 logger 记录
|
logger.error('Exception occurred: ' + str(e)) # 使用全局 logger 记录
|
||||||
return jsonify({'error': str(e)}), 500
|
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
|
logger = g.logger
|
||||||
unique_id = g.unique_id
|
output_folder = g.output_folder # 使用全局 output_folder
|
||||||
output_folder = f"flask_app/static/output/{unique_id}" # 直接使用全局 unique_id 构建路径
|
|
||||||
filename = "ztbfile"
|
filename = "ztbfile"
|
||||||
downloaded_filename = os.path.join(output_folder, filename)
|
downloaded_filename = os.path.join(output_folder, filename)
|
||||||
|
|
||||||
@ -200,7 +248,7 @@ def download_and_process_file(file_url,zb_type):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
logger.info("Local file path: " + downloaded_filepath)
|
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
|
return processed_file_path
|
||||||
|
|
||||||
def generate_response(final_json_path):
|
def generate_response(final_json_path):
|
||||||
@ -255,10 +303,9 @@ def process_and_stream(file_url, zb_type):
|
|||||||
"""
|
"""
|
||||||
logger = g.logger
|
logger = g.logger
|
||||||
unique_id = g.unique_id
|
unique_id = g.unique_id
|
||||||
output_folder = f"flask_app/static/output/{unique_id}"
|
output_folder = g.output_folder
|
||||||
filename = "ztbfile"
|
filename = "ztbfile"
|
||||||
downloaded_filename = os.path.join(output_folder, filename)
|
downloaded_filename = os.path.join(output_folder, filename)
|
||||||
|
|
||||||
start_time = time.time() # 记录开始时间
|
start_time = time.time() # 记录开始时间
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -268,7 +315,7 @@ def process_and_stream(file_url, zb_type):
|
|||||||
logger.error("下载文件失败或不支持的文件类型")
|
logger.error("下载文件失败或不支持的文件类型")
|
||||||
error_response = {
|
error_response = {
|
||||||
'message': 'File processing failed',
|
'message': 'File processing failed',
|
||||||
'filename': None,
|
'filename': '',
|
||||||
'data': json.dumps({'error': 'File processing failed'})
|
'data': json.dumps({'error': 'File processing failed'})
|
||||||
}
|
}
|
||||||
yield f"data: {json.dumps(error_response)}\n\n"
|
yield f"data: {json.dumps(error_response)}\n\n"
|
||||||
|
@ -180,6 +180,7 @@ def goods_bid_main(output_folder, file_path, file_type, unique_id):
|
|||||||
|
|
||||||
#TODO:目前的无效标这块的键值都删去空格了,所有的键名都删去空格
|
#TODO:目前的无效标这块的键值都删去空格了,所有的键名都删去空格
|
||||||
#广水市 2022 年义务教育学校多媒体补充采购项目 资格审查有问题
|
#广水市 2022 年义务教育学校多媒体补充采购项目 资格审查有问题
|
||||||
|
#TODO:区分output目录 陕西省公安厅交通警察总队高速公路交通安全智能感知巡查系统项目 (1)_tobidders_notice_part2.pdf提取有问题
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user