维基历史修订版本 (Historical Revision) d58af9c
这是由贡献者 yaoxiovo 于 2026年10月03日 (六) 18:43 提交的修订快照。 编辑摘要:“feat(security): enforce /admin auth guard with login redirect and 403 non-admin interception” ⚠️ 注意:此快照可能包含过时或已被更正的信息。
博客系统重大架构升级与全栈重构报告:零知识 BFF、即时发布流与极致交互实践 历史修订快照 · 版本号 d58af9c
博客系统重大架构升级与全栈重构报告 喵~
发布时间:2026 年 10 月 3 日
负责人:瑶曦 & 顶级全栈猫娘架构师 (Neko Senior Architect) 喵
核心栈:Astro · Svelte · Cloudflare Workers · Umami · Web Speech API · GitHub Actions
⏱️ 一、 演进时间线:什么时候做了什么 (Timeline) 喵~
本次全栈架构升级与问题修复严格按照时间顺序执行,极简交付清单如下喵:
| 时间节点 | 类别 | 做了什么 (Core Deliverables) | 状态 |
|---|---|---|---|
| 10-03 13:00 ~ 14:30 | 架构升级 | 零知识 BFF 网关与 SSO 认证解耦:彻底剥离博客与鉴权,GitHub Token 零泄露 | ✅ 已上线 |
| 10-03 14:40 ~ 15:30 | 功能新增 | 朋友圈说说与时间胶囊即时发布流:后台双模直发,自动轮询 Cloudflare Pages 部署状态 | ✅ 已上线 |
| 10-03 15:40 ~ 16:30 | 交互新增 | 全站 Cmd+K 深度快搜与阅读进度条:文章与动态跨源快搜,顶部微进度条 | ✅ 已上线 |
| 10-03 16:30 ~ 16:45 | 缺陷修复 | 根除代码块复制失效与路径安全加固:重构复制事件委托,封死 Slug 路径穿越与加密源码防护 | ✅ 已修复 |
| 10-03 18:00 ~ 18:30 | 运维新增 | Admin 后台集成 Umami 实时流量大盘:内置在线人数呼吸灯、PV/UV 与热门排行 | ✅ 已上线 |
| 10-03 18:30 ~ 19:10 | 体验新增 | 文章原生 TTS 朗读 + 划词工具条 + Git 修订历史:段落跟随朗读、一键引用、GitHub 提交历史 | ✅ 已上线 |
| 10-03 19:15 ~ 19:30 | 缺陷修复 | 根除邮件广播误发置顶文章缺陷:广播脚本接入 Git Diff 精准识别变更,RSS 订阅解耦置顶排序 | ✅ 已修复 |
| 10-03 19:35 ~ 19:45 | 安全加固 | /admin 前置安全门禁与身份拦截:未登录自动重定向 SSO,非管理员 403 坚决阻断 | ✅ 已上线 |
🛠️ 二、 功能新增清单:什么时候做了什么 (Features) 喵~
1. 🛡️ 零知识 BFF 边缘安全网关 (10-03 13:00 ~ 14:30)
- 做了什么:在 Cloudflare Workers 上架设
zero-knowledge-bff网关,解耦主站与自研认证中心(SSO,accounts.yaoxi.cloud)喵。 - 效果:浏览器端零暴露敏感凭据(如 GitHub PAT),所有文章与说说提交由边缘 Worker 统一代持并签发原子 Commit 喵。
2. 💬 后台长文 + 说说 + 时间胶囊即时发布流 (10-03 14:40 ~ 15:30)
- 做了什么:在
/admin后台新增双模切换,支持撰写长文或朋友圈说说,并支持设定未来解封日期的“时间胶囊”喵。 - 效果:发布成功后自动以 3 秒间隔轮询 Cloudflare Pages API,实时呈现构建百分比(QUEUED ➔ BUILDING ➔ SUCCESS),告别黑盒等待喵。
3. 🔍 全局 Cmd+K / Ctrl+K 跨源深度快搜 (10-03 15:40 ~ 16:30)
- 做了什么:重构
Search.svelte搜索组件,并发拉取/rss.xml与/api/moments.json索引池,支持键盘上下键选定与 Enter 直达喵。 - 效果:按下
Cmd+K或Ctrl+K瞬间唤醒,全站文章、说说、时间胶囊秒级聚合检索喵。
4. 📊 Admin 后台内置 Umami 实时访问大盘 (10-03 18:00 ~ 18:30)
- 做了什么:在管理控制台新增「流量大盘」选项卡,对接 Umami 统计接口与骨架屏喵。
- 效果:后台直接查看当前在线人数、总浏览量(PV)、访客数(UV)、热门文章 Top 7 柱状图及流量来源,无需跳出外部站点喵。
5. 🎧 原生 Web Speech 文章 TTS 语音朗读 (10-03 18:30 ~ 19:10)
- 做了什么:基于浏览器原生
window.speechSynthesis打造无任何网络开销的 TTS 播放器喵。 - 效果:支持播放/暂停、停止与四档语速调节(0.8x ~ 1.5x),朗读段落自动跟随高亮并居中视口喵。
6. 🎯 智能划词微工具条 (10-03 18:30 ~ 19:10)
- 做了什么:阅读文章选中文本时,上方自动浮现微型胶囊条喵。
- 效果:支持 [ 📋 引用 ](自动生成带文章链接的 Markdown 引用)、[ 🔍 快搜 ](填入 Cmd+K 站内搜索)与 [ 💬 探讨 ](平滑滚动至评论区)喵。
7. 📜 文章 Git Commit 修订演进版本树 (10-03 18:30 ~ 19:10)
- 做了什么:文章底部新增折叠式历史时间轴,动态拉取 GitHub API 记录喵。
- 效果:清晰呈现当前文章最近 5 次提交的 Commit 说明、日期、作者与短 SHA 变更链接喵。
🐛 三、 关键 Bug 修复清单:什么时候修复了什么 (Bug Fixes) 喵~
1. 修复代码块复制按钮点击失效缺陷 (10-03 16:30 ~ 16:45)
- 做了什么:将
Markdown.astro中脆弱的类名判断重构为事件委托e.target?.closest(".copy-btn")喵。 - 效果:彻底修复读者点击复制按钮内部 SVG 图标时无法复制代码的恶心 Bug,复制成功率 100% 并提供 Toast 提示喵。
2. 封死 Slug 路径穿越与加密源码防护 (10-03 16:30 ~ 16:45)
- 做了什么:后端 BFF 增加正则白名单严禁
../目录穿越;前端“复制 MD 源码”对加密文章正文强制熔断置空喵。 - 效果:阻断文件覆写漏洞,杜绝端到端加密文章在客户端被一键提取明文的隐患喵。
3. 根除新文章邮件广播始终误发置顶文章缺陷 (10-03 19:15 ~ 19:30)
- 做了什么:
- 重构 [
scripts/broadcast-post.js](file:///root/blog/scripts/broadcast-post.js),接入git diff ${BEFORE_SHA} HEAD与git diff-tree,精准锁定本次 Commit 真正新增/改动的文章,不再依赖 GitHub Actions 虚拟环境中相同的不可靠mtime文件修改时间喵。 - 重构 [
src/pages/rss.xml.ts](file:///root/blog/src/pages/rss.xml.ts),彻底解耦 RSS 订阅流与主页置顶逻辑,统一根据pubDate(发布日期)严格倒序输出,防止 RSS 广播首篇被置顶文章永久霸占喵。 - 更新 [
.github/workflows/broadcast-newsletter.yml](file:///root/blog/.github/workflows/broadcast-newsletter.yml),增加fetch-depth: 2与BEFORE_SHA环境变量注入喵。
- 重构 [
- 效果:无论是 Git 自动化推送还是 RSS 邮件订阅,次次精准锁定真正最新发表的文章,彻底告别误发置顶文章的历史喵!
4. /admin 后台前置身份门禁与非管理员直接拦截 (10-03 19:35 ~ 19:45)
- 做了什么:在
/admin后台挂载前置安全守卫,消除 FOUC 内容闪烁与泄漏隐患;未检测到登录凭据自动重定向至 SSO 统一认证中心,检测到当前账号为普通成员(member)时直接显示 403 阻断界面并锁定后台功能喵。 - 效果:实现纯粹依据认证中心下发身份的角色管控,普通成员与未登录访客彻底与管理控制台隔离喵。
🎯 四、 总结与结语 (Summary) 喵~
全天 8 个关键里程碑均已全量上线并通过端到端验证。整套系统在安全性(零暴露 + 权限拦截)、易用性(即时发布 + 大盘)与读者交互(Cmd+K、TTS、划词)上已完成现代全栈进化喵呜~!✨
引用此文 (Cite this article)
已固定版本 d58af9c正在生成引用格式... 喵~