Skip to content

接口: 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);

属性

属性类型描述定义于
chartsScoreChart[]B50 成绩列表:前 15 新曲 + 后 35 旧曲packages/draw/src/types.ts:298
personalMetrics?MetricItem[]可选:整表覆盖左栏「个人数据」网格。 省略时由 PosterSummary 派生,勿与 summary 平行再抄一套数。packages/draw/src/types.ts:305
playerPlayerProfile海报顶部的玩家展示信息packages/draw/src/types.ts:294
radarRadarItem[]谱面倾向雷达图数据(依赖社区标签,无法仅从 charts 推出)packages/draw/src/types.ts:300
summaryPosterSummaryB50 合计与统计指标(聚合结果的唯一存放处)packages/draw/src/types.ts:296