zhaoqingang
2025-02-19 247038b7ee75997c1a9ae1a7472e5eb5023bc9e8
app/api/excel.py
@@ -1,10 +1,10 @@
import random
import string
from fastapi import APIRouter, File, UploadFile, Form, BackgroundTasks, Depends, Request
from fastapi import APIRouter, File, UploadFile, Form, BackgroundTasks, Depends, Request, WebSocket
from fastapi.responses import JSONResponse, FileResponse
from sqlalchemy.orm import Session
from starlette.websockets import WebSocket
# from starlette.websockets import WebSocket
from app.api import get_current_user, get_current_user_websocket, Response
from app.models import UserModel, AgentType
@@ -52,14 +52,15 @@
    return prefix + random_part
def db_create_session(db: Session, user_id: str):
def db_create_session(db: Session, user_id: str, message:str, upload_filenames: list):
    db_id = generate_db_id()
    session = SessionService(db).create_session(
        db_id,
        "合并Excel",
        message,
        "basic_excel_merge",
        AgentType.BASIC,
        int(user_id)
        int(user_id),
        {"role": "user", "content": message, "upload_filenames": upload_filenames}
    )
    return session
@@ -102,26 +103,30 @@
    user_excel = EXCEL_FILES_PATH
    create_dir_if_not_exists(user_source)
    create_dir_if_not_exists(user_excel)
    while True:
        data = await websocket.receive_text()
        # data = await websocket.receive_text()git
        receive_message = await websocket.receive_json()
        try:
            if data == "\"合并Excel\"":
            if receive_message.get("message") == "合并Excel":
                upload_filenames = receive_message.get('upload_filenames', [])
                merge_file = run_conformity(user_source, user_excel)
                if merge_file is not None:
                    await websocket.send_json({
                        "message": "文档合并成功!",
                        "type": "stream",
                        "file_name": f"{merge_file}.xlsx",
                        "download_url": f"./api/document/download/{merge_file}.xlsx"
                        "files": [
                            {
                                "file_name": "Excel",
                                "file_url": f"./api/document/download/{merge_file}.xlsx?file_type=excel",
                            }
                        ]
                    })
                    await websocket.send_json({
                        "message": "文档合并成功!",
                        "message": "合并成功",
                        "type": "close",
                    })
                    # 创建会话记录
                    session = db_create_session(db, user_id)
                    session = db_create_session(db, user_id, receive_message.get("message"), upload_filenames)
                    # 更新会话记录
                    if session:
                        session_id = session.id
@@ -130,8 +135,8 @@
                            "content": {
                                "message": "\u5408\u5e76\u6210\u529f",
                                "type": "message",
                                "file_url": f"/api/document/download/{merge_file}.xlsx?file_type=excel",
                                "file_name": f"{merge_file}"
                                "file_name": "Excel",
                                "file_url": f"/api/document/download/{merge_file}.xlsx?file_type=excel"
                            }
                        }
                        session_service = SessionService(db)
@@ -140,8 +145,8 @@
                    await websocket.send_json({"error": "合并失败", "type": "stream", "files": []})
                    await websocket.close()
            else:
                print(f"Received data: {data}")
                await websocket.send_json({"error": "未知指令", "data": str(data)})
                print(f"Received data: {receive_message.get('message')}")
                await websocket.send_json({"error": "未知指令", "data": str(receive_message.get('message'))})
                await websocket.close()
        except Exception as e:
            await websocket.send_json({"error": str(e)})