diff --git a/docs/Deployment.md b/docs/Deployment.md index 8a6f321..19e5e0a 100644 --- a/docs/Deployment.md +++ b/docs/Deployment.md @@ -99,9 +99,21 @@ docker compose up -d --build curl -f http://localhost:8000/health ``` -## 公网云服务器部署 +## 公网部署决策清单 -第一版公网演示使用云服务器 + Docker Compose,不增加登录或密码。 +上线前必须确认以下决策,未经确认不要直接开放公网: + +1. 部署方式:云服务器 Docker Compose、PaaS 平台,还是临时内网穿透演示。 +2. 访问控制:是否需要访问密码 / 简单登录,或只在可信网络内演示。 +3. 成本控制:公网用户是否允许直接消耗真实 TikHub 和 AI Key。 +4. Demo 数据:公网环境使用脱敏 Demo 数据,还是允许展示真实抓取结果。 +5. 数据生命周期:SQLite 数据是否需要持久保留,以及如何备份 / 重置。 + +当前建议:在上述问题确认前,只做本地 Docker 验收和部署准备,不把端口直接暴露到公网。 + +## 公网云服务器部署候选方案 + +如果确认采用云服务器 Docker Compose,可按以下步骤执行。 上线前准备: diff --git a/docs/MVP-WorkOrders.md b/docs/MVP-WorkOrders.md index a313025..37b1457 100644 --- a/docs/MVP-WorkOrders.md +++ b/docs/MVP-WorkOrders.md @@ -1269,6 +1269,35 @@ chore: 增加公网部署配置 - 是否允许公网用户直接消耗真实 TikHub 和 AI Key。 - 是否需要限制同一时间只能运行一个任务。 +当前推进记录: + +- 日期:2026-07-03 +- 相关改动: + - `docs/Deployment.md` 新增公网部署决策清单,明确上线前必须确认部署方式、访问密码、真实 TikHub / AI Key 消耗、Demo 数据和数据生命周期。 + - 将“默认云服务器 Docker Compose 且不加密码”的表述改为候选方案,避免未经确认直接开放公网。 + - `docs/UserGuide.md` 补充公网云服务器候选部署步骤、Demo 数据初始化和数据库异常备份路径。 + - 补充文档测试,锁定部署文档必须包含上线前确认项。 +- 验证命令: + - `docker exec hot-comments-tool-app-1 sh -lc 'python -m pytest /app/tests/unit/test_docs.py -q'` + - `curl -f http://localhost:8000/health` + - `curl -s -o /tmp/wo15-index.html -w '%{http_code}' http://localhost:8000/` + - `docker compose ps` + - `docker compose up -d --build` +- 验证结果: + - 文档测试:`2 passed` + - 本地 health:返回 `{"status":"ok"}` + - 首页:HTTP 200 + - 当前运行容器:`hot-comments-tool-app-1`,端口 `0.0.0.0:8000->8000/tcp` + - 镜像重建:仍卡在 `pip install uv` 下载阶段,手动中断,未完成新镜像 rebuild。 +- 当前结论: + - 本地服务可访问,部署文档已进入更安全的“待确认后上线”状态。 + - 未执行公网部署,原因是 WO-15 的关键产品 / 安全决策仍待用户确认,且当前网络环境下镜像重建仍不稳定。 +- 后续必须确认: + - 部署方式:云服务器 Docker Compose / PaaS / 临时内网穿透。 + - 是否需要访问密码 / 简单登录。 + - 是否允许公网访问者直接创建真实抓取任务并消耗 TikHub / AI Key。 + - 是否先完成可复现 Demo 数据方案(WO-14)再公网演示。 + ### WO-16 UI 信息简化与产品化文案清理 优先级:P1 diff --git a/docs/UserGuide.md b/docs/UserGuide.md index e7b24c1..5830c57 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -197,6 +197,31 @@ docker compose up -d --build curl -f http://localhost:8000/health ``` +### 公网云服务器部署 + +公网部署前先确认部署方式、访问密码、是否允许消耗真实 TikHub 和 AI Key。未经确认不要直接开放公网。 + +如果确认使用云服务器 Docker Compose,步骤与本地类似: + +```bash +git pull +cp .env.example .env +docker compose up -d --build +curl -f http://127.0.0.1:8000/health +``` + +公网演示建议先初始化脱敏 Demo 数据: + +```bash +docker compose exec app python -m app.demo_seed +``` + +如果页面出现数据库不可用提示,系统会尽量把 SQLite 文件备份到: + +```text +data/corrupt-backups +``` + ## 9. 推荐提交节奏 按 `docs/MVP-WorkOrders.md` 的工单推进: diff --git a/tests/unit/test_docs.py b/tests/unit/test_docs.py index f76b48b..4d3b76b 100644 --- a/tests/unit/test_docs.py +++ b/tests/unit/test_docs.py @@ -22,3 +22,18 @@ def test_user_guide_covers_startup_acceptance_exports_and_troubleshooting(): "data/corrupt-backups", ]: assert required in content + + +def test_deployment_doc_requires_public_access_decisions_before_going_online(): + content = (ROOT / "docs" / "Deployment.md").read_text(encoding="utf-8") + + for required in [ + "上线前必须确认", + "部署方式", + "访问密码", + "真实 TikHub 和 AI Key", + "未经确认不要直接开放公网", + ]: + assert required in content + + assert "第一版公网演示使用云服务器 + Docker Compose,不增加登录或密码" not in content