# 今日上线测试清单

目标：今天只做内部在线测试，不做真实投放，不做自动发布。

## 今天必须准备

1. 准备一份 `.env`。
   - 推荐先运行 `PYTHONPATH=src python3 scripts/bootstrap_env.py --mode online-test --public-base-url https://你的后台域名 --output .env`，让系统生成 bootstrap token 和安全 dry-run 默认值。
   - 也可从 `.env.test.example` 复制。
   - 必须设置 `ZSY_AUTH_ENABLED=true`。
   - `ZSY_AUTH_USERS` 用于首次创建种子账号；上线后由管理员在 User Management 创建账号、重置密码和分配角色。
   - 必须设置 `ZSY_RENDER_WORKER_TOKEN`。
   - 必须设置 `ZSY_OPS_PUBLIC_BASE_URL` 为团队成员能打开的 HTTPS 地址。
   - 首次登录时，种子账号的初始密码是对应 legacy token；管理员登录后应立即改成正式密码。不要把 token 或密码发到公开群。
   - 如果使用 cloudflared/ngrok 临时公网测试，可先运行 `PYTHONPATH=src:. python3 scripts/public_tunnel.py check --port 8790`；工具装好后运行 `PYTHONPATH=src:. python3 scripts/public_tunnel.py start --provider auto --port 8790 --include-tokens` 自动写入公网 URL 并生成交接包。
   - 如果公网 HTTPS 地址来自其他服务，可运行 `PYTHONPATH=src:. python3 scripts/public_tunnel.py apply --public-base-url https://你的后台域名 --include-tokens --run-smoke`，直接更新 `.env`、生成交接包和 `data/internal-test-smoke.json` / `data/internal-test-smoke.md`。
   - Docker 服务器部署时，设置 `FB_AUTO_REP_HOST_PATH` 为服务器上的 `fb auto rep` 路径；容器内会用 `/fb-auto-rep` 读取继承模块。
   - 确认 `fb auto rep` 挂载目录包含 `email_drafts.py`、`客户咨询话术模板.docx`、`logs/email_drafts` 和 `logs/email_draft_ids.json`；`EMAIL_DRAFTS_POLL_AUTO_SEND` 必须保持 `false`。
   - `N8N_BIND_ADDR` 保持 `127.0.0.1`，不要让 n8n 直接公开到公网；自动化调试先走服务器本机、VPN 或受保护代理。
   - 启动服务前，运行 `PYTHONPATH=src:. python3 scripts/deployment_preflight.py --env-file .env`，确认 `.env`、RBAC、dry-run、安全 token、Dockerfile 和 docker-compose 都没有 BLOCK。
   - 后台打开后，也可以在 Dashboard 的 `Deployment Preflight` 面板点 `服务器检查`，给业务成员查看同一组检查结果。
   - 需要给自己或技术团队成员一份服务器操作顺序时，运行 `PYTHONPATH=src:. python3 scripts/server_launch_handoff.py --env-file .env --force`，生成 `data/server-launch-handoff.secret.md`。
   - 服务器部署完成后，运行 `PYTHONPATH=src:. python3 scripts/server_online_smoke.py --base-url https://你的后台域名 --owner-token OWNER_TOKEN`，生成 `data/server-online-smoke.json` / `data/server-online-smoke.md`，确认远端 health、权限、online readiness、内部 smoke 和企微 callback smoke 全部通过。

2. 确认 dry-run。
   - `OPENAI_IMAGE_DRY_RUN=true`
   - `ZSY_AD_PERFORMANCE_DRY_RUN=true`
   - `KLAVIYO_DRY_RUN=true`
   - `ZSY_PUBLISH_DRY_RUN=true`
   - `ZSY_PUBLISH_CONNECTOR_ENABLED=false`

3. 企业微信。
   - 如果今天只测前端，可先不配 `WECOM_WEBHOOK_URL`。
   - 如果要测群通知，配置 `WECOM_WEBHOOK_URL`。
   - 如果要测 WeCom 按钮改状态，配置 `WECOM_APPROVAL_CALLBACK_TOKEN`。
   - 发给团队成员前，在 dashboard 运行 `企微 callback smoke`，或调用 `POST /api/internal-test/wecom-callback`，确认 synthetic 审批能改为 approved 且响应不包含 callback token。

4. 本地渲染电脑。
   - 准备 `dist/zsy-render-worker-v0.1.zip`。
   - 本地渲染电脑能打开后台 HTTPS 地址。
   - 本地 ComfyUI 能单独跑通一个 workflow。
   - Worker UI 填后台地址、Worker token、ComfyUI 地址、workflow JSON。

5. 测试账号。
   - 至少准备 `owner/admin` 一个。
   - 投放运营和创意制作可同一人：`media_buyer,designer`。
   - 审核人员：`approver`。

## 今天上线后按这个顺序测

1. 打开 `/health`，确认服务在线。
2. 登录 dashboard，确认只能看到自己权限内页面。
3. 下载“使用指引”里的中文文档。
4. 生成一批 Creative Asset。
5. 图片点 GPT Image，确认 dry-run 文件能预览。
6. 视频创建 `local_ai_worker` 任务。
7. 本地渲染电脑 Worker 领取任务并回写状态。
8. Creative Detail 记录中文审核反馈。
9. 选择“小修改/局部重生成”，确认修订资产或视频任务生成。
10. Performance Center 执行 Meta/TikTok dry-run 同步。
11. Learning Center 生成建议，但不发布 AI Core。
12. WeCom 如已配置，推送审批摘要；复杂审核回前端。

## 上线前命令

```bash
PYTHONPATH=src python3 -m unittest discover -s tests
PYTHONPATH=src:. python3 scripts/deployment_preflight.py --env-file .env
PYTHONPATH=src:. python3 scripts/server_launch_handoff.py --env-file .env --force
PYTHONPATH=src python3 scripts/launch_readiness_check.py --mode online
PYTHONPATH=src:. python3 scripts/server_online_smoke.py --base-url https://你的后台域名 --owner-token OWNER_TOKEN
python3 scripts/build_render_worker_package.py
```

## 可以今天不做

- 真实 GPT Image 付费生成。
- 真实 TikTok/Meta 数据写入。
- 真实社媒发布。
- Klaviyo 真实写入。
- 自动定时 daily_ops。
- 完整 SSO/数据库用户系统。
