发现于 #749 / #764 的实施扫尾(PM 认领评论第 3 条要求做一次全仓同类抽检)。只报不改 —— 本单不在 #749 的 PR 范围内(PR #868 )。
基线:origin/main = ed6885e (#749 分支拉出点)。
测法
content/docs 下所有形如 ](/docs/…#anchor)、](/zh-Hans/docs/…#anchor)、](/zh-Hant/docs/…#anchor) 的站内链接,逐条按 fumadocs 的 slug 规则解析目标页标题、比对锚点是否存在。
slug 规则:fumadocs-core 16.9.3 默认 remark-heading,用 github-slugger。用 github-slugger@2 实测,不是推断。
目标文件按 locale 后缀解析:/docs/x 到 content/docs/x.mdx,/zh-Hans/docs/x 到 content/docs/x.zh-Hans.mdx。
代码围栏内的 # 行不算标题;显式 {#id} 优先。
其它链接形式(href=、reference-style [x]: /docs/…、fumadocs Card 的 url=、content/blog)实测全仓零命中,所以内联 markdown 链接就是全集。
main 上共 36 条带锚点站内链接,22 条悬空 。其中 5 条属 #749 (3 条)与 #764 (2 条),已由 PR #868 修掉;其余 17 条是本单 。
17 处清单
A. emoji 开头的标题 —— slug 会多一个前导连字符(3 处)
github-slugger 把 emoji 整个删掉,但 emoji 与文字之间的空格仍然变成连字符,于是 slug 以 - 开头。作者按「显而易见的 slug」写链接就必然写错。
链接所在
锚点
目标标题
实际 slug
content/docs/service/sla-and-escalation.mdx:95
#case-triage
### 🚦 Case Triage
-case-triage
content/docs/service/sla-and-escalation.zh-Hans.mdx:95
#case-triage
### 🚦 工单分流
-工单分流
content/docs/service/sla-and-escalation.zh-Hant.mdx:95
#case-triage
### 🚦 工單分流
-工單分流
(zh 两处同时还叠了下面 C 类的成因。)
⚠️ 这三处与 #749 同页不同行 —— #749 的 PM 裁定把范围锁在 :128 一行,所以没有顺手改。
B. 标题后来长了、链接没跟上(3 处 + 3 处)
链接所在
锚点
目标标题
实际 slug
content/docs/reference/performance-and-limits.mdx:86
#scheduled-export
### Scheduled export to a warehouse (not shipped yet)
scheduled-export-to-a-warehouse-not-shipped-yet
content/docs/reference/performance-and-limits.zh-Hans.mdx:86
#scheduled-export
### 定时导出到数据仓库(尚未落地)
定时导出到数据仓库尚未落地
content/docs/reference/performance-and-limits.zh-Hant.mdx:86
#scheduled-export
### 排程匯出到資料倉儲(尚未落地)
排程匯出到資料倉儲尚未落地
另一组是锚点与标题根本不同名 ,像是标题被改过:
链接所在
锚点
目标页最接近的标题
实际 slug
content/docs/index.mdx:75
#sales-dashboard
## 📈 Sales Performance
-sales-performance
content/docs/index.zh-Hans.mdx:74
#sales-dashboard
同上(zh 页仪表盘标题保留英文)
-sales-performance
content/docs/index.zh-Hant.mdx:74
#sales-dashboard
同上
-sales-performance
content/docs/analytics/dashboards.* 三语都没有 Sales Dashboard 这个标题。改法要先定:是把链接指向 -sales-performance(带前导连字符,很丑),还是给那节加显式 id,还是去锚点。
C. zh 页沿用英文锚点,而目标 zh 页标题已本地化(8 处)
与 #764 完全同源(译了标题、没译锚点),只是 #764 只覆盖了 guides/mobile 两处。
链接所在
锚点
目标标题
实际 slug
content/docs/marketing/campaign-members.zh-Hans.mdx:14
#campaign-enrollment-flow
## 营销活动加入流程
营销活动加入流程
content/docs/marketing/campaign-members.zh-Hant.mdx:14
#campaign-enrollment-flow
## 行銷活動加入流程
行銷活動加入流程
content/docs/sales/opportunities.zh-Hans.mdx:148
#generating-a-quote
## 生成报价
生成报价
content/docs/sales/opportunities.zh-Hant.mdx:148
#generating-a-quote
## 生成報價
生成報價
content/docs/service/cases.zh-Hans.mdx:89
#case-escalation
## 工单升级
工单升级
content/docs/service/cases.zh-Hant.mdx:89
#case-escalation
## 工單升級
工單升級
content/docs/service/index.zh-Hans.mdx:30
#case-escalation
## 工单升级
工单升级
content/docs/service/index.zh-Hant.mdx:30
#case-escalation
## 工單升級
工單升級
对照组:content/docs/administration/sharing-and-security.zh-Hans.mdx:169 的 #字段级安全 是对的 —— 目标 content/docs/administration/profiles.zh-Hans.mdx 的 ## 字段级安全 实测 slug 就是 字段级安全。所以 zh 侧 CJK 锚点本身能用。
顺带记一条待定的写法分歧
zh 侧现在同时存在两种活写法,两种都能跳:
本地化锚点 —— #字段级安全(sharing-and-security 三语)。
不带锚点只链页面 —— PR docs(guides): email-and-calendar 按实测改写——Log a Call 的三写路径、活动指标所在仪表盘、连接器段落标注未落地 (#738) #755 / docs(guides): 按实际落地能力重述 integrations 页,并校正指南索引描述行 (#756) #762 立的写法,sla-and-escalation 三语都链到 /docs/administration/automation#case-escalation,而 automation 页没有这个锚点 #749 的 PM 裁定也按这条办(zh 侧 automation、whats-new 都去掉了锚点)。
本单 C 类 8 处按哪种改,取决于先把这个分歧定下来。建议随本单一起裁一次,否则下一批还会长出第三种。
影响
观察类,与 #749 / #764 同级:点击落到目标页页首而不是目标段落,信息本身不错。B 组第二例(#sales-dashboard)稍重一点 —— 它在 content/docs/index 的「按角色开始」清单里,是新用户第一屏就会点的链接。
去重
防复发的守卫能力单已另立 #867 (锚点存在性 + 语言前缀一致性检查),本单只记存量缺陷。
Refs #749 #764 #867 #868
发现于 #749 / #764 的实施扫尾(PM 认领评论第 3 条要求做一次全仓同类抽检)。只报不改 —— 本单不在 #749 的 PR 范围内(PR #868)。
基线:
origin/main= ed6885e(#749 分支拉出点)。测法
content/docs下所有形如](/docs/…#anchor)、](/zh-Hans/docs/…#anchor)、](/zh-Hant/docs/…#anchor)的站内链接,逐条按 fumadocs 的 slug 规则解析目标页标题、比对锚点是否存在。remark-heading,用github-slugger。用github-slugger@2实测,不是推断。/docs/x到content/docs/x.mdx,/zh-Hans/docs/x到content/docs/x.zh-Hans.mdx。#行不算标题;显式{#id}优先。href=、reference-style[x]: /docs/…、fumadocs Card 的url=、content/blog)实测全仓零命中,所以内联 markdown 链接就是全集。main上共 36 条带锚点站内链接,22 条悬空。其中 5 条属 #749(3 条)与 #764(2 条),已由 PR #868 修掉;其余 17 条是本单。17 处清单
A. emoji 开头的标题 —— slug 会多一个前导连字符(3 处)
github-slugger把 emoji 整个删掉,但 emoji 与文字之间的空格仍然变成连字符,于是 slug 以-开头。作者按「显而易见的 slug」写链接就必然写错。content/docs/service/sla-and-escalation.mdx:95#case-triage### 🚦 Case Triage-case-triagecontent/docs/service/sla-and-escalation.zh-Hans.mdx:95#case-triage### 🚦 工单分流-工单分流content/docs/service/sla-and-escalation.zh-Hant.mdx:95#case-triage### 🚦 工單分流-工單分流(zh 两处同时还叠了下面 C 类的成因。)
:128一行,所以没有顺手改。B. 标题后来长了、链接没跟上(3 处 + 3 处)
content/docs/reference/performance-and-limits.mdx:86#scheduled-export### Scheduled export to a warehouse (not shipped yet)scheduled-export-to-a-warehouse-not-shipped-yetcontent/docs/reference/performance-and-limits.zh-Hans.mdx:86#scheduled-export### 定时导出到数据仓库(尚未落地)定时导出到数据仓库尚未落地content/docs/reference/performance-and-limits.zh-Hant.mdx:86#scheduled-export### 排程匯出到資料倉儲(尚未落地)排程匯出到資料倉儲尚未落地另一组是锚点与标题根本不同名,像是标题被改过:
content/docs/index.mdx:75#sales-dashboard## 📈 Sales Performance-sales-performancecontent/docs/index.zh-Hans.mdx:74#sales-dashboard-sales-performancecontent/docs/index.zh-Hant.mdx:74#sales-dashboard-sales-performancecontent/docs/analytics/dashboards.*三语都没有 Sales Dashboard 这个标题。改法要先定:是把链接指向-sales-performance(带前导连字符,很丑),还是给那节加显式 id,还是去锚点。C. zh 页沿用英文锚点,而目标 zh 页标题已本地化(8 处)
与 #764 完全同源(译了标题、没译锚点),只是 #764 只覆盖了
guides/mobile两处。content/docs/marketing/campaign-members.zh-Hans.mdx:14#campaign-enrollment-flow## 营销活动加入流程营销活动加入流程content/docs/marketing/campaign-members.zh-Hant.mdx:14#campaign-enrollment-flow## 行銷活動加入流程行銷活動加入流程content/docs/sales/opportunities.zh-Hans.mdx:148#generating-a-quote## 生成报价生成报价content/docs/sales/opportunities.zh-Hant.mdx:148#generating-a-quote## 生成報價生成報價content/docs/service/cases.zh-Hans.mdx:89#case-escalation## 工单升级工单升级content/docs/service/cases.zh-Hant.mdx:89#case-escalation## 工單升級工單升級content/docs/service/index.zh-Hans.mdx:30#case-escalation## 工单升级工单升级content/docs/service/index.zh-Hant.mdx:30#case-escalation## 工單升級工單升級对照组:
content/docs/administration/sharing-and-security.zh-Hans.mdx:169的#字段级安全是对的 —— 目标content/docs/administration/profiles.zh-Hans.mdx的## 字段级安全实测 slug 就是字段级安全。所以 zh 侧 CJK 锚点本身能用。顺带记一条待定的写法分歧
zh 侧现在同时存在两种活写法,两种都能跳:
#字段级安全(sharing-and-security三语)。automation、whats-new都去掉了锚点)。本单 C 类 8 处按哪种改,取决于先把这个分歧定下来。建议随本单一起裁一次,否则下一批还会长出第三种。
影响
观察类,与 #749 / #764 同级:点击落到目标页页首而不是目标段落,信息本身不错。B 组第二例(
#sales-dashboard)稍重一点 —— 它在content/docs/index的「按角色开始」清单里,是新用户第一屏就会点的链接。去重
sla-and-escalation.*:128,guides/mobile 的 zh-Hans / zh-Hant 链到 whats-new#roadmap,而 zh 页的标题是「路线图」/「路線圖」——同为悬空锚点 #764 =guides/mobile.zh-Han{s,t}:10,本单 17 处均在别的行/别的文件)。sla-and-escalation.mdx:129与本单最近的一行相邻但不同行)。sales-dashboard、case-triage、scheduled-export、campaign-enrollment-flow逐个 body 搜索),无在案单。防复发的守卫能力单已另立 #867(锚点存在性 + 语言前缀一致性检查),本单只记存量缺陷。
Refs #749 #764 #867 #868