Merge remote-tracking branch 'origin/ps' into wsc
This commit is contained in:
commit
8693f49f25
|
@ -12,7 +12,7 @@ router = APIRouter()
|
|||
ENAME = "total_debt_capitalization_ratio"
|
||||
CNAME = "总债务资本化比率"
|
||||
NATURE = "定量"
|
||||
CATEGORY = "偿债能力"
|
||||
CATEGORY = "资本结构"
|
||||
DESCRIPTION = "总债务资本化比率 = 负债合计 / (负债合计 + 归属于母公司所有者权益合计)"
|
||||
|
||||
# 参数描述
|
|
@ -1,3 +1,11 @@
|
|||
"""
|
||||
资本结构
|
||||
"""
|
||||
"""
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from Indicators.Capital import TotalDebtCapitalizationRatio
|
||||
|
||||
capital_router = APIRouter()
|
||||
|
||||
capital_router.include_router(TotalDebtCapitalizationRatio.router)
|
|
@ -0,0 +1,69 @@
|
|||
"""
|
||||
利息保障倍数
|
||||
"""
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
from Common.schemas import IndicatorDescription
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
# 指标描述
|
||||
ENAME = "interest_protection_multiples"
|
||||
CNAME = "利息保障倍数"
|
||||
NATURE = "定量"
|
||||
CATEGORY = "偿债能力"
|
||||
DESCRIPTION = "利息保障倍数 = (利润总额 + 计入财务费用的利息支出) / (计入财务费用的利息支出 + 资本化利息支出)"
|
||||
|
||||
# 参数描述
|
||||
PARAM1_ENAME = "total_profit"
|
||||
PARAM1_CNAME = "利润总额"
|
||||
PARAM1_DESCR = "利润表-利润总额"
|
||||
|
||||
PARAM2_ENAME = "interest_expense_included_in_finance_expenses"
|
||||
PARAM2_CNAME = "计入财务费用的利息支出"
|
||||
PARAM2_DESCR = "利润表-营业总成本-财务费用-利息费用"
|
||||
|
||||
PARAM3_ENAME = "capitalized_interest_expense"
|
||||
PARAM3_CNAME = "资本化利息支出"
|
||||
PARAM3_DESCR = "利润表-营业总成本-其他业务成本-利息支出"
|
||||
|
||||
|
||||
# 输入参数
|
||||
class Parameter(BaseModel):
|
||||
total_profit: float = "利润总额"
|
||||
interest_expense_included_in_finance_expenses: float = "计入财务费用的利息支出"
|
||||
capitalized_interest_expense: float = "资本化利息支出"
|
||||
|
||||
|
||||
# 计算接口
|
||||
@router.post("/{}/".format(ENAME), tags=[CATEGORY], summary=CNAME, description=DESCRIPTION)
|
||||
def calculation(parameter: Parameter):
|
||||
try:
|
||||
result = (parameter.total_profit + parameter.interest_expense_included_in_finance_expenses) / (parameter.interest_expense_included_in_finance_expenses + parameter.capitalized_interest_expense)
|
||||
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},
|
||||
{"ename": PARAM2_ENAME, "cname": PARAM2_CNAME, "description": PARAM2_DESCR}
|
||||
],
|
||||
}
|
||||
|
||||
return body
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from Indicators.Debt import TotalDebtCapitalizationRatio
|
||||
from Indicators.Debt import InterestProtectionMultiples
|
||||
|
||||
debt_router = APIRouter()
|
||||
|
||||
debt_router.include_router(TotalDebtCapitalizationRatio.router)
|
||||
debt_router.include_router(InterestProtectionMultiples.router)
|
||||
|
|
6
main.py
6
main.py
|
@ -1,6 +1,8 @@
|
|||
import uvicorn
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from Indicators.Capital import capital_router
|
||||
from Indicators.Profit import profit_router
|
||||
from Indicators.Debt import debt_router
|
||||
|
||||
|
@ -35,6 +37,7 @@ app.add_middleware(
|
|||
PREFIX = "/api/index_function"
|
||||
app.include_router(profit_router, prefix=PREFIX)
|
||||
app.include_router(debt_router, prefix=PREFIX)
|
||||
app.include_router(capital_router, prefix=PREFIX)
|
||||
|
||||
# Income.router,
|
||||
# Flows.router,
|
||||
|
@ -50,3 +53,6 @@ app.include_router(debt_router, prefix=PREFIX)
|
|||
# Compliance.router,
|
||||
# PublicOpinion.router,
|
||||
# Other.router,
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="127.0.0.1", port=8001)
|
||||
|
|
Loading…
Reference in New Issue