Skip to content

content/docs 还剩 17 处悬空锚点(全仓实测),三类新成因:emoji 标题、标题后来加了后缀、zh 页沿用英文锚点 #866

Description

@yinlianghui

发现于 #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 侧现在同时存在两种活写法,两种都能跳:

  1. 本地化锚点 —— #字段级安全(sharing-and-security 三语)。
  2. 不带锚点只链页面 —— 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

pm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions