Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-05-08 17:40:11 +08:00
parent 602c2bd71b
commit 0acee1ec6c
20 changed files with 5410 additions and 79 deletions

90
memory_gateway/api_v2.py Normal file
View File

@ -0,0 +1,90 @@
"""Memory Gateway v2 workflow API."""
from __future__ import annotations
from typing import Optional
from fastapi import APIRouter, Depends, Query
from .schemas_v2 import (
BackendRefStatus,
BackendType,
CommitJobView,
CommitRequest,
CommitResponse,
FeedbackRequest,
FeedbackResponse,
IngestRequest,
IngestResponse,
MemoryRefType,
MemoryRefView,
OutboxProcessResponse,
RetrieveRequest,
RetrieveResponse,
)
from .server_auth import verify_api_key_compat
from .services_v2 import v2_service
router = APIRouter(prefix="/v2", tags=["memory-v2"], dependencies=[Depends(verify_api_key_compat)])
@router.post("/conversations/ingest", response_model=IngestResponse)
async def ingest_conversation(request: IngestRequest):
return await v2_service.ingest_conversation_turn(request)
@router.post("/conversations/{session_id}/commit", response_model=CommitResponse)
async def commit_conversation(session_id: str, request: CommitRequest):
return await v2_service.commit_session(session_id, request)
@router.get("/jobs/{job_id}", response_model=CommitJobView)
async def get_commit_job(job_id: str):
return v2_service.get_commit_job_view(job_id)
@router.post("/context/retrieve", response_model=RetrieveResponse)
async def retrieve_context(request: RetrieveRequest):
return await v2_service.retrieve_context(request)
@router.get("/memory/refs", response_model=list[MemoryRefView])
async def list_memory_refs(
workspace_id: Optional[str] = Query(default=None),
user_id: Optional[str] = Query(default=None),
agent_id: Optional[str] = Query(default=None),
session_id: Optional[str] = Query(default=None),
namespace: Optional[str] = Query(default=None),
backend_type: Optional[BackendType] = Query(default=None),
ref_type: Optional[MemoryRefType] = Query(default=None),
status: Optional[BackendRefStatus] = Query(default=None),
limit: int = Query(default=100, ge=1, le=1000),
):
return v2_service.list_memory_refs(
workspace_id=workspace_id,
user_id=user_id,
agent_id=agent_id,
session_id=session_id,
namespace=namespace,
backend_type=backend_type,
ref_type=ref_type,
status=status,
limit=limit,
)
@router.post("/memory/feedback", response_model=FeedbackResponse)
async def memory_feedback(request: FeedbackRequest):
return await v2_service.record_memory_feedback(request)
@router.post("/admin/outbox/process", response_model=OutboxProcessResponse, tags=["memory-v2-admin"])
async def process_outbox(
limit: int = Query(default=100, ge=1, le=1000),
worker_id: Optional[str] = Query(default=None),
lease_seconds: int = Query(default=300, ge=1, le=3600),
):
return await v2_service.process_pending_outbox_events_summary(
limit=limit,
worker_id=worker_id,
lease_seconds=lease_seconds,
)