-- 模拟交易系统 - PostgreSQL 数据库表
-- 运行方式: psql -U postgres -d stock_app -f init_sim_trade.sql

-- 模拟交易记录表
CREATE TABLE IF NOT EXISTS sim_trades (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    stock_code VARCHAR(10) NOT NULL,
    stock_name VARCHAR(50),
    trade_type VARCHAR(10) NOT NULL,  -- 'buy' 或 'sell'
    price DECIMAL(10,4) NOT NULL,
    quantity INTEGER NOT NULL DEFAULT 1000,
    trade_date DATE NOT NULL,
    trade_time TIME,
    recommend_rate DECIMAL(5,2),  -- 推荐率
    signal_reason TEXT,  -- 交易信号原因
    commission DECIMAL(10,4) DEFAULT 0,  -- 佣金 (万2.5, 最低5元)
    stamp_tax DECIMAL(10,4) DEFAULT 0,   -- 印花税 (千1, 仅卖出)
    total_fee DECIMAL(10,4) DEFAULT 0,   -- 总手续费
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 模拟持仓表
CREATE TABLE IF NOT EXISTS sim_positions (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    stock_code VARCHAR(10) NOT NULL,
    stock_name VARCHAR(50),
    quantity INTEGER NOT NULL DEFAULT 0,
    avg_cost DECIMAL(10,4) NOT NULL DEFAULT 0,
    total_cost DECIMAL(15,4) NOT NULL DEFAULT 0,
    current_price DECIMAL(10,4),
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(user_id, stock_code)
);

-- 模拟交易统计表（每日汇总）
CREATE TABLE IF NOT EXISTS sim_daily_stats (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    stat_date DATE NOT NULL,
    total_market_value DECIMAL(15,4) DEFAULT 0,  -- 总市值
    total_cost DECIMAL(15,4) DEFAULT 0,  -- 总成本
    unrealized_profit DECIMAL(15,4) DEFAULT 0,  -- 浮动盈亏
    realized_profit DECIMAL(15,4) DEFAULT 0,  -- 已实现盈亏
    total_profit DECIMAL(15,4) DEFAULT 0,  -- 总盈亏
    trade_count INTEGER DEFAULT 0,  -- 当日交易次数
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(user_id, stat_date)
);

-- 模拟交易配置表
CREATE TABLE IF NOT EXISTS sim_config (
    id SERIAL PRIMARY KEY,
    user_id INTEGER UNIQUE REFERENCES users(id) ON DELETE CASCADE,
    initial_capital DECIMAL(15,4) DEFAULT 1000000,  -- 初始资金（默认100万）
    trade_quantity INTEGER DEFAULT 1000,  -- 每次交易数量
    auto_trade_enabled BOOLEAN DEFAULT true,  -- 是否启用自动交易
    auto_trade_time TIME DEFAULT '10:00:00',  -- 自动交易时间
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 创建索引
CREATE INDEX IF NOT EXISTS idx_sim_trades_user ON sim_trades(user_id);
CREATE INDEX IF NOT EXISTS idx_sim_trades_date ON sim_trades(trade_date);
CREATE INDEX IF NOT EXISTS idx_sim_trades_stock ON sim_trades(stock_code);
CREATE INDEX IF NOT EXISTS idx_sim_positions_user ON sim_positions(user_id);
CREATE INDEX IF NOT EXISTS idx_sim_daily_stats_user_date ON sim_daily_stats(user_id, stat_date);

-- 输出结果
SELECT 'Simulation trade tables created successfully!' as status;
