Merge branch 'dev' of http://106.13.42.156:33077/lei_y601/yj_resume
# Conflicts: # main.py
This commit is contained in:
9
Dockerfile
Normal file
9
Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
FROM docker.m.daocloud.io/python:3.12-slim
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
ENV TZ=Asia/Shanghai \
|
||||
LANG=C.UTF-8
|
||||
RUN rm -rf logs .git .idea .venv && apt-get update && apt-get install -y vim curl sqlite3 && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
|
||||
RUN mkdir -p /app/uploads
|
||||
EXPOSE 3006
|
||||
CMD ["python", "main.py"]
|
||||
@@ -10,6 +10,7 @@ DB_PATH = config('DB_PATH', default='D://PycharmProject//yj_resume//main.sqlite3
|
||||
class DBTASK(Base):
|
||||
__tablename__ = 'db_task'
|
||||
id = Column(String(100), primary_key=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
create_time = Column(DateTime, nullable=False, )
|
||||
# 0 代表待执行,1 成功,2 失败
|
||||
status = Column(Integer, nullable=False, default=0)
|
||||
|
||||
18
main.py
18
main.py
@@ -4,6 +4,8 @@ from fastapi import FastAPI, File, UploadFile, HTTPException
|
||||
from typing import List
|
||||
from service.file_service import check_and_create_directory, upload_and_save_file,fetch_files
|
||||
from service import excel_service
|
||||
from service.db_service import get_task_list
|
||||
from fastapi.responses import FileResponse
|
||||
import threading
|
||||
from logging_config import LOGGING_CONFIG
|
||||
import logging
|
||||
@@ -33,8 +35,20 @@ async def create_upload_files(files: List[UploadFile] = File(...)):
|
||||
|
||||
@app.get("/export_task_data_to_excel")
|
||||
def export_task_data_to_excel(task_id: str):
|
||||
message = excel_service.export_task_data_to_excel(task_id)
|
||||
return {"message": message}
|
||||
path_xx = excel_service.export_task_data_to_excel(task_id)
|
||||
if not path_xx:
|
||||
raise HTTPException(status_code=404, detail="file not found")
|
||||
return FileResponse(
|
||||
path=path_xx,
|
||||
media_type="application/octet-stream", # 通用二进制流
|
||||
filename=f"{task_id}.xlsx" # 浏览器下载时使用的文件名
|
||||
)
|
||||
|
||||
|
||||
@app.get("/parse_task_list")
|
||||
def parse_task_list():
|
||||
data = get_task_list()
|
||||
return {"data": data, "code": 200, }
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
18
service/db_service.py
Normal file
18
service/db_service.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from db.sql_db import DBTASK, DBRESUME, SqliteSqlalchemy
|
||||
|
||||
|
||||
def get_task_list():
|
||||
task_list = SqliteSqlalchemy().session.query(DBTASK).order_by(DBTASK.create_time.desc()).all()
|
||||
result=[]
|
||||
for task in task_list:
|
||||
result.append({
|
||||
"id": task.id,
|
||||
"name": task.name,
|
||||
"success_num": task.success_num,
|
||||
"fail_num": task.fail_num,
|
||||
"status": task.status,
|
||||
"total_num": task.total_num,
|
||||
"message": task.message,
|
||||
"create_time": task.create_time.strftime("%Y-%m-%d %H:%M:%S") if task.create_time else None,
|
||||
})
|
||||
return result
|
||||
@@ -23,9 +23,13 @@ def export_to_excel(task_id):
|
||||
|
||||
|
||||
def export_task_data_to_excel(task_id):
|
||||
pathxx = pathlib.Path(BASE_PATH).joinpath(task_id)
|
||||
pathxx = pathxx.joinpath(f"{task_id}.xlsx")
|
||||
if pathxx.exists():
|
||||
return pathxx
|
||||
session = SqliteSqlalchemy().session
|
||||
task = session.query(DBTASK).filter_by(id=task_id).first()
|
||||
if not task or task.status == 0 or task.status == 2:
|
||||
return "任务未完成或者失败"
|
||||
return None
|
||||
export_to_excel(task_id)
|
||||
return "导出成功"
|
||||
return pathxx
|
||||
|
||||
@@ -27,8 +27,11 @@ def check_and_create_directory(files):
|
||||
if not files or len(files) == 0:
|
||||
return None
|
||||
id = str(uuid.uuid4())
|
||||
current_time = datetime.now()
|
||||
# 格式化时间为字符串
|
||||
formatted_time = current_time.strftime("%Y-%m-%d-%H-%M-%S")
|
||||
task = DBTASK(id=id, create_time=datetime.now(), status=0, success_num=0, total_num=len(files),
|
||||
fail_num=0)
|
||||
fail_num=0,name=f"解析任务({formatted_time})")
|
||||
|
||||
session = SqliteSqlalchemy().session
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user