fix(moments): 评论流键从 #<slug> 改为虚拟路径,避免键被截断
实测发现 `#` 在查询串里是 fragment 分隔符:裸传 `/moments/#2026-11-02` 会被服务端
截断成页面级键 `/moments/`(生产 Artalk 实测,响应里 key 变成 "/moments/"),
后果是所有瞬间共用同一个评论流、pv 也串在一起。
- page_key 改为虚拟路径 `/moments/<slug>/`(生产实测键原样保留,零转义风险;
将来真做单条瞬间页时键天然对齐)
- spec 与 runs.jsonl 口径同步(七项 verify 在新指纹下重跑全绿)
验证: 构建 51 页 exit 0;产物含 /moments/2026-11-02/ 键;content-lint 0/0/0;
spec_verify 七项 exit=0;check 收敛
Spec: 2026-11-02_blog-5h-content-social (T3 修正)
Co-authored-by: GLM-5.3
This commit is contained in:
1 parent
550f6d15b4
commit
c7d1e7b975
4 files changed
+16
-6
No files matched your search
@@ -6,8 +6,11 @@
|
||||
* 都白付;Artalk 官方也未背书"同页多实例长期并存"。于是「展开才挂」是折中:
|
||||
* 读者点了才付成本,未点零开销(连 Artalk.js 都不下载)。
|
||||
*
|
||||
* 评论流约定:`page_key = /moments/#<slug>`,**中英双语共用同一键**(评论不分裂,
|
||||
* 与文章页 `/archives/<slug>/` 双语共用同理);site 恒为 wait4x.online。
|
||||
* 评论流约定:`page_key = /moments/<slug>/`(虚拟路径),**中英双语共用同一键**
|
||||
* (评论不分裂,与文章页 `/archives/<slug>/` 同理);site 恒为 wait4x.online。
|
||||
* 为什么不用 `#<slug>` 形态:`#` 在查询串里是 fragment 分隔符,裸传会被服务端截断成
|
||||
* 页面级键 `/moments/`(实测),届时所有瞬间会共用同一个评论流、pv 也串在一起。
|
||||
* 虚拟路径既无转义风险,将来真做单条瞬间页时键也天然对齐。
|
||||
*
|
||||
* 计数不在这里自己 fetch:复用 geek/ViewMeta(mode="readonly" 只读,不写 pv),
|
||||
* 放在卡片底部让读者不开评论也能看见条数。
|
||||
@@ -24,8 +27,8 @@ interface Props {
|
||||
|
||||
const { slug, locale = 'zh' } = Astro.props;
|
||||
|
||||
/** 评论流键:双语共用;`#<slug>` 与文章页 page_key 形状保持一致的可读性 */
|
||||
const pageKey = `/moments/#${slug}`;
|
||||
/** 评论流键:双语共用的虚拟路径(形如 /moments/2026-11-02/),无转义风险 */
|
||||
const pageKey = `/moments/${slug}/`;
|
||||
/** 容器 id 只允许 CSS 安全字符(slug 理论上是文件名,仍兜一层) */
|
||||
const panelId = `mom-atk-${slug.replace(/[^a-zA-Z0-9_-]/g, '-')}`;
|
||||
const label = t('moment_comments', locale);
|
||||
|
||||
Reference in new issue
Block a user