chore(spec): 归档 add-blog-launch(T3 依赖行修正后收敛)

Spec: 2026-10-25_add-blog-launch

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-10-25 09:54:58 +08:00
1 parent 06b782ea4a
commit bfda43d7d1
5 files changed
+105 -7

No files matched your search

@@ -0,0 +1,77 @@
# Phase 4:极客层 P1 + 发布链闭环 + 上线准备 - 项目范围
<!-- spec-format: 2 -->
## 1. 问题定义
- **项目目标**:命令面板 + 贡献热力图(极客层 P1);gitea webhook→构建→staging 发布闭环;预发布全端验收;一键上线脚本(用户 sudo 执行)与回滚配套
- **目标用户**:站长(发布即构建;一条命令上线)
- **核心价值**:从"staging 就绪"到"可上线状态"的全部工程准备
## 2. 假设与待确认
### 2.1 已确认事实
- gitea heatmap API 匿名可用(调研 05 实测:/api/v1/users/{u}/heatmap,CORS *,返回 {contributions,timestamp}[])
- gitea admin token 在宿主 init-credentials.txt(webhook 注册用)
- staging 全量内容 21+2 页(zh/en)+ photos-originals
- SearchDialog 已有 Pagefind 懒加载与 / 键入口(面板升级的基座)
### 2.2 关键假设
- gitea webhook 目标 URL 用 http://127.0.0.1:13020 能回环触达本机接收器(同宿主)
- ESA 对静态资源缓存友好(hash 文件名 + immutable)
### 2.3 待确认问题
- [x] 上线切换执行者 → 结论:脚本备好,用户 sudo 执行(红线:nginx 属 root 域)
### 2.4 可选解释与取舍
- 命令面板升级现有 SearchDialog(保 Pagefind 数据面)> 引 cmdk/kbar(拖 React 运行时)-> 选自写扩展
- 热力图构建时拉取 + 仓内缓存兜底 > 运行时拉(静态站纪律)-> 选构建时
### 2.5 已证伪路径
- 无
## 3. 功能范围
### 3.1 核心功能(MVP)
- [x] T1 命令面板(搜索+导航+动作聚合)
- [x] T2 gitea 贡献热力图(构建时+兜底)
- [x] T3 webhook HMAC 闭环(验签+注册+push→build→staging 实测)
- [x] T4 预发布全端验收(渲染矩阵+OG+微信 UA+responsive)
- [x] T5 上线脚本与回滚配套+检查单
- [x] T6 验收归档
### 3.2 扩展功能
- /terminal 彩蛋、书评索引画廊(Phase 5 二期池)
### 3.3 不在范围内
- 实际执行上线切换(用户动作)、Halo 停用(Phase 5)
## 4. 最小实现路径
- 最简单可行方案:面板=SearchDialog 扩展动作层;热力图=lib fetch+缓存 JSON+纯 CSS 组件;webhook=现骨架填 HMAC
- 暂不引入:常驻接收服务(gitea 直接 POST 本机脚本经 systemd-path 或手动验证模式)
- 不做的抽象/配置化:多 webhook 源、面板插件系统
## 5. 技术决策
- 技术栈:vanilla TS/CSS + gitea API + shell
- 证据协议:evidence: runs
- 本轮允许改动:src/、infra/deploy/、scripts/、.spec/
- 本轮不应触碰:/etc/nginx(脚本只生成不安装)、生产 Halo、content/
- Git integration branch:`spec/2026-10-25_add-blog-launch`
### 5.1 验证策略
- 范围级别:package
- 变更对象:面板/热力图组件、webhook 脚本、上线脚本
- 快速检查:`pnpm astro build`
- 集成检查:面板动作标记与热力图格子产出;webhook 干跑+真实 push 全链;验收矩阵脚本
- 全项目检查:staging 全端验收矩阵 + rollback-dryrun;仅在 nginx 面或部署链变更时升级范围
- 升级触发:只有上线脚本被执行(nginx 实切换)时,才升级为全项目验证并记录(当前包内只备不执行)
## 6. 成功标准与验证方式
- [x] 面板含 ≥3 动作与全站导航(dist 标记断言) -> verify: task_0001
- [x] 热力图渲染 ≥52 周格子且失败兜底不破构建 -> verify: task_0002
- [x] 真实 push 触发构建并更新 staging 戳 -> verify: task_0003
- [x] 验收矩阵脚本全绿(渲染/OG/微信 UA/responsive) -> verify: task_0004
- [x] 上线脚本 --dry-run 通过且检查单落档 -> verify: task_0005
## 7. 风险与约束
- webhook 回环接收的安全面(监听面收窄到 127.0.0.1 + HMAC 强制)-> T3 覆盖
- 上线脚本误执行 -> 只生成不安装,--dry-run 默认,真实执行需用户显式 sudo