feat():learning后台管理项目初始化

This commit is contained in:
yuj
2025-12-04 16:23:46 +08:00
parent 39886d50d2
commit 88e048f4d1
154 changed files with 28966 additions and 6 deletions

View 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` 中的数据库连接字符串
- 确认数据库服务可访问
- 检查数据库用户权限