refactor: complete V1 to V2 migration and remove legacy architecture

Remove all V1 architecture components and promote V2 to primary:
- Delete all paddle_ocr_* table models (export, ocr, translation, user)
- Delete legacy routers (auth, export, ocr, translation)
- Delete legacy schemas and services
- Promote user_v2.py to user.py as primary user model
- Update all imports and dependencies to use V2 models only
- Update main.py version to 2.0.0

Database changes:
- Fix SQLAlchemy reserved word: rename audit_log.metadata to extra_data
- Add migration to drop all paddle_ocr_* tables
- Update alembic env to only import V2 models

Frontend fixes:
- Fix Select component exports in TaskHistoryPage.tsx
- Update to use simplified Select API with options prop
- Fix AxiosInstance TypeScript import syntax

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
egg
2025-11-14 21:27:39 +08:00
parent ad2b832fb6
commit fd98018ddd
34 changed files with 554 additions and 3787 deletions

View File

@@ -10,8 +10,8 @@ from fastapi import APIRouter, Depends, HTTPException, status, Query
from fastapi.responses import FileResponse
from sqlalchemy.orm import Session
from app.core.deps import get_db, get_current_user_v2
from app.models.user_v2 import User
from app.core.deps import get_db, get_current_user
from app.models.user import User
from app.models.task import TaskStatus
from app.schemas.task import (
TaskCreate,
@@ -34,7 +34,7 @@ router = APIRouter(prefix="/api/v2/tasks", tags=["Tasks"])
async def create_task(
task_data: TaskCreate,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Create a new OCR task
@@ -72,7 +72,7 @@ async def list_tasks(
order_by: str = Query("created_at"),
order_desc: bool = Query(True),
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
List user's tasks with pagination and filtering
@@ -134,7 +134,7 @@ async def list_tasks(
@router.get("/stats", response_model=TaskStatsResponse)
async def get_task_stats(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Get task statistics for current user
@@ -157,7 +157,7 @@ async def get_task_stats(
async def get_task(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Get task details by ID
@@ -184,7 +184,7 @@ async def update_task(
task_id: str,
task_update: TaskUpdate,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Update task status and results
@@ -253,7 +253,7 @@ async def update_task(
async def delete_task(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Delete a task
@@ -280,7 +280,7 @@ async def delete_task(
async def download_json(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Download task result as JSON file
@@ -327,7 +327,7 @@ async def download_json(
async def download_markdown(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Download task result as Markdown file
@@ -374,7 +374,7 @@ async def download_markdown(
async def download_pdf(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Download task result as searchable PDF file
@@ -421,7 +421,7 @@ async def download_pdf(
async def start_task(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Start processing a pending task
@@ -459,7 +459,7 @@ async def start_task(
async def cancel_task(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Cancel a pending or processing task
@@ -513,7 +513,7 @@ async def cancel_task(
async def retry_task(
task_id: str,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user_v2)
current_user: User = Depends(get_current_user)
):
"""
Retry a failed task