indexcalculation/Indicators/Capital/TotalDebtCapitalizationRati...

64 lines
1.9 KiB
Python

"""
总债务资本化比率
"""
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from Common.schemas import IndicatorDescription
router = APIRouter()
# 指标描述
ENAME = "total_debt_capitalization_ratio"
CNAME = "总债务资本化比率"
NATURE = "定量"
CATEGORY = "资本结构"
DESCRIPTION = "总债务资本化比率 = 负债合计 / (负债合计 + 归属于母公司所有者权益合计)"
# 参数描述
PARAM1_ENAME = "total_liabilities"
PARAM1_CNAME = "负债合计"
PARAM1_DESCR = "资产负债表-负债合计"
PARAM2_ENAME = "parent_company_total_owner_equity"
PARAM2_CNAME = "归属于母公司所有者权益合计"
PARAM2_DESCR = "资产负债表-归属于母公司所有者权益合计"
# 输入参数
class Parameter(BaseModel):
total_liabilities: float = "负债合计"
parent_company_total_owner_equity: float = "归属于母公司所有者权益合计"
# 计算接口
@router.post("/{}/".format(ENAME), tags=[CATEGORY], summary=CNAME, description=DESCRIPTION)
def calculation(parameter: Parameter):
try:
result = parameter.total_liabilities / (parameter.total_liabilities + parameter.parent_company_total_owner_equity)
return round(result, 6)
except Exception:
raise HTTPException(status_code=400, detail="Calculate Failed")
# 描述接口
@router.get("/{}/description".format(ENAME),
response_model=IndicatorDescription,
tags=[CATEGORY], summary=CNAME, description=DESCRIPTION)
def description():
body = {
"ename": ENAME,
"cname": CNAME,
"nature": NATURE,
"category": CATEGORY,
"description": DESCRIPTION,
"parameters": [
{"ename": PARAM1_ENAME, "cname": PARAM1_CNAME, "description": PARAM1_DESCR},
{"ename": PARAM2_ENAME, "cname": PARAM2_CNAME, "description": PARAM2_DESCR}
],
}
return body