### Task 9: 汇总跑测试 + 手工冒烟清单

- [ ] `bash tests/deploy/baota/run-all.sh` → 全部 PASS  
- [ ] （可选手工）`PACK_FRONTEND_BUILD=true bash deploy/baota/pack.sh /tmp/ECShopX-web-test.zip`，unzip 检查 `web/.output/server/index.mjs` 存在  
- [ ] 确认 `/admin/`、`/mobile/`、`/api/` 相关脚本逻辑未被删改（diff 审阅）

---

## Spec coverage self-check

| Spec 项 | Task |
|---------|------|
| `web/.output` 包结构 | 5 |
| `NUXT_APP_BASE_URL=/web/` | 3, 5 |
| nginx `/web/` 无尾 `/` | 1, 2 |
| Supervisor `ecshopx-nuxt` | 6, 7 |
| `NUXT_PUBLIC_API_BASE` | 5, 7 |
| `NUXT_INTERNAL_API_BASE`（Advisor） | 6, 7 |
| README | 8 |
| 不改 docker-lite / 非静态 public/web | Global + 审阅 |
| 契约测试非全量 build | 1,4,6 |

---

## Execution handoff

Plan also mirrored for Orchestrator at `.tasks/plans/baota-pc-web-nuxt.md`（含 Acceptance & Test Cases）。

**Two execution options:**

1. **Subagent-Driven（推荐）** — 每任务新子代理，任务间审查  
2. **Inline Execution** — 本会话按 executing-plans 批量执行  

Which approach?
