diff --git a/src/views/Company/components/FinancialPanorama/types.ts b/src/views/Company/components/FinancialPanorama/types.ts new file mode 100644 index 00000000..6bf2d9c8 --- /dev/null +++ b/src/views/Company/components/FinancialPanorama/types.ts @@ -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[]; + }; +}