# Goosed 本地构建方案 — 第一阶段实施计划

> **阶段目标：** 本地完整验证 Docker 构建方案，无生产影响。  
> **时间预期：** 1–2 周。  
> **关键特点：** 完全本地化，手工构建 + 交付，git.tkmind.cn 代码管理。

---

## 🎯 核心流程

```
Step 1: 代码提交
└─ git push origin main (to git.tkmind.cn)

Step 2: 本地构建
└─ bash scripts/verify-goosed-docker.sh local
   └─ 输出: tkmind/goosed:local 镜像

Step 3: 本地验证 (1–2 周)
├─ docker-compose up -d
├─ 运行测试、监控、性能测试
└─ 确认稳定

Step 4: 镜像交付
├─ docker save goosed.tar
└─ scp 到 103 (后续部署)
```

---

## 📋 你需要的文件（最终清单）

| 文件 | 用途 | 状态 |
|------|-----|------|
| `scripts/verify-goosed-docker.sh` | 本地一键构建 | ✅ 已完成 |
| `docker-compose.local.yml` | 本地开发环境 | ✅ 已完成 |
| `docs/goosed-docker-local-verification.md` | 测试指南 | ✅ 已完成 |
| `docs/goosed-local-build-delivery.md` | 构建 + 交付说明 | ✅ 已完成 |
| `docs/goosed-phase1-local-plan.md` | 本计划 | ✅ 已完成 |

**删除的文件：**
- ❌ `.github/workflows/build-goosed.yml`（GitHub Actions，不需要）
- ❌ `docs/ghcr-setup.md`（ghcr.io，不需要）
- ❌ `docs/goosed-ci-implementation-plan.md`（CI/CD，不需要）

---

## 🚀 立即开始（今天）

### Step 1：提交文件到 git.tkmind.cn

```bash
cd /Users/john/PycharmProjects/test/test-memind

# 查看修改
git status

# 添加文件
git add scripts/verify-goosed-docker.sh \
        docker-compose.local.yml \
        docs/goosed-docker-local-verification.md \
        docs/goosed-local-build-delivery.md \
        docs/goosed-phase1-local-plan.md

# 提交
git commit -m "feat: goosed 本地 Docker 构建方案 (第一阶段)

- scripts/verify-goosed-docker.sh: 一键本地构建脚本
- docker-compose.local.yml: 本地开发环境
- docs/goosed-docker-local-verification.md: 本地测试指南
- docs/goosed-local-build-delivery.md: 构建交付方案
- docs/goosed-phase1-local-plan.md: 实施计划

特点：完全本地化，无 CI 依赖，手工构建 + 交付。
时间预期：1-2 周本地验证。"

# 推送到 git.tkmind.cn
git push origin main
```

### Step 2：本地验证（立即运行）

```bash
# 进入项目目录
cd /Users/john/PycharmProjects/test/test-memind

# 一键构建 + 验证
bash scripts/verify-goosed-docker.sh local

# 预期输出（8–12 分钟）
# ✅ 镜像构建完成
# ✅ 容器已启动
# ✅ 容器已就绪
```

### Step 3：容器测试

```bash
# 脚本会显示测试命令，按提示执行即可
# 例如：

# 查看容器状态
docker ps | grep goosed

# 检查健康状态
curl http://127.0.0.1:18006/status

# 查看日志
docker logs -f <container-id>
```

---

## 📅 一周的验证计划

| 天 | 任务 | 预期 |
|---|-----|-----|
| **Day 1** | 代码提交 + 首次本地构建 | ✅ 镜像构建成功 |
| **Day 2–3** | 单实例运行测试 (18006) | ✅ 容器稳定运行 |
| **Day 4–5** | Docker Compose 双实例测试 | ✅ 两实例无冲突 |
| **Day 6–7** | 长时间运行测试（持续监控） | ✅ 7 天无异常 |

---

## ✅ 本地验证完成标准

以下全部 ✅ 后，认为第一阶段完成：

- [ ] ✅ 代码已提交到 git.tkmind.cn
- [ ] ✅ 本地 Docker 构建成功（无错误）
- [ ] ✅ 镜像大小合理（~50–80MB）
- [ ] ✅ 容器启动正常，`/status` 返回 200
- [ ] ✅ Session 数据库（SQLite）正常创建
- [ ] ✅ 容器日志无 panic / 错误
- [ ] ✅ 两实例并行运行无冲突
- [ ] ✅ 容器重启后数据持久化
- [ ] ✅ 运行至少 7 天无异常
- [ ] ✅ 镜像文件已保存（goosed.tar）

---

## 🔄 持续开发流程

第一阶段期间，如需修改代码：

```bash
# 1. 本地修改代码
# ...your changes...

# 2. 本地测试（如需要重新构建）
bash scripts/verify-goosed-docker.sh local

# 3. 提交代码
git add .
git commit -m "fix: ..."
git push origin main

# 4. 继续本地验证
```

---

## 📦 镜像交付（第一阶段末）

当本地验证通过 1 周后：

### 方式 1：保存为文件（最简单）

```bash
# 保存最新验证通过的镜像
docker save tkmind/goosed:local -o goosed-verified.tar

# 准备交付给 103（后续操作）
ls -lh goosed-verified.tar
# 约 50–80MB
```

### 方式 2：标记版本

```bash
# 给验证通过的镜像打版本标签
docker tag tkmind/goosed:local tkmind/goosed:v1.0-local

# 后续交付时使用 v1.0-local 标记
docker save tkmind/goosed:v1.0-local -o goosed-v1.0.tar
```

---

## ❓ 常见问题

### Q：什么时候推送到 git.tkmind.cn？

**A：** 立即推送。这是代码版本管理，与镜像构建独立。镜像是本地产物，不需要推送到 Git。

### Q：镜像要保存到哪里？

**A：** 本地 Docker 中即可。当需要部署到 103 时，再用 `docker save` 导出为文件。

### Q：如果代码有变更怎么办？

**A：** 
1. 修改代码 → `git push`
2. 重新 `bash scripts/verify-goosed-docker.sh local`
3. 继续测试

### Q：第一阶段需要与 103 通信吗？

**A：** 不需要。完全本地独立。103 部署是后续的第二阶段。

### Q：验证需要多久？

**A：** 建议至少 1 周。如果发现问题，修复后重新计时。

---

## 🛑 何时停止本地验证，考虑 103？

当满足以下条件时：

- ✅ 本地验证稳定运行 7+ 天
- ✅ 所有检查清单项都通过
- ✅ 团队确认 Docker 方案可行
- ✅ 103 环境已准备就绪（Docker daemon）

**不满足上述条件，继续本地验证，不要急着上 103。**

---

## 📞 遇到问题？

参考这些文档：

1. **构建失败？** → `docs/goosed-docker-local-verification.md` 的"常见问题"
2. **交付方式？** → `docs/goosed-local-build-delivery.md` 的"镜像交付"
3. **测试步骤？** → `docs/goosed-docker-local-verification.md` 的"测试与验证"

---

**现在：立即推送代码并运行本地构建！**
