Repository navigation
v0.33.1
ToneCore v0.33.1
修复封面补齐的匹配顺序 bug(先归一化把括号删了,导致「截掉版本后缀」失效),覆盖率 15% → 85~100%。
这是个什么 bug
v0.33.0 里我加了「按主标题匹配」来对齐酷我的版本后缀 —— 例如把
稻香 (完整版|DJ Ray版)、稻 香(堵桥版) 都归一到 稻香,好去匹配网易那边干净的 稻香。
但实现写成了:
const base = (s) => {
const t = norm(s); // ← 先归一化
const i = t.search(/[((]/); // ← 再找括号
...
};norm() 会把 ()() 当标点一并删掉。所以等它执行完,字符串里已经一个括号都没有了,
后面那句 search 永远找不到 —— base() 退回返回整个字符串。
结果:改进写进去了,但完全没生效。
修正
顺序反过来 —— 先截括号,再归一化:
const base = (s) => {
const raw = String(s || '');
const i = raw.search(/[((]/);
return norm(i > 0 ? raw.slice(0, i) : raw);
};实测覆盖率(同一批真实搜索数据)
| 关键词 | v0.33.0(实际未生效) | v0.33.1 |
|---|---|---|
| 稻香 | 3/20 (15%) | 17/20 (85%) |
| 孤勇者 | 3/20 (15%) | 20/20 (100%) |
| 起风了 | 5/20 (25%) | 18/20 (90%) |
| 晴天 | 7/20 (35%) | 17/20 (85%) |
(统计口径:一次搜索里,除网易外其它平台曲目中能补到封面的比例。)
教训
v0.33.0 是改完就发、没有验证覆盖率。而新旧逻辑跑出来的数字完全一样(都是 15%)
——这种「改了等于没改」,只有拿真实数据做前后对比才能发现。
这次补了验证:用 4 个关键词各 20 首真实数据跑新旧对照,确认提升后才发。
验证
npm run build ✅ server 通过
npm test ✅ 15 项全过
package-lock ✅ 未漂移
需要你实测
搜一首歌(比如「稻香」),看酷我那组结果是不是几乎都有封面了 ——
此前是清一色灰度占位方块。
待办
- 音源状态显示口径
- 锁屏动态歌词:浏览器能力边界,做不到