140 lines
4.3 KiB
Markdown
140 lines
4.3 KiB
Markdown
# 企业微信 AI 机器人助理
|
||
|
||
Monorepo:`backend/` `admin/` `deploy/` `docs/`
|
||
|
||
## 本地启动
|
||
|
||
1. **复制环境变量**
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
Windows PowerShell:
|
||
```powershell
|
||
Copy-Item .env.example .env
|
||
```
|
||
|
||
2. **一键启动**
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
3. **访问地址**
|
||
- 管理后台(经 nginx):http://localhost
|
||
- 管理后台(直连):http://localhost:3000
|
||
- 后端 API(经 nginx):http://localhost/api/health
|
||
- 后端 API(直连):http://localhost:8000/api/health
|
||
- PostgreSQL:localhost:5432(仅本机连接)
|
||
|
||
## 端口说明
|
||
|
||
| 服务 | 端口 | 说明 |
|
||
|---------|-------|----------------|
|
||
| nginx | 80 | 反代,/api→backend,其余→admin |
|
||
| admin | 3000 | Next.js |
|
||
| backend | 8000 | FastAPI |
|
||
| db | 5432 | PostgreSQL |
|
||
|
||
## 阶段 2:登录与管理员
|
||
|
||
- 启动后 backend 会自动执行 `alembic upgrade head`(创建 users、audit_logs 表)。
|
||
- 创建管理员:在项目根目录执行 `python deploy/scripts/seed.py`(依赖见 `docs/stage2.md`)。
|
||
- 后台登录:打开 http://localhost → 登录页,token 存于 **localStorage**(key: `token`),详见 `admin/lib/api.ts` 与 `docs/stage2.md`。
|
||
|
||
## 阶段 1 验证
|
||
|
||
- `GET http://localhost/api/health` 或 `GET http://localhost:8000/api/health` 返回占位 JSON
|
||
- `GET http://localhost/api/ready` 或 `GET http://localhost:8000/api/ready` 返回占位 JSON
|
||
- 浏览器打开 http://localhost 或 http://localhost:3000,可访问 /login、/dashboard 占位页
|
||
|
||
## 云端最小回调壳部署
|
||
|
||
**重要**:企业微信回调域名必须备案且主体关联,必须先完成云端最小可用部署。
|
||
|
||
### 方式一:GitHub Actions 自动部署(推荐)
|
||
|
||
#### 快速开始(使用配置文件)
|
||
|
||
1. **使用配置文件自动设置**:
|
||
```powershell
|
||
# 配置文件已创建:.github-config(包含你的 GitHub 信息)
|
||
# 自动配置 Git 远程仓库
|
||
.\scripts\setup-github-from-config.ps1
|
||
|
||
# 推送代码到 GitHub
|
||
.\scripts\push-to-github.ps1
|
||
```
|
||
|
||
#### 手动设置
|
||
|
||
1. **创建 GitHub 仓库并推送代码**:
|
||
```powershell
|
||
git init
|
||
git add .
|
||
git commit -m "Initial commit"
|
||
git remote add origin https://github.com/bujie9527/wecom-ai-assistant.git
|
||
git push -u origin main
|
||
```
|
||
|
||
2. **配置 GitHub Secrets**:
|
||
- 进入 GitHub 仓库 → Settings → Secrets and variables → Actions
|
||
- 添加以下 Secrets:
|
||
- `PROD_HOST`: 生产服务器 IP
|
||
- `PROD_USER`: SSH 用户名
|
||
- `PROD_SSH_KEY`: SSH 私钥
|
||
- `PROD_DOMAIN`: 生产域名
|
||
- `PROD_APP_PATH`: 应用部署路径(可选,默认 `/opt/wecom-ai-assistant`)
|
||
|
||
3. **在生产服务器上准备**:
|
||
```bash
|
||
# 安装 Docker
|
||
sudo apt-get update && sudo apt-get install -y docker.io docker-compose-plugin
|
||
|
||
# 克隆项目
|
||
sudo mkdir -p /opt/wecom-ai-assistant
|
||
cd /opt/wecom-ai-assistant
|
||
git clone https://github.com/YOUR_USERNAME/wecom-ai-assistant.git .
|
||
|
||
# 配置环境变量
|
||
cp .env.prod.example .env.prod
|
||
nano .env.prod # 填写生产环境变量
|
||
```
|
||
|
||
4. **触发部署**:
|
||
- 推送代码到 `main` 分支,GitHub Actions 会自动部署
|
||
- 或手动触发:Actions → Deploy to Production → Run workflow
|
||
|
||
**详细文档**:参见 `docs/github-setup-guide.md`
|
||
|
||
### 方式二:手动部署
|
||
|
||
1. **准备环境**:
|
||
- 备案域名(例如:`api.yourdomain.com`)
|
||
- Linux 服务器(Ubuntu 20.04+ / CentOS 7+)
|
||
- Docker + docker-compose
|
||
|
||
2. **配置环境变量**:
|
||
```bash
|
||
cp .env.prod.example .env.prod
|
||
# 编辑 .env.prod,填写必需变量(WECOM_TOKEN、WECOM_ENCODING_AES_KEY 等)
|
||
```
|
||
|
||
3. **部署最小回调壳**:
|
||
```bash
|
||
# 使用生产配置(backend + nginx)
|
||
docker-compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
||
```
|
||
|
||
4. **配置 HTTPS**(Let's Encrypt):
|
||
```bash
|
||
export DOMAIN=your-domain.com
|
||
export SSL_EMAIL=your-email@example.com
|
||
bash deploy/scripts/setup-ssl.sh
|
||
```
|
||
|
||
5. **配置企业微信回调**:
|
||
- 回调 URL:`https://your-domain.com/api/wecom/callback`
|
||
- Token:与 `.env.prod` 中的 `WECOM_TOKEN` 一致
|
||
- EncodingAESKey:与 `.env.prod` 中的 `WECOM_ENCODING_AES_KEY` 一致
|
||
|
||
**详细文档**:参见 `docs/deploy.md` 和 `docs/deploy-cloud-minimal.md`
|