package com.spot.constant;

/**
 * 现货模块 Redis Key 统一管理，所有模块读写 Redis 时引用此类，避免 key 散落不一致
 *
 * @author jean
 * @date 2026-05-06
 */
public final class RedisKey {

    private RedisKey() {}

    private static final String NS = "ExchangeNew2:";

    /** 最新成交价 Hash（单个 key），field=symbol，value=price */
    public static final String LATEST_PRICE = NS + "latestPrice";

    /**
     * 现货账户日盈亏快照前缀
     * 完整 key = PNL_SNAPSHOT_PREFIX + uid + ":" + yyyyMMdd，value = 当日最新总市值(USDT)
     * 每次查询资产时写入并更新，48h 自动过期；次日用 yesterday 的 key 作为基线计算今日盈亏。
     */
    public static final String PNL_SNAPSHOT_PREFIX = NS + "pnlSnapshot:";

    /** 长周期行情 Hash prefix，完整 key = LONG_TIME_TICKER_PREFIX + symbol，field=period */
    public static final String LONG_TIME_TICKER_PREFIX = NS + "longTimeTicker:";

    /** 成交记录 ZSet prefix，完整 key = TRADE_PREFIX + symbol */
    public static final String TRADE_PREFIX = NS + "trade:";

    /**
     * 长周期行情 Hash key
     *
     * @param symbol 交易对
     * @return Redis key
     */
    public static String longTimeTicker(String symbol) {
        return LONG_TIME_TICKER_PREFIX + symbol.toLowerCase();
    }

    /**
     * 成交记录 ZSet key
     *
     * @param symbol 交易对
     * @return Redis key
     */
    public static String trade(String symbol) {
        return TRADE_PREFIX + symbol.toLowerCase();
    }
}
