接口: PosterData
定义于: packages/draw/src/types.ts:292
完整 B50 海报绘制数据(仅 Draw.poster 需要整包)。 通常由 draw.poster(profile, bests) 内部经 buildPosterData 生成;也可自行组装后 draw.poster(data)。
Best 板只需署名 + 对应 charts 列表,不必构造本类型。
权威字段(只写一份):
player/charts/summary/radar
派生字段不进本模型:评级分布、定数分布、默认个人数据网格在渲染时 由 charts / summary 计算。personalMetrics 仅用于整表覆盖默认网格。
示例
ts
import { Draw, type PosterData } from "@mai-kit/draw";
import { LevelIndex } from "@mai-kit/shared";
const data: PosterData = {
player: { name: "Player", rating: 315 },
charts: [{
id: 11451,
type: "dx",
level_index: LevelIndex.MASTER,
achievements: 100.5,
dx_score: 1_593,
dx_rating: 315,
level_value: 14.7,
}],
summary: {
b50: 315,
newSongs: 315,
oldSongs: 0,
averageAchievement: "100.500%",
averageRating: 315,
maxRating: 315,
maxDxScore: 1_593,
apPlus: 0,
syncDxPlus: 0,
totalCharts: 1,
},
radar: [
{ label: "扫键", value: 100, displayValue: 8 },
{ label: "纵连", value: 75, displayValue: 6 },
{ label: "体力", value: 50, displayValue: 4 },
],
};
await new Draw({ database }).poster(data);属性
| 属性 | 类型 | 描述 | 定义于 |
|---|---|---|---|
charts | ScoreChart[] | B50 成绩列表:前 15 新曲 + 后 35 旧曲 | packages/draw/src/types.ts:298 |
personalMetrics? | MetricItem[] | 可选:整表覆盖左栏「个人数据」网格。 省略时由 PosterSummary 派生,勿与 summary 平行再抄一套数。 | packages/draw/src/types.ts:305 |
player | PlayerProfile | 海报顶部的玩家展示信息 | packages/draw/src/types.ts:294 |
radar | RadarItem[] | 谱面倾向雷达图数据(依赖社区标签,无法仅从 charts 推出) | packages/draw/src/types.ts:300 |
summary | PosterSummary | B50 合计与统计指标(聚合结果的唯一存放处) | packages/draw/src/types.ts:296 |
