refactor(FinancialPanorama): 添加 TypeScript 类型定义

- 定义基础类型:StockInfo、财务报表数据结构
- 定义业务类型:主营业务、行业排名、业绩预告
- 定义组件 Props 类型:9个子组件的 Props 接口
- 定义指标配置类型:MetricConfig、MetricSectionConfig

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-12 15:00:34 +08:00
parent e92cc09e06
commit 9e6e3ae322

View File

@@ -0,0 +1,437 @@
/**
* FinancialPanorama 组件类型定义
*/
// ==================== 基础类型 ====================
/** 股票基本信息 */
export interface StockInfo {
stock_code: string;
stock_name: string;
key_metrics?: {
eps?: number;
roe?: number;
gross_margin?: number;
net_margin?: number;
roa?: number;
};
growth_rates?: {
revenue_growth?: number;
profit_growth?: number;
asset_growth?: number;
equity_growth?: number;
};
financial_summary?: {
revenue?: number;
net_profit?: number;
total_assets?: number;
total_liabilities?: number;
};
latest_forecast?: {
forecast_type: string;
content: string;
};
}
// ==================== 财务报表类型 ====================
/** 资产负债表数据 */
export interface BalanceSheetData {
period: string;
assets: {
current_assets: {
cash?: number;
trading_financial_assets?: number;
notes_receivable?: number;
accounts_receivable?: number;
prepayments?: number;
other_receivables?: number;
inventory?: number;
contract_assets?: number;
other_current_assets?: number;
total?: number;
};
non_current_assets: {
long_term_equity_investments?: number;
investment_property?: number;
fixed_assets?: number;
construction_in_progress?: number;
right_of_use_assets?: number;
intangible_assets?: number;
goodwill?: number;
deferred_tax_assets?: number;
other_non_current_assets?: number;
total?: number;
};
total?: number;
};
liabilities: {
current_liabilities: {
short_term_borrowings?: number;
notes_payable?: number;
accounts_payable?: number;
advance_receipts?: number;
contract_liabilities?: number;
employee_compensation_payable?: number;
taxes_payable?: number;
other_payables?: number;
non_current_liabilities_due_within_one_year?: number;
total?: number;
};
non_current_liabilities: {
long_term_borrowings?: number;
bonds_payable?: number;
lease_liabilities?: number;
deferred_tax_liabilities?: number;
other_non_current_liabilities?: number;
total?: number;
};
total?: number;
};
equity: {
share_capital?: number;
capital_reserve?: number;
surplus_reserve?: number;
undistributed_profit?: number;
treasury_stock?: number;
other_comprehensive_income?: number;
parent_company_equity?: number;
minority_interests?: number;
total?: number;
};
}
/** 利润表数据 */
export interface IncomeStatementData {
period: string;
revenue: {
total_operating_revenue?: number;
operating_revenue?: number;
other_income?: number;
};
costs: {
total_operating_cost?: number;
operating_cost?: number;
taxes_and_surcharges?: number;
selling_expenses?: number;
admin_expenses?: number;
rd_expenses?: number;
financial_expenses?: number;
interest_expense?: number;
interest_income?: number;
three_expenses_total?: number;
four_expenses_total?: number;
asset_impairment_loss?: number;
credit_impairment_loss?: number;
};
other_gains: {
fair_value_change?: number;
investment_income?: number;
investment_income_from_associates?: number;
exchange_income?: number;
asset_disposal_income?: number;
};
profit: {
operating_profit?: number;
total_profit?: number;
income_tax_expense?: number;
net_profit?: number;
parent_net_profit?: number;
minority_profit?: number;
continuing_operations_net_profit?: number;
discontinued_operations_net_profit?: number;
};
non_operating: {
non_operating_income?: number;
non_operating_expenses?: number;
};
per_share: {
basic_eps?: number;
diluted_eps?: number;
};
comprehensive_income: {
other_comprehensive_income?: number;
total_comprehensive_income?: number;
parent_comprehensive_income?: number;
minority_comprehensive_income?: number;
};
}
/** 现金流量表数据 */
export interface CashflowData {
period: string;
operating_activities: {
inflow: {
cash_from_sales?: number;
};
outflow: {
cash_for_goods?: number;
};
net_flow?: number;
};
investment_activities: {
net_flow?: number;
};
financing_activities: {
net_flow?: number;
};
cash_changes: {
net_increase?: number;
ending_balance?: number;
};
key_metrics: {
free_cash_flow?: number;
};
}
/** 财务指标数据 */
export interface FinancialMetricsData {
period: string;
profitability: {
roe?: number;
roe_deducted?: number;
roe_weighted?: number;
roa?: number;
gross_margin?: number;
net_profit_margin?: number;
operating_profit_margin?: number;
cost_profit_ratio?: number;
ebit?: number;
};
per_share_metrics: {
eps?: number;
basic_eps?: number;
diluted_eps?: number;
deducted_eps?: number;
bvps?: number;
operating_cash_flow_ps?: number;
capital_reserve_ps?: number;
undistributed_profit_ps?: number;
};
growth: {
revenue_growth?: number;
net_profit_growth?: number;
deducted_profit_growth?: number;
parent_profit_growth?: number;
operating_cash_flow_growth?: number;
total_asset_growth?: number;
equity_growth?: number;
fixed_asset_growth?: number;
};
operational_efficiency: {
total_asset_turnover?: number;
fixed_asset_turnover?: number;
current_asset_turnover?: number;
receivable_turnover?: number;
receivable_days?: number;
inventory_turnover?: number;
inventory_days?: number;
working_capital_turnover?: number;
};
solvency: {
current_ratio?: number;
quick_ratio?: number;
cash_ratio?: number;
conservative_quick_ratio?: number;
asset_liability_ratio?: number;
interest_coverage?: number;
cash_to_maturity_debt_ratio?: number;
tangible_asset_debt_ratio?: number;
};
expense_ratios: {
selling_expense_ratio?: number;
admin_expense_ratio?: number;
financial_expense_ratio?: number;
rd_expense_ratio?: number;
three_expense_ratio?: number;
four_expense_ratio?: number;
cost_ratio?: number;
};
cash_flow_quality: {
operating_cash_to_profit_ratio?: number;
cash_to_profit_ratio?: number;
cash_revenue_ratio?: number;
cash_recovery_rate?: number;
operating_cash_to_short_debt?: number;
operating_cash_to_total_debt?: number;
};
}
// ==================== 业务分析类型 ====================
/** 业务项目 */
export interface BusinessItem {
content: string;
revenue?: number;
gross_margin?: number;
profit_margin?: number;
profit?: number;
}
/** 主营业务产品分类 */
export interface ProductClassification {
period: string;
report_type: string;
products: BusinessItem[];
}
/** 主营业务行业分类 */
export interface IndustryClassification {
period: string;
report_type: string;
industries: BusinessItem[];
}
/** 主营业务数据 */
export interface MainBusinessData {
product_classification?: ProductClassification[];
industry_classification?: IndustryClassification[];
}
/** 行业排名指标 */
export interface RankingMetric {
value?: number;
rank?: number;
industry_avg?: number;
}
/** 行业排名数据 */
export interface IndustryRankData {
period: string;
report_type: string;
rankings?: {
industry_name: string;
level_description: string;
metrics?: {
eps?: RankingMetric;
bvps?: RankingMetric;
roe?: RankingMetric;
revenue_growth?: RankingMetric;
profit_growth?: RankingMetric;
operating_margin?: RankingMetric;
debt_ratio?: RankingMetric;
receivable_turnover?: RankingMetric;
};
}[];
}
/** 业绩预告数据 */
export interface ForecastData {
forecasts?: {
forecast_type: string;
report_date: string;
content: string;
reason?: string;
change_range?: {
lower?: number;
upper?: number;
};
}[];
}
/** 对比数据 */
export interface ComparisonData {
period: string;
performance: {
revenue?: number;
net_profit?: number;
};
}
// ==================== 组件 Props 类型 ====================
/** 主组件 Props */
export interface FinancialPanoramaProps {
stockCode?: string;
}
/** 股票信息头部 Props */
export interface StockInfoHeaderProps {
stockInfo: StockInfo | null;
positiveColor: string;
negativeColor: string;
}
/** 表格通用 Props */
export interface TableProps {
data: unknown[];
showMetricChart: (name: string, key: string, data: unknown[], path: string) => void;
calculateYoYChange: (value: number, period: string, data: unknown[], path: string) => { change: number; intensity: number };
getCellBackground: (change: number, intensity: number) => string;
positiveColor: string;
negativeColor: string;
bgColor: string;
hoverBg: string;
}
/** 资产负债表 Props */
export interface BalanceSheetTableProps extends TableProps {
data: BalanceSheetData[];
}
/** 利润表 Props */
export interface IncomeStatementTableProps extends TableProps {
data: IncomeStatementData[];
}
/** 现金流量表 Props */
export interface CashflowTableProps extends TableProps {
data: CashflowData[];
}
/** 财务指标表 Props */
export interface FinancialMetricsTableProps extends TableProps {
data: FinancialMetricsData[];
}
/** 主营业务分析 Props */
export interface MainBusinessAnalysisProps {
mainBusiness: MainBusinessData | null;
}
/** 行业排名 Props */
export interface IndustryRankingViewProps {
industryRank: IndustryRankData[];
bgColor: string;
borderColor: string;
}
/** 股票对比 Props */
export interface StockComparisonProps {
currentStock: string;
stockInfo: StockInfo | null;
positiveColor: string;
negativeColor: string;
}
/** 综合对比分析 Props */
export interface ComparisonAnalysisProps {
comparison: ComparisonData[];
}
// ==================== 指标定义类型 ====================
/** 指标配置 */
export interface MetricConfig {
name: string;
key: string;
path: string;
isCore?: boolean;
isTotal?: boolean;
isSubtotal?: boolean;
}
/** 指标分类配置 */
export interface MetricSectionConfig {
title: string;
key: string;
metrics: MetricConfig[];
}
/** 指标分类映射 */
export interface MetricsCategoryMap {
[key: string]: {
title: string;
metrics: MetricConfig[];
};
}