Update: Refactor to absolute imports, fix QPS limits, and enhance Gitea sync with SQLite support

This commit is contained in:
2026-07-21 10:25:29 +08:00
parent ef04fc5627
commit 97d9d98b4c
67 changed files with 1691 additions and 457 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
from fastapi import Depends, HTTPException, status, Query, Request
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from .jwt_handler import decode_token
from web.backend.auth.jwt_handler import decode_token
security = HTTPBearer()
+1 -1
View File
@@ -5,7 +5,7 @@ from typing import Optional
from jose import jwt, JWTError
from ..config import get_or_generate_secret, JWT_ALGORITHM, JWT_EXPIRE_HOURS
from web.backend.config import get_or_generate_secret, JWT_ALGORITHM, JWT_EXPIRE_HOURS
def create_access_token(data: dict, expires_delta: Optional[timedelta] = None) -> str:
+2 -2
View File
@@ -5,8 +5,8 @@ import bcrypt
from fastapi import APIRouter, HTTPException, Depends, status
from pydantic import BaseModel
from .jwt_handler import create_access_token
from .dependencies import get_current_user
from web.backend.auth.jwt_handler import create_access_token
from web.backend.auth.dependencies import get_current_user
router = APIRouter(prefix="/api/auth", tags=["auth"])
+15 -15
View File
@@ -15,20 +15,20 @@ from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from .config import get_or_generate_secret # noqa: trigger secret generation
from .services.task_manager import TaskManager
from .services.db_pool import DBPool
from .auth.router import router as auth_router
from .routers.files import router as files_router
from .routers.processing import router as processing_router
from .routers.memory import router as memory_router
from .routers.config_api import router as config_router
from .routers.barcodes import router as barcodes_router
from .routers.sync import router as sync_router
from .routers.websocket import router as ws_router
from .routers.logs import router as logs_router
from .routers.tasks import router as tasks_router
from .middleware.logging import LoggingMiddleware
from web.backend.config import get_or_generate_secret # noqa: trigger secret generation
from web.backend.services.task_manager import TaskManager
from web.backend.services.db_pool import DBPool
from web.backend.auth.router import router as auth_router
from web.backend.routers.files import router as files_router
from web.backend.routers.processing import router as processing_router
from web.backend.routers.memory import router as memory_router
from web.backend.routers.config_api import router as config_router
from web.backend.routers.barcodes import router as barcodes_router
from web.backend.routers.sync import router as sync_router
from web.backend.routers.websocket import router as ws_router
from web.backend.routers.logs import router as logs_router
from web.backend.routers.tasks import router as tasks_router
from web.backend.middleware.logging import LoggingMiddleware
# Shared singletons
task_manager = TaskManager()
@@ -42,7 +42,7 @@ async def lifespan(app: FastAPI):
ConfigManager()
# Initialize DB and cleanup old records
from .services.db_schema import init_db, cleanup_old_records, sync_file_relations
from web.backend.services.db_schema import init_db, cleanup_old_records, sync_file_relations
init_db()
cleanup_old_records()
+1 -1
View File
@@ -7,7 +7,7 @@ from typing import Dict, Optional, List
from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from ..auth.dependencies import get_current_user
from web.backend.auth.dependencies import get_current_user
router = APIRouter(prefix="/api/barcodes", tags=["barcodes"])
+1 -1
View File
@@ -4,7 +4,7 @@ from typing import Dict, Optional, Any
from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from ..auth.dependencies import get_current_user
from web.backend.auth.dependencies import get_current_user
router = APIRouter(prefix="/api/config", tags=["config"])
+4 -4
View File
@@ -10,9 +10,9 @@ from fastapi import APIRouter, HTTPException, UploadFile, File, Depends, Query,
from fastapi.responses import FileResponse, JSONResponse
from pydantic import BaseModel
from ..auth.dependencies import get_current_user, get_current_user_flexible
from ..config import MAX_UPLOAD_SIZE, ALLOWED_EXTENSIONS
from ..services.db_schema import (
from web.backend.auth.dependencies import get_current_user, get_current_user_flexible
from web.backend.config import MAX_UPLOAD_SIZE, ALLOWED_EXTENSIONS
from web.backend.services.db_schema import (
insert_file_metadata, query_file_history, query_file_stats,
query_file_relations, delete_file_relations, sync_file_relations,
query_file_relations_stats, reset_file_cache,
@@ -259,7 +259,7 @@ class RelationDeleteRequest(BaseModel):
def _cleanup_relation_for_deleted_file(directory: str, filename: str):
"""Clean up relation table when a file is deleted."""
import sqlite3
from ..services.db_schema import _db_path
from web.backend.services.db_schema import _db_path
try:
conn = sqlite3.connect(_db_path)
conn.row_factory = sqlite3.Row
+2 -2
View File
@@ -7,8 +7,8 @@ from typing import Optional
from fastapi import APIRouter, Depends, Query
from ..auth.dependencies import get_current_user
from ..services.db_schema import query_http_logs, query_http_log_stats
from web.backend.auth.dependencies import get_current_user
from web.backend.services.db_schema import query_http_logs, query_http_log_stats
logger = logging.getLogger(__name__)
+1 -1
View File
@@ -6,7 +6,7 @@ from pathlib import Path
from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel
from ..auth.dependencies import get_current_user
from web.backend.auth.dependencies import get_current_user
router = APIRouter(prefix="/api/memory", tags=["memory"])
+3 -3
View File
@@ -12,9 +12,9 @@ from typing import Optional, List
from fastapi import APIRouter, HTTPException, Depends, Request
from pydantic import BaseModel
from ..auth.dependencies import get_current_user
from ..services.service_wrapper import ServiceWrapper
from ..services.db_schema import upsert_file_relation
from web.backend.auth.dependencies import get_current_user
from web.backend.services.service_wrapper import ServiceWrapper
from web.backend.services.db_schema import upsert_file_relation
router = APIRouter(prefix="/api/processing", tags=["processing"])
+2 -2
View File
@@ -6,8 +6,8 @@ from pathlib import Path
from fastapi import APIRouter, HTTPException, Depends, Request
from pydantic import BaseModel
from ..auth.dependencies import get_current_user
from ..services.task_manager import TaskManager
from web.backend.auth.dependencies import get_current_user
from web.backend.services.task_manager import TaskManager
router = APIRouter(prefix="/api/sync", tags=["sync"])
+2 -2
View File
@@ -6,8 +6,8 @@ from typing import Optional
import httpx
from fastapi import APIRouter, Depends, HTTPException, Request
from ..auth.dependencies import get_current_user
from ..services import db_schema
from web.backend.auth.dependencies import get_current_user
from web.backend.services import db_schema
router = APIRouter(prefix="/api/tasks", tags=["tasks"])
+1 -1
View File
@@ -1,7 +1,7 @@
"""WebSocket endpoint for real-time task progress."""
from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Query
from ..auth.jwt_handler import decode_token
from web.backend.auth.jwt_handler import decode_token
from jose import JWTError
router = APIRouter(tags=["websocket"])