# Conflicts:
#	main.py
This commit is contained in:
yujj128
2025-12-06 16:48:51 +08:00
6 changed files with 54 additions and 5 deletions

9
Dockerfile Normal file
View 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"]

View File

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

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

View File

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

View File

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