Skip to content

@mai-kit/analysis

@mai-kit/analysis 提供玩家成绩取得后的纯分析能力:重算 Best50、评估升分候选、 比较两份 B50 快照、汇总 Rating 构成与里程碑缺口。包内不请求查分器或曲目 API, 输入由 @mai-kit/prober@mai-kit/database 等调用方准备。

示例

重算 Best50

ts
import { recalculateBests } from "@mai-kit/analysis";

const bests = recalculateBests(scores, (score) => newSongIds.has(score.id));

查找能抬 B15/B35 的加分候选(全曲 + 真实 B50 地板)

ts
import { rankBestsUpgradeCandidates } from "@mai-kit/analysis";

// 目标至少 SSS+(评级下限);也可只传 targetAchievement: 100.5
const candidates = rankBestsUpgradeCandidates(entries, {
  currentBests: bests,
  isNewSong,
  minRate: "sssp",
  limit: 10,
});

Rating 构成与整千缺口

ts
import { summarizeBestsRating, ratingGapToNextThousand } from "@mai-kit/analysis";

const summary = summarizeBestsRating(bests);
const gap = ratingGapToNextThousand(summary.total);

接口与模型

接口描述
BestsChartChange两份 B50 中同一谱面的变化。
BestsComparison两份 B50 快照的比较结果。
BestsEntryB50 中的一张谱面及其分区和名次。
RatedScore含单曲 Rating 的成绩;用于需要精确比较 Rating 的分析。
ScoreUpgrade单张谱面提升到目标达成率后的结果。
ScoreWithLevelValue带精确定数的成绩输入。

B50 分析

函数描述
recalculateBests从全量成绩重新选出新曲 B15 与旧曲 B35。

升分分析

名称描述
RankBestsUpgradeOptionsrankBestsUpgradeCandidates 的选项。
RankUpgradeOptionsrankUpgradeCandidates 的选项。
analyzeScoreUpgrade计算一张谱面提升到目标达成率后的单曲 Rating 增量。
rankBestsUpgradeCandidates在全曲成绩中,找出刷到目标达成率后能抬高 B15 或 B35 总分的谱面。
rankUpgradeCandidates单曲 Rating 增量排列候选(不考虑 B15/B35)。
resolveUpgradeTarget解析「目标达成率」:可用评级下限、显式达成率,或两者取较高。

快照对比

函数描述
compareBests比较两份 B50 快照。

Rating 构成

名称描述
BestsRatingSummaryB50 Rating 构成:新曲 B15 / 旧曲 B35 贡献与 tail(区底)。
RatingMilestoneGapRating 里程碑缺口(如下一整千、或自定义目标)。
ratingGapToNextThousand计算到下一个整千(如 15_823 → 16_000)还差多少 Rating。
ratingGapToTarget计算到指定目标 Rating 的缺口。
summarizeBestsRating汇总一份 B50 的 Rating 构成(分区合计、占比、区底)。