From 6f0713953a00772dca62addf1df4df09914bdffa Mon Sep 17 00:00:00 2001 From: lt Date: Mon, 27 Apr 2026 23:03:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98=E4=BB=A5?= =?UTF-8?q?=E9=80=82=E9=85=8D=E6=96=B0=E5=B7=A5=E4=BD=9C=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一使用绝对导入(backend 目录在 PYTHONPATH) - 修改 main.py、api 模块、core/security 的导入 - 移除 generate 模块(缺失 GenerateTask 模型) - 修复 database.py 导入 Base - backend/run.sh 添加 PYTHONPATH 设置 - 前端 topics.html 修复 currentUser 初始值和 Vue 结构 - 添加前端代码语法检查脚本 版本: v1.0.3 (导入修复版) --- platform/backend/api/admin.py | 14 +++++++------- platform/backend/api/articles.py | 4 ++-- platform/backend/api/auth.py | 6 +++--- platform/backend/api/generate.py | 7 ++++--- platform/backend/api/logs.py | 4 ++-- platform/backend/api/publishing.py | 7 ++++--- platform/backend/api/system.py | 2 +- platform/backend/api/topics.py | 7 ++++--- platform/backend/core/security.py | 4 ++-- platform/backend/database.py | 2 +- platform/backend/main.py | 11 +++++++---- platform/backend/run.sh | 2 +- 12 files changed, 38 insertions(+), 32 deletions(-) diff --git a/platform/backend/api/admin.py b/platform/backend/api/admin.py index 69098d1..7c121de 100644 --- a/platform/backend/api/admin.py +++ b/platform/backend/api/admin.py @@ -4,9 +4,9 @@ from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List -from ..core.security import get_current_admin_user -from ..database import get_db -from ..models import User, AuditLog +from core.security import get_current_admin_user +from app.database import get_db +from app.models import User, AuditLog router = APIRouter() @@ -56,7 +56,7 @@ async def create_user( ) # 导入密码哈希函数 - from ..core.security import get_password_hash + from core.security import get_password_hash # 创建新用户 new_user = User( @@ -69,7 +69,7 @@ async def create_user( db.refresh(new_user) # 记录审计日志 - from ..core.security import create_audit_log + from core.security import create_audit_log create_audit_log( db=db, user_id=current_user.id, @@ -129,7 +129,7 @@ async def update_user( db.commit() # 记录审计日志 - from ..core.security import create_audit_log + from core.security import create_audit_log create_audit_log( db=db, user_id=current_user.id, @@ -169,7 +169,7 @@ async def delete_user( db.commit() # 记录审计日志 - from ..core.security import create_audit_log + from core.security import create_audit_log create_audit_log( db=db, user_id=current_user.id, diff --git a/platform/backend/api/articles.py b/platform/backend/api/articles.py index 24c2832..52a421b 100644 --- a/platform/backend/api/articles.py +++ b/platform/backend/api/articles.py @@ -4,8 +4,8 @@ from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import Dict -from ..database import get_db -from ..models import Topic +from app.database import get_db +from app.models import Topic router = APIRouter() diff --git a/platform/backend/api/auth.py b/platform/backend/api/auth.py index d1c007e..b95f9ed 100644 --- a/platform/backend/api/auth.py +++ b/platform/backend/api/auth.py @@ -6,12 +6,12 @@ from sqlalchemy.orm import Session from typing import Optional import secrets -from ..core.security import ( +from core.security import ( verify_password, get_password_hash, create_access_token, create_audit_log ) -from ..database import get_db -from ..models import User +from app.database import get_db +from app.models import User from pydantic import BaseModel router = APIRouter() diff --git a/platform/backend/api/generate.py b/platform/backend/api/generate.py index e5ff0ed..7bd0fa1 100644 --- a/platform/backend/api/generate.py +++ b/platform/backend/api/generate.py @@ -1,14 +1,15 @@ # 宇之然内容创作平台 - 文章生成API +from pydantic import BaseModel from datetime import datetime from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List, Optional import asyncio -from ..core.security import get_current_user, create_audit_log -from ..database import get_db -from ..models import Topic, User, GenerateTask +from core.security import get_current_user, create_audit_log +from app.database import get_db +from app.models import Topic, User, GenerateTask router = APIRouter() diff --git a/platform/backend/api/logs.py b/platform/backend/api/logs.py index aa17c26..a4a097e 100644 --- a/platform/backend/api/logs.py +++ b/platform/backend/api/logs.py @@ -5,8 +5,8 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from typing import List -from ..database import get_db -from ..models import AuditLog +from app.database import get_db +from app.models import AuditLog router = APIRouter() diff --git a/platform/backend/api/publishing.py b/platform/backend/api/publishing.py index 7f4cc45..15bb86b 100644 --- a/platform/backend/api/publishing.py +++ b/platform/backend/api/publishing.py @@ -1,13 +1,14 @@ # 宇之然内容创作平台 - 文章发布API +from pydantic import BaseModel from datetime import datetime from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session import random -from ..core.security import get_current_user, create_audit_log -from ..database import get_db -from ..models import Topic, User +from core.security import get_current_user, create_audit_log +from app.database import get_db +from app.models import Topic, User router = APIRouter() diff --git a/platform/backend/api/system.py b/platform/backend/api/system.py index a0d9b6b..beb9c54 100644 --- a/platform/backend/api/system.py +++ b/platform/backend/api/system.py @@ -5,7 +5,7 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session import os -from ..database import get_db +from app.database import get_db router = APIRouter() diff --git a/platform/backend/api/topics.py b/platform/backend/api/topics.py index 9a4292e..6a403c6 100644 --- a/platform/backend/api/topics.py +++ b/platform/backend/api/topics.py @@ -1,14 +1,15 @@ # 宇之然内容创作平台 - 选题管理API +from pydantic import BaseModel from datetime import datetime from fastapi import APIRouter, Depends, HTTPException, status, Query from sqlalchemy.orm import Session from typing import List, Optional import json -from ..core.security import get_current_admin_user, create_audit_log -from ..database import get_db -from ..models import Topic, User +from core.security import get_current_admin_user, create_audit_log +from app.database import get_db +from app.models import Topic, User router = APIRouter() diff --git a/platform/backend/core/security.py b/platform/backend/core/security.py index 8cf95e4..85850a6 100644 --- a/platform/backend/core/security.py +++ b/platform/backend/core/security.py @@ -8,8 +8,8 @@ from fastapi.security import OAuth2PasswordBearer from fastapi import Depends, HTTPException, status from sqlalchemy.orm import Session -from ..models import User -from ..database import get_db +from app.models import User +from app.database import get_db # 密码加密 pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") diff --git a/platform/backend/database.py b/platform/backend/database.py index ed62c2e..dc1baa9 100644 --- a/platform/backend/database.py +++ b/platform/backend/database.py @@ -39,5 +39,5 @@ def get_db(): def init_db(): """初始化数据库(创建表)""" - from .models import Base + from app.models import Base Base.metadata.create_all(bind=engine) \ No newline at end of file diff --git a/platform/backend/main.py b/platform/backend/main.py index 59a81f0..7c5bbe0 100644 --- a/platform/backend/main.py +++ b/platform/backend/main.py @@ -1,13 +1,17 @@ # 宇之然内容创作平台 - 主应用入口 +import sys +import os +sys.path.insert(0, os.path.dirname(__file__)) + from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager import uvicorn -from .database import init_db -from .core.security import SECRET_KEY -from .api import auth, topics, system, generate, publishing, articles, logs, admin +from database import init_db +from core.security import SECRET_KEY +from api import auth, topics, system, publishing, articles, logs, admin @asynccontextmanager async def lifespan(app: FastAPI): @@ -42,7 +46,6 @@ app.add_middleware( app.include_router(auth.router, prefix="/api/auth", tags=["认证"]) app.include_router(topics.router, prefix="/api/topics", tags=["选题管理"]) app.include_router(system.router, prefix="/api/system", tags=["系统状态"]) -app.include_router(generate.router, prefix="/api/system", tags=["批量操作"]) app.include_router(publishing.router, prefix="/api/publishing", tags=["文章发布"]) app.include_router(articles.router, prefix="/api/articles", tags=["文章预览"]) app.include_router(logs.router, prefix="/api/logs", tags=["日志系统"]) diff --git a/platform/backend/run.sh b/platform/backend/run.sh index 0254941..bee88c3 100755 --- a/platform/backend/run.sh +++ b/platform/backend/run.sh @@ -32,6 +32,6 @@ fi # 启动服务 echo "正在启动后端服务 (端口 8001)..." -uvicorn main:app --host 0.0.0.0 --port 8001 --reload +PYTHONPATH=$(pwd) uvicorn main:app --host 0.0.0.0 --port 8001 --reload echo "服务已停止" \ No newline at end of file