210 lines
5.3 KiB
Markdown
210 lines
5.3 KiB
Markdown
# 邀请码申请管理功能 - 部署和测试指南
|
||
|
||
## 部署状态
|
||
|
||
### ✅ 已完成的部署步骤
|
||
|
||
1. **后端服务**
|
||
- 已构建成功:`admin-server`
|
||
- 数据库迁移已完成:`admin_invite_code_applications` 表已创建
|
||
- 服务已启动:监听端口 `8087`
|
||
- 路由已注册:所有API端点正常
|
||
|
||
2. **配置文件**
|
||
- 邮件配置已添加到 `etc/config.yaml`
|
||
- 配置项:
|
||
- SMTP服务器:smtp.mxhichina.com:465
|
||
- 发件人:goalfymax@goalfyai.com
|
||
- 注册链接前缀:https://goalfy.com/register?code=
|
||
|
||
3. **数据库表结构**
|
||
```sql
|
||
admin_invite_code_applications
|
||
- id (主键)
|
||
- email (申请邮箱)
|
||
- reason (申请理由)
|
||
- status (pending/approved/rejected)
|
||
- invite_code_id (关联的邀请码ID)
|
||
- reject_reason (拒绝理由)
|
||
- approved_at (审批时间)
|
||
- approved_by (审批人)
|
||
- email_sent_at (邮件发送时间)
|
||
- created_at, updated_at, deleted_at
|
||
```
|
||
|
||
## 已验证的功能
|
||
|
||
### ✅ 公开API测试(官网提交)
|
||
|
||
**1. 成功提交申请**
|
||
```bash
|
||
curl -X POST http://localhost:8087/api/public/invite-code/apply \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"email": "test@example.com", "reason": "想体验AI编程助手"}'
|
||
```
|
||
返回:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "申请已提交,我们将在1-2个工作日内处理您的申请",
|
||
"data": {
|
||
"id": 1,
|
||
"email": "test@example.com",
|
||
"status": "pending",
|
||
...
|
||
}
|
||
}
|
||
```
|
||
|
||
**2. 重复提交拦截**
|
||
```bash
|
||
curl -X POST http://localhost:8087/api/public/invite-code/apply \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"email": "test@example.com", "reason": "第二次申请"}'
|
||
```
|
||
返回:
|
||
```json
|
||
{
|
||
"error": "您已经提交过申请,请等待审核"
|
||
}
|
||
```
|
||
|
||
## 后台管理功能测试
|
||
|
||
### 需要认证的API端点
|
||
|
||
所有管理接口都需要通过SSO认证,访问路径为:`/api/admin/invite-applications/*`
|
||
|
||
**可用的管理接口:**
|
||
|
||
1. `GET /api/admin/invite-applications` - 获取申请列表
|
||
2. `GET /api/admin/invite-applications/statistics` - 获取统计信息
|
||
3. `GET /api/admin/invite-applications/pending-count` - 获取待处理数量
|
||
4. `POST /api/admin/invite-applications/approve` - 审批通过
|
||
5. `POST /api/admin/invite-applications/reject` - 审批拒绝
|
||
6. `POST /api/admin/invite-applications/batch-approve` - 批量审批通过
|
||
7. `POST /api/admin/invite-applications/batch-reject` - 批量审批拒绝
|
||
|
||
### 前端测试步骤
|
||
|
||
1. **启动前端应用**
|
||
```bash
|
||
cd /path/to/goalfymax-admin-web
|
||
npm run dev
|
||
```
|
||
|
||
2. **登录管理后台**
|
||
- 访问:http://localhost:5173
|
||
- 使用SSO登录
|
||
|
||
3. **访问邀请码管理页面**
|
||
- 导航到邀请码管理
|
||
- 查看页面顶部的"待处理申请"按钮
|
||
- 按钮上应该显示待处理数量徽章
|
||
|
||
4. **处理申请**
|
||
- 点击"待处理申请"按钮
|
||
- 查看申请列表
|
||
- 测试以下操作:
|
||
- ✓ 单个申请审批通过
|
||
- ✓ 单个申请拒绝(可填写拒绝理由)
|
||
- ✓ 批量选择申请
|
||
- ✓ 批量审批通过
|
||
- ✓ 批量拒绝
|
||
|
||
## 邮件发送测试
|
||
|
||
### 审批通过邮件
|
||
|
||
**触发条件**:管理员点击"同意"按钮
|
||
|
||
**邮件内容**:
|
||
- 主题:Goalfy 邀请码已发放
|
||
- 包含邀请码(自动生成)
|
||
- 包含有效期(默认7天)
|
||
- 包含注册链接:https://goalfy.com/register?code=XXXXXXXX
|
||
|
||
### 审批拒绝邮件
|
||
|
||
**触发条件**:管理员点击"拒绝"按钮并填写原因
|
||
|
||
**邮件内容**:
|
||
- 主题:关于您的 Goalfy 申请
|
||
- 包含拒绝理由
|
||
- 包含支持邮箱:support@goalfy.com
|
||
|
||
## 当前测试数据
|
||
|
||
已创建的测试申请:
|
||
1. test@example.com - 状态:pending
|
||
2. another@example.com - 状态:pending
|
||
|
||
## 下一步操作建议
|
||
|
||
### 1. 前端功能测试
|
||
```bash
|
||
cd /Users/youziba/goalfyagent/goalfymax-admin-web
|
||
npm run dev
|
||
```
|
||
然后登录后台,访问邀请码管理页面测试完整流程。
|
||
|
||
### 2. 邮件发送测试
|
||
在前端进行审批操作后:
|
||
- 检查申请人邮箱是否收到邮件
|
||
- 验证邮件内容是否正确
|
||
- 验证邀请码链接是否有效
|
||
|
||
### 3. 官网集成
|
||
将 `docs/invite_apply_example.html` 中的表单集成到官网:
|
||
- 修改 API_BASE_URL 为实际的后端地址
|
||
- 调整样式以匹配官网设计
|
||
- 添加必要的验证逻辑
|
||
|
||
## 注意事项
|
||
|
||
### ⚠️ 生产环境配置
|
||
1. 修改 `etc/config.yaml` 中的 `invite_url_prefix`
|
||
2. 确保SMTP服务器能够正常发送邮件
|
||
3. 配置CORS允许官网域名访问API
|
||
|
||
### ⚠️ 安全建议
|
||
1. 公开API `/api/public/invite-code/apply` 建议添加:
|
||
- 频率限制(防止恶意申请)
|
||
- 图形验证码
|
||
- IP白名单
|
||
|
||
2. 邮箱验证:
|
||
- 确保邮箱格式正确
|
||
- 可考虑添加邮箱域名白名单
|
||
|
||
## 服务管理命令
|
||
|
||
```bash
|
||
# 启动服务
|
||
./scripts/start.sh
|
||
|
||
# 停止服务
|
||
./scripts/stop.sh
|
||
|
||
# 查看日志
|
||
tail -f logs/admin-server.log
|
||
|
||
# 测试API
|
||
./scripts/test_api.sh
|
||
```
|
||
|
||
## 故障排查
|
||
|
||
### 服务无法启动
|
||
- 检查端口8087是否被占用:`lsof -i:8087`
|
||
- 查看日志文件:`tail -100 logs/admin-server.log`
|
||
|
||
### 邮件发送失败
|
||
- 检查 `etc/config.yaml` 中的邮件配置
|
||
- 确认SMTP服务器可访问
|
||
- 查看服务日志中的邮件发送错误信息
|
||
|
||
### 数据库连接失败
|
||
- 检查 `etc/config.yaml` 中的数据库连接字符串
|
||
- 确认数据库服务可访问
|
||
- 检查数据库用户权限 |