Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-03-20 23:41:03 +08:00
3 changed files with 29 additions and 3 deletions

View File

@@ -4,7 +4,8 @@ from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from app.config import settings from app.config import settings
from app.database import Base, engine from app.database import Base, engine, SessionLocal
from app.models import Mindmap
from app.routers import chat, mindmaps from app.routers import chat, mindmaps
logging.basicConfig( logging.basicConfig(
@@ -15,6 +16,15 @@ logger = logging.getLogger(__name__)
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
# 删除过期记录
db = SessionLocal()
try:
deleted_count = Mindmap.delete_expired_records(db)
if deleted_count > 0:
logger.info(f"Deleted {deleted_count} expired mindmap records")
finally:
db.close()
app = FastAPI(title=settings.app_name) app = FastAPI(title=settings.app_name)
app.add_middleware( app.add_middleware(

View File

@@ -1,7 +1,7 @@
from datetime import datetime from datetime import datetime, timedelta
from sqlalchemy import DateTime, Integer, String, Text from sqlalchemy import DateTime, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column, Session
from app.database import Base from app.database import Base
@@ -22,3 +22,11 @@ class Mindmap(Base):
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False
) )
@classmethod
def delete_expired_records(cls, db: Session, days: int = 5) -> int:
"""删除超过指定天数的记录"""
cutoff_date = datetime.utcnow() - timedelta(days=days)
deleted = db.query(cls).filter(cls.created_at < cutoff_date).delete()
db.commit()
return deleted

View File

@@ -1,4 +1,5 @@
import json import json
import logging
import secrets import secrets
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
@@ -9,6 +10,8 @@ from app.database import get_db
from app.models import Mindmap from app.models import Mindmap
from app.schemas import MindmapCreateRequest, MindmapNode, MindmapResponse from app.schemas import MindmapCreateRequest, MindmapNode, MindmapResponse
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/mindmaps", tags=["mindmaps"]) router = APIRouter(prefix="/mindmaps", tags=["mindmaps"])
@@ -44,6 +47,11 @@ def create_mindmap(
payload: MindmapCreateRequest, payload: MindmapCreateRequest,
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> MindmapResponse: ) -> MindmapResponse:
# 先删除过期记录
deleted_count = Mindmap.delete_expired_records(db)
if deleted_count > 0:
logger.info(f"Deleted {deleted_count} expired mindmap records")
title = extract_title_from_json(payload.mindmap_json) title = extract_title_from_json(payload.mindmap_json)
raw_json = json.dumps(payload.mindmap_json, ensure_ascii=False) raw_json = json.dumps(payload.mindmap_json, ensure_ascii=False)
unique_id = generate_unique_id() unique_id = generate_unique_id()