feat: backend servis iskeletini ve yönetim uçlarını ekle
This commit is contained in:
78
backend/app/admin/routes.py
Normal file
78
backend/app/admin/routes.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.admin.services import AdminService
|
||||
from app.db import get_session
|
||||
from app.llm.ollama_client import OllamaClient
|
||||
from app.models import MemoryRecord, OllamaStatus, RuntimeSettings, TelegramStatus, UserRecord
|
||||
|
||||
router = APIRouter(prefix="/admin", tags=["admin"])
|
||||
|
||||
|
||||
class SecretPayload(BaseModel):
|
||||
key: str
|
||||
value: str
|
||||
|
||||
|
||||
def get_admin_service(session: Session = Depends(get_session)) -> AdminService:
|
||||
return AdminService(session)
|
||||
|
||||
|
||||
@router.get("/dashboard")
|
||||
def get_dashboard(service: AdminService = Depends(get_admin_service)):
|
||||
return service.dashboard()
|
||||
|
||||
|
||||
@router.get("/settings", response_model=RuntimeSettings)
|
||||
def get_settings(service: AdminService = Depends(get_admin_service)):
|
||||
return service.get_runtime_settings()
|
||||
|
||||
|
||||
@router.put("/settings", response_model=RuntimeSettings)
|
||||
def put_settings(payload: RuntimeSettings, service: AdminService = Depends(get_admin_service)):
|
||||
return service.update_runtime_settings(payload)
|
||||
|
||||
|
||||
@router.get("/users", response_model=list[UserRecord])
|
||||
def get_users(service: AdminService = Depends(get_admin_service)):
|
||||
return service.list_users()
|
||||
|
||||
|
||||
@router.post("/users", response_model=UserRecord)
|
||||
def post_user(payload: UserRecord, service: AdminService = Depends(get_admin_service)):
|
||||
return service.save_user(payload)
|
||||
|
||||
|
||||
@router.get("/memory", response_model=list[MemoryRecord])
|
||||
def get_memory(service: AdminService = Depends(get_admin_service)):
|
||||
return service.list_memory()
|
||||
|
||||
|
||||
@router.delete("/memory")
|
||||
def delete_memory(service: AdminService = Depends(get_admin_service)):
|
||||
service.clear_memory()
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@router.get("/secrets/{key}")
|
||||
def get_secret(key: str, service: AdminService = Depends(get_admin_service)):
|
||||
return {"key": key, "masked": service.get_secret_mask(key)}
|
||||
|
||||
|
||||
@router.post("/secrets")
|
||||
def post_secret(payload: SecretPayload, service: AdminService = Depends(get_admin_service)):
|
||||
service.save_secret(payload.key, payload.value)
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@router.get("/integrations/ollama", response_model=OllamaStatus)
|
||||
async def get_ollama_status(service: AdminService = Depends(get_admin_service)):
|
||||
runtime = service.get_runtime_settings()
|
||||
client = OllamaClient(runtime.ollama_base_url)
|
||||
return await client.status(runtime.default_model)
|
||||
|
||||
|
||||
@router.get("/integrations/telegram", response_model=TelegramStatus)
|
||||
def get_telegram_status(service: AdminService = Depends(get_admin_service)):
|
||||
return service.telegram_status()
|
||||
Reference in New Issue
Block a user