# SYSU-GIEP **Repository Path**: askanuo/sysu-giep ## Basic Information - **Project Name**: SYSU-GIEP - **Description**: No description available - **Primary Language**: Go - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2025-08-16 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中山大学研究生院校企对接平台 一个基于Golang Gin框架的高并发、可扩展的校企对接平台后端API服务。 ## 🚀 特性 - **高并发**: 使用Gin框架 + Goroutine池 + 连接池 - **可扩展**: 模块化设计,支持微服务拆分 - **API文档**: 集成Swagger自动生成文档 - **权限管理**: JWT + RBAC权限控制 - **数据持久化**: GORM + MySQL/PostgreSQL - **缓存**: Redis缓存层 - **定时任务**: 内置定时任务调度器,支持自动化运维 - **监控**: 集成Prometheus + Grafana - **日志**: 结构化日志 + ELK Stack - **容器化**: Docker + Docker Compose - **CI/CD**: 支持自动化部署 ## 📋 功能模块 ### 用户管理 - 企业端注册认证 - 导师/学生端注册认证 - 高校管理端账号审核 - 角色权限管理(RBAC) ### 课题管理 - 课题发布与编辑 - 课题检索与筛选 - 课题申请与审批 - 匹配算法 > 提示 > - 创建/更新课题时的`deadline`支持 YYYY-MM-DD 或 RFC3339,例如 "2025-12-31" 或 "2025-12-31T00:00:00Z"。 ### 匹配管理 - 双向匹配算法 - 申请记录管理 - 匹配确认流程 - **手动匹配功能** - 管理员可手动将企业需求匹配给学生,或将学生匹配给对应企业 - 匹配候选者查询 - 匹配记录管理 - 数据统计分析 ### 数据统计 - 实时数据统计 - 报表导出 - 数据可视化 - 监控告警 ### 定时任务管理 - **自动化数据清理** - 定期清理过期的通知和会话数据 - **每日数据统计** - 自动统计用户、项目、申请等关键指标 - **数据备份** - 定期备份关键业务数据 - **任务监控** - 实时监控任务执行状态和性能 - **手动控制** - 支持手动启动、停止、执行任务 - **灵活配置** - 支持动态调整任务执行频率和参数 ## 🛠 技术栈 - **Web框架**: Gin - **数据库ORM**: GORM - **数据库**: MySQL/PostgreSQL - **缓存**: Redis - **认证**: JWT - **API文档**: Apifox + OpenAPI 3.0 - **配置管理**: Viper - **日志**: Zap - **测试**: Testify - **依赖注入**: Wire - **任务队列**: Asynq - **定时任务**: 内置定时任务调度器 - **监控**: Prometheus + Grafana - **容器化**: Docker + Docker Compose ## 📦 项目结构 ``` sysu-giep/ ├── cmd/ # 应用程序入口 │ └── server/ │ └── main.go ├── internal/ # 内部包 │ ├── api/ # API层 │ │ ├── handlers/ # 请求处理器 │ │ ├── middleware/ # 中间件 │ │ └── routes/ # 路由配置 │ ├── config/ # 配置管理 │ ├── database/ # 数据库相关 │ │ ├── migrations/ # 数据库迁移 │ │ └── models/ # 数据模型 │ ├── service/ # 业务逻辑层 │ │ └── backup_service.go # 定时任务服务 │ ├── repository/ # 数据访问层 │ ├── export/ # 数据导出功能 │ └── utils/ # 工具函数 ├── pkg/ # 可导出的包 │ ├── auth/ # 认证相关 │ ├── logger/ # 日志 │ └── response/ # 响应处理 ├── docs/ # Swagger文档 ├── scripts/ # 脚本文件 ├── configs/ # 配置文件 ├── monitoring/ # 监控配置 ├── nginx/ # Nginx配置 ├── go.mod ├── go.sum ├── Dockerfile ├── docker-compose.yml ├── Makefile └── README.md ``` ## 🚀 快速开始 ### 环境要求 - Go 1.24+ - MySQL 8.0+ - Redis 7.0+ - Docker & Docker Compose (可选) ### 本地开发 1. **克隆项目** ```bash git clone https://github.com/your-username/sysu-giep.git cd sysu-giep ``` 2. **安装依赖** ```bash make install ``` 3. **配置数据库** ```bash # 创建数据库 mysql -u root -p -e "CREATE DATABASE sysu_giep CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" ``` 4. **修改配置** ```bash # 编辑配置文件 vim configs/config.yaml ``` 5. **运行应用** ```bash # 开发模式 make run # 或者直接运行 go run cmd/server/main.go ``` ### Docker部署 1. **启动所有服务** ```bash docker-compose up -d ``` 2. **查看服务状态** ```bash docker-compose ps ``` 3. **查看日志** ```bash docker-compose logs -f app ``` 4. **停止服务** ```bash docker-compose down ``` ## 📚 API文档 本项目采用RESTful API设计,使用Apifox进行接口文档管理。 ### API文档访问 1. **Apifox项目文件**: `apifox/api-spec.yaml` 2. **API Base URL**: `http://localhost:8080/api/v1` 3. **认证方式**: JWT Bearer Token ### 导入Apifox 1. 下载并安装Apifox: https://www.apifox.cn/ 2. 打开Apifox,点击"导入项目" 3. 选择 `apifox/api-spec.yaml` 文件 4. 完成导入后即可查看完整的API文档 ### 登录说明 - 使用邮箱 + 密码登录 - 请求体示例: ```json { "email": "john@example.com", "password": "password123" } ``` ### 定时任务API示例 - **获取任务状态**: ```bash curl -H "Authorization: Bearer " \ http://localhost:8080/api/v1/admin/tasks/status ``` - **手动执行任务**: ```bash curl -X POST \ -H "Authorization: Bearer " \ http://localhost:8080/api/v1/admin/tasks/daily_cleanup/execute ``` ### RESTful API设计原则 - **GET**: 获取资源 - **POST**: 创建资源 - **PUT**: 更新资源 - **DELETE**: 删除资源 ### 主要接口分类 - **认证管理**: `/auth/*` - 用户注册、登录、令牌刷新 - **用户管理**: `/users/*` - 用户信息管理 - **课题管理**: `/projects/*` - 课题CRUD操作 - **申请管理**: `/applications/*` - 课题申请管理 - **匹配管理**: `/matches/*` - 匹配相关操作 - **通知管理**: `/notifications/*` - 通知系统 - **管理员接口**: `/admin/*` - 管理员专用接口 - **定时任务管理**: `/admin/tasks/*` - 定时任务管理接口 ## 🔧 配置说明 ### 应用配置 (configs/config.yaml) ```yaml app: name: "sysu-giep" version: "1.0.0" port: 8080 mode: "debug" # debug, release, test database: driver: "mysql" host: "localhost" port: 3306 username: "root" password: "password" dbname: "sysu_giep" redis: host: "localhost" port: 6379 password: "" db: 0 jwt: secret: "your-secret-key-here" expire_hours: 24 # 定时任务配置 scheduled_tasks: enabled: true cleanup_retention_days: 30 backup_enabled: true ``` ## 🧪 测试 ```bash # 运行所有测试 make test # 运行测试并生成覆盖率报告 make test-coverage # 运行性能测试 make bench # 测试定时任务功能 cd scripts/test go run test-registration.go ``` ## 📊 监控 ### Prometheus - 地址: http://localhost:9090 - 指标端点: http://localhost:8080/metrics ### Grafana - 地址: http://localhost:3000 - 默认账号: admin/admin ### 定时任务监控 - **任务状态监控**: 通过 `/admin/tasks/status` 接口查看任务运行状态 - **执行日志**: 查看应用日志中的任务执行记录 - **性能指标**: 监控任务执行时间和成功率 - **告警机制**: 任务执行失败时自动记录错误日志 ## 🔒 安全 - JWT认证 - RBAC权限控制 - 密码加密存储 - SQL注入防护 - XSS防护 - CSRF防护 - 请求限流 ## 📈 性能优化 - 数据库连接池 - Redis缓存 - 异步任务处理 - 定时任务调度 - 请求限流 - 负载均衡 - 监控告警 ## 🤝 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 📞 联系方式 - 项目维护者: [Your Name] - 邮箱: [your.email@example.com] - 项目地址: [https://github.com/your-username/sysu-giep] ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和用户。