export type ArtistTag = | "rock" | "pop" | "chinese" | "hiphop" | "folk" | "jazz"; export interface Artist { /** 唯一 ID(如 001 ~ 036) */ id: string; /** 编号字符串(如 "001") */ no: string; /** 中文名(来自小传) */ name: string; /** 英文名 / 艺名(来自小传) */ enName: string; /** 年龄(来自小传) */ age?: number; /** 性别(来自小传) */ gender?: "M" | "F"; /** 长简介 / 人物小传(来自小传) */ bio: string; /** 立绘主图 URL */ portrait: string; /** 圆形头像 URL(暂未使用) */ avatar: string; /** 表演视频 URL(来自 solo.mp4,缺失则 undefined) */ videoUrl?: string; /** 视频封面图 */ videoPoster?: string; /** 表演图片轮播(三视图 + 氛围图 2/3) */ gallery: string[]; /** 实力标签(用于筛选) */ tags: ArtistTag[]; /** 身高 cm(来自小传) */ height: number; /** 当前票数 */ votes: number; /** 当前排名 (1-36) */ rank: number; /** 座右铭(来自小传) */ motto?: string; /** 性格描述(来自小传) */ personality?: string; /** 口头禅(来自小传) */ catchphrase?: string; /** 核心技能(来自小传) */ skills?: string; /** 核心赛道(来自小传) */ track?: string; } export const TAG_LABEL: Record = { rock: "摇滚", pop: "流行", chinese: "国风", hiphop: "嘻哈说唱", folk: "民谣治愈", jazz: "爵士", }; export type RankCategory = "gold" | "silver" | "bronze" | "top12" | "candidate"; export function getRankCategory(rank: number): RankCategory { if (rank === 1) return "gold"; if (rank === 2) return "silver"; if (rank === 3) return "bronze"; if (rank <= 12) return "top12"; return "candidate"; }