You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.7 KiB

"""
财务数据Schema
"""
from datetime import date
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
class FinanceRequest(BaseModel):
"""财务数据请求"""
codes: str = Field(..., description="股票代码,多个用逗号分隔")
start_date: str = Field(..., description="开始报告期(YYYYMMDD)")
end_date: str = Field(..., description="结束报告期(YYYYMMDD)")
class BalanceSheetData(BaseModel):
"""资产负债表数据"""
report_date: str
report_type: Optional[int] = None
statement_type: Optional[int] = None
total_assets: Optional[float] = None
total_cur_assets: Optional[float] = None
total_noncur_assets: Optional[float] = None
currency_cap: Optional[float] = None
notes_receivable: Optional[float] = None
acct_receivable: Optional[float] = None
inventory: Optional[float] = None
fix_assets: Optional[float] = None
total_liab: Optional[float] = None
total_cur_liab: Optional[float] = None
total_noncur_liab: Optional[float] = None
notes_payable: Optional[float] = None
acct_payable: Optional[float] = None
st_borrowing: Optional[float] = None
lt_loan: Optional[float] = None
tot_share_equity: Optional[float] = None
class BalanceSheetResponse(BaseModel):
"""资产负债表响应"""
code: str
data: List[BalanceSheetData]
class CashFlowData(BaseModel):
"""现金流量表数据"""
report_date: str
report_type: Optional[int] = None
statement_type: Optional[int] = None
net_cash_flows_opera_act: Optional[float] = None
net_cash_flows_inv_act: Optional[float] = None
net_cash_flows_fin_act: Optional[float] = None
net_incr_cash_and_cash_equ: Optional[float] = None
cash_recp_sg_and_rs: Optional[float] = None
cash_pay_goods_services: Optional[float] = None
class CashFlowResponse(BaseModel):
"""现金流量表响应"""
code: str
data: List[CashFlowData]
class IncomeData(BaseModel):
"""利润表数据"""
report_date: str
report_type: Optional[int] = None
statement_type: Optional[int] = None
tot_opera_rev: Optional[float] = None
opera_rev: Optional[float] = None
tot_opera_cost: Optional[float] = None
opera_profit: Optional[float] = None
total_profit: Optional[float] = None
net_pro_incl_min_int_inc: Optional[float] = None
basic_eps: Optional[float] = None
diluted_eps: Optional[float] = None
rd_exp: Optional[float] = None
selling_exp: Optional[float] = None
admin_exp: Optional[float] = None
fin_exp: Optional[float] = None
class IncomeResponse(BaseModel):
"""利润表响应"""
code: str
data: List[IncomeData]