feat(server): 新增编排器和报销单API接口,扩展服务编排和报销管理端点
This commit is contained in:
@@ -272,6 +272,43 @@ def get_expense_claim_item_attachment_meta(
|
||||
return ExpenseClaimAttachmentRead(**payload)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/claims/{claim_id}/items/{item_id}/attachment/preview",
|
||||
response_class=FileResponse,
|
||||
summary="读取费用明细附件预览资源",
|
||||
description="优先返回票据预览图;若无单独预览图,则回退到原附件内容。",
|
||||
responses={
|
||||
status.HTTP_404_NOT_FOUND: {
|
||||
"model": ErrorResponse,
|
||||
"description": "报销单、费用明细或附件预览不存在。",
|
||||
},
|
||||
},
|
||||
)
|
||||
def get_expense_claim_item_attachment_preview(
|
||||
claim_id: str,
|
||||
item_id: str,
|
||||
db: DbSession,
|
||||
current_user: CurrentUser,
|
||||
) -> FileResponse:
|
||||
service = ExpenseClaimService(db)
|
||||
try:
|
||||
payload = service.get_claim_item_attachment_preview_content(
|
||||
claim_id=claim_id,
|
||||
item_id=item_id,
|
||||
current_user=current_user,
|
||||
)
|
||||
except LookupError as error:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(error)) from error
|
||||
except FileNotFoundError as error:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(error)) from error
|
||||
|
||||
if payload is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Claim not found")
|
||||
|
||||
file_path, media_type, filename = payload
|
||||
return FileResponse(file_path, media_type=media_type, filename=filename)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/claims/{claim_id}/items/{item_id}/attachment",
|
||||
response_class=FileResponse,
|
||||
|
||||
Reference in New Issue
Block a user