-- =============================================
-- 净值历史表迁移脚本
-- 创建时间: 2026-03-13
-- 说明: 用于记录组合每日净值和收益数据
-- =============================================

-- 创建净值历史表
CREATE TABLE IF NOT EXISTS portfolio_nav_history (
    id VARCHAR(50) PRIMARY KEY COMMENT '主键ID',
    portfolio_id VARCHAR(50) NOT NULL COMMENT '组合ID',
    nav_date DATE NOT NULL COMMENT '净值日期',
    total_value DECIMAL(18,4) DEFAULT 0 COMMENT '总资产价值（本位币）',
    total_cost DECIMAL(18,4) DEFAULT 0 COMMENT '累计投入成本（本位币）',
    nav DECIMAL(18,8) DEFAULT 1.0 COMMENT '单位净值',
    daily_return DECIMAL(10,4) DEFAULT 0 COMMENT '日收益率（%）',
    cumulative_return DECIMAL(10,4) DEFAULT 0 COMMENT '累计收益率（%）',
    currency VARCHAR(10) DEFAULT 'CNY' COMMENT '本位币',
    position_count INT DEFAULT 0 COMMENT '持仓数量',
    source VARCHAR(20) DEFAULT 'calculated' COMMENT '数据来源',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组合净值历史表';

-- 创建组合日期联合索引
CREATE INDEX idx_portfolio_date ON portfolio_nav_history(portfolio_id, nav_date);

-- 创建唯一约束（同一组合同一天只能有一条记录）
ALTER TABLE portfolio_nav_history ADD CONSTRAINT uk_portfolio_date UNIQUE(portfolio_id, nav_date);

-- 为portfolio表的total_value字段添加注释
ALTER TABLE portfolios MODIFY COLUMN total_value DECIMAL(18,4) DEFAULT 0 COMMENT '当前总市值（冗余字段，实时计算）';

-- 为portfolio表添加净值相关字段
ALTER TABLE portfolios ADD COLUMN IF NOT EXISTS initial_cost DECIMAL(18,4) DEFAULT 0 COMMENT '初始投入成本';
ALTER TABLE portfolios ADD COLUMN IF NOT EXISTS last_nav_date DATE COMMENT '最后净值计算日期';
