新增多证书模板管理流程

This commit is contained in:
Certificate System
2026-08-13 18:06:05 +08:00
parent eac19ea593
commit abbefc4b48
27 changed files with 774 additions and 61 deletions

View File

@@ -0,0 +1,25 @@
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.responses import FileResponse
from app.api.deps import require_roles
from app.models import AdminUser
from app.schemas.certificate_template import CertificateTemplateOut
from app.services.certificate_templates import get_certificate_template, list_certificate_templates
router = APIRouter()
@router.get("", response_model=list[CertificateTemplateOut])
def list_templates(
_: AdminUser = Depends(require_roles("system_admin", "certificate_admin", "readonly")),
) -> list[dict[str, object]]:
return [template.to_dict() for template in list_certificate_templates()]
@router.get("/{template_code}/preview")
def preview_template(template_code: str) -> FileResponse:
try:
template = get_certificate_template(template_code)
except (ValueError, FileNotFoundError) as exc:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc
return FileResponse(template.asset_path, media_type="image/png")