const PRODUCT_BASE = { exchange_code: 'SSE', product_category: 'ETF', risk_level: 'R3', fund_manager: '南方基金管理股份有限公司', currency: 'CNY', lot_size: '100.0000', price_tick: '0.001000', min_amount: '100.00', open_start_at: null, open_end_at: null, open_period_start: null, open_period_end: null, transaction_fee_rate: '0.000500', single_investor_max_holding_ratio: '10.0000', management_fee_rate: '0.5000', custodian_fee_rate: '0.1000', risk_disclosure_required: 1, second_confirmation_required: 0, recording_required: 0, status: '正常', created_at: '2026-01-02T09:00:00', updated_at: '2026-09-11T15:00:00', }; export const MOCK_PRODUCTS = Object.freeze([ { ...PRODUCT_BASE, id: 1, product_code: '510300', product_name: '南方沪深300ETF', current_nav: '4.218000', current_nav_at: '2026-09-11T15:00:00', product_category: '宽基ETF', risk_level: 'R3' }, { ...PRODUCT_BASE, id: 2, product_code: '510500', product_name: '南方中证500ETF', current_nav: '6.742000', current_nav_at: '2026-09-11T15:00:00', product_category: '宽基ETF', risk_level: 'R4' }, { ...PRODUCT_BASE, id: 3, product_code: '159915', product_name: '南方创业板ETF', current_nav: '2.184000', current_nav_at: '2026-09-11T15:00:00', product_category: '成长ETF', risk_level: 'R4', exchange_code: 'SZSE' }, { ...PRODUCT_BASE, id: 4, product_code: '512100', product_name: '南方中证1000ETF', current_nav: '2.367000', current_nav_at: '2026-09-11T15:00:00', product_category: '宽基ETF', risk_level: 'R4' }, { ...PRODUCT_BASE, id: 5, product_code: '513100', product_name: '南方纳指ETF', current_nav: '1.728000', current_nav_at: '2026-09-11T15:00:00', product_category: '跨境ETF', risk_level: 'R5' }, { ...PRODUCT_BASE, id: 6, product_code: '511360', product_name: '南方短融ETF', current_nav: '110.126000', current_nav_at: '2026-09-11T15:00:00', product_category: '债券ETF', risk_level: 'R2' }, { ...PRODUCT_BASE, id: 7, product_code: '159645', product_name: '南方新能源ETF', current_nav: '0.864000', current_nav_at: '2026-09-11T15:00:00', product_category: '行业ETF', risk_level: 'R5', exchange_code: 'SZSE' }, { ...PRODUCT_BASE, id: 8, product_code: '159925', product_name: '南方沪深300成长ETF', current_nav: '1.462000', current_nav_at: '2026-09-11T15:00:00', product_category: '策略ETF', risk_level: 'R4', exchange_code: 'SZSE' }, ]); const CLOSE_SERIES = [4.02, 4.08, 4.05, 4.12, 4.16, 4.11, 4.19, 4.23, 4.18, 4.26, 4.21, 4.218]; export function getMockNavHistory(productId) { const product = MOCK_PRODUCTS.find((item) => item.id === Number(productId)) || MOCK_PRODUCTS[0]; const ratio = Number(product.current_nav) / CLOSE_SERIES.at(-1); return CLOSE_SERIES.map((close, index) => ({ id: product.id * 100 + index, product_id: product.id, nav_date: `2026-${String(index + 1).padStart(2, '0')}-11`, nav: (close * ratio).toFixed(6), created_at: `2026-${String(index + 1).padStart(2, '0')}-11T15:00:00`, })); } export const MOCK_RANKING_CHANGE = Object.freeze({ '510300': 1.26, '510500': 2.18, '159915': -0.42, '512100': 1.88, '513100': 0.76, '511360': 0.05, '159645': -1.12, '159925': 1.54, }); export const MOCK_SOURCE_NOTICE = '公开产品接口尚未提供,本页使用与 fin_product、fin_nav_history 模型同字段的演示数据。';