feat():learning后台管理项目初始化
This commit is contained in:
210
docs/deployment_and_testing.md
Normal file
210
docs/deployment_and_testing.md
Normal file
@@ -0,0 +1,210 @@
|
||||
# 邀请码申请管理功能 - 部署和测试指南
|
||||
|
||||
## 部署状态
|
||||
|
||||
### ✅ 已完成的部署步骤
|
||||
|
||||
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` 中的数据库连接字符串
|
||||
- 确认数据库服务可访问
|
||||
- 检查数据库用户权限
|
||||
Reference in New Issue
Block a user