# 预览、发布与上线后的观测

代码写完只是一半，让它真的对外生效还要走「预览 → 合并 → 发布」。这篇讲清三者的区别、发布失败怎么办，以及上线之后在哪看访问量和流量来源。

## 预览、合并、发布分别做了什么

| 动作 | 在哪点 | 结果 |
|---|---|---|
| 👀 预览 | Chat 消息底部 | 把这个 Chat 的改动部署到**测试环境**，用测试域名访问 |
| 合并到应用主版本 | Chat 输入框旁 | 把改动并进仓库**默认分支**，此时线上还没有变化 |
| 🚀 发布 | Chat 消息底部 | 把当前状态构建并部署到**生产环境**，正式对外 |

三者互相独立：可以只预览不合并（试试看就丢掉），也可以合并了先不发布（攒几个改动一起上线）。

> 代码只有**发布过**才会真的对外生效。合并只是进了默认分支，没发布之前，生产域名上跑的还是上一次发布的版本。

## 推荐的上线节奏

1. 在 Chat 里提需求，等 Agent 跑完
2. 点 **👀 预览**，在测试域名上真实点一遍
3. 不满意就在同一个 Chat 里追问，改完再预览
4. 满意后点 **合并到应用主版本**
5. 点 **🚀 发布**，等状态变成成功
6. 打开生产域名复核一次

## 部署记录

每次预览和发布都会留下一条部署记录。消息里的部署徽章、以及 [应用](#/apps) 列表里的「部署记录」都能进入发布详情页，那里有：

- 这次部署的环境（测试 / 生产）、状态和耗时
- 完整的构建与部署日志
- 失败时的错误摘要

**部署失败不用自己读日志**：直接在 Chat 里说"刚才发布失败了，帮我看一下"，Agent 会去查日志并修复。

## 在发布详情页发布

除了在 Chat 里点按钮，发布详情页本身也能发布生产，**不需要你手动挑 commit**，两种方式任选其一：

1. **直接发布生产**
   - 先在顶部「应用」筛选里选中目标应用，右上角的 **发布生产** 按钮才会出现
   - 点开后写一段发布描述（必填，最多 512 字），提交
   - 平台会基于默认分支当前的状态触发一次新的生产发布
2. **把已经验过的测试构建切到生产**
   - 表格里 `测试` 环境、状态 `成功`、且 Task ID 与 Chat ID 都是 `0` 的记录，行末会有 **上线** 按钮
   - 这类记录是某次合并到默认分支后自动构建出来的
   - 点 **上线** → 确认 → 这次构建被切到生产环境

第二种适合"前面已经在测试环境验过了，希望把这一次的构建原样搬到线上"。

## 已发布应用

[已发布应用](#/published-apps) 列出所有已经发布到生产的应用，是"我到底上线了哪些东西"的总览。

## 上线之后：看板

[应用](#/apps) 页面的 **看板** 标签页展示应用上线后的真实表现，数据来自前端性能监控，最多看近 7 天：

- **访问量**：页面浏览与访问会话
- **来源渠道**：流量从搜索引擎、AI 引擎、社交平台还是直接访问来的
- **加载性能**：首屏和关键渲染指标

可以把某个应用设为默认，打开看板就直接看它。如果应用还没接监控，看板上会有一个感叹号入口，点一下就能让 Agent 自动把监控接进去。

## 为什么要关心「来源渠道」

现在用户找到一个产品有两条路：搜索引擎（SEO）和 AI 助手推荐（GEO）。看板把这两类分开统计，你能直接看出来是 Google / 百度带来的人多，还是 ChatGPT / 豆包这类 AI 入口带来的人多，再决定内容往哪边补。

想提升这两个数字，可以在 Chat 里让 Agent 帮你补齐站点的结构化数据、`sitemap.xml`、`llms.txt` 和落地页文案。站外引流是另一条路：让 Agent 按各内容平台的规矩写可直接发布的稿子，见 `07-marketing.md`。

## 小程序和安卓：同一个按钮，不同的终点

上面讲的都是 Web 端——预览进测试域名、发布进生产域名。如果这个应用还带了微信小程序或安卓端，同样这两个按钮会顺带做另一件事：

| 你点了 | Web | 微信小程序 | 安卓 App |
|---|---|---|---|
| 👀 预览 | 部署到测试域名 | 上传体验版，出一张体验版二维码 | 出调试包，可扫码试装 |
| 🚀 发布 | 部署到生产域名 | 代码传到微信「版本管理 → 开发版本」 | 出正式签名包 |

两个差别要记住：

- **微信那边发布不等于上线。** 平台只把代码送到「开发版本」，提交审核和发布上线要你自己去微信公众平台点。
- **安卓包不在域名上。** 下载入口在你自己的网页里，要构建成功之后再部署一次才会出现；构建记录和签名密钥导出在应用配置的「安卓 App」一页。

小程序上传和安卓出包都挂在 Web 部署之后，失败只标记失败，**不会把已经成功的 Web 发布回滚掉**。完整流程见 `09-multi-target.md`。

## 常见疑问

**Q：发布期间线上会不会短暂不可用？**
A：构建在后台跑，构建完成后才替换正在运行的容器，这一步会有很短的中断。要紧的话尽量避开访问高峰发布。

**Q：发上去发现有问题，怎么快速退回？**
A：两条路。发布详情页里找一条更早的、已经验过的 `测试` + `成功` 记录点 **上线**，把那次构建切回生产；或者直接在 Chat 里说明要撤掉哪次改动，让 Agent 改回来再发一次。

**Q：测试环境为什么搜不到？**
A：测试环境全站禁止抓取，这是刻意的——避免测试内容被搜索引擎收录，跟生产域名抢排名。

下一步推荐：`05-misc.md`
