Files
wait4xandGLM-5.3 bfda43d7d1 chore(spec): 归档 add-blog-launch(T3 依赖行修正后收敛)
Spec: 2026-10-25_add-blog-launch

Co-authored-by: GLM-5.3
2026-10-25 09:54:58 +08:00

78 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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