# 实习通 **Repository Path**: foolloof/intern-pass ## Basic Information - **Project Name**: 实习通 - **Description**: 实习通小程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-02-05 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实习通 (SXT) > 高校实习管理平台,连接学校、企业、学生三方,提供完整的实习申请、审核、管理流程。 [![Java](https://img.shields.io/badge/Java-17-orange) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2.1-green) ![Vue](https://img.shields.io/badge/Vue-3.4-brightgreen) ![License](https://img.shields.io/badge/License-MIT-blue)] --- ## 📁 项目结构 ``` SXT/ ├── apps/ # 前端应用 │ ├── web-admin/ # 学校管理后台 (Vue 3 + Element Plus) │ └── miniprogram-student/ # 学生端小程序 (微信原生) │ ├── services/ # 后端服务 │ └── api/ # Java Spring Boot API │ └── src/main/java/com/sxt/api/ │ ├── controller/ # REST API 控制器 │ ├── service/ # 业务逻辑层 │ ├── entity/ # 数据库实体 │ ├── mapper/ # MyBatis Mapper │ └── config/ # 配置类 │ ├── infra/ # 基础设施 │ ├── docker/docker-compose.yml # Docker 容器编排 │ └── migrations/ │ └── V1__init_schema.sql # 数据库初始化脚本 ⚠️ 使用此文件! │ ├── docs/ # 项目文档 │ └── DEVELOPMENT.md # 开发文档 │ ├── .env.example # 环境变量模板 └── README.md # 本文件 ``` --- ## 🛠 技术栈 | 层级 | 技术 | 版本 | 用途 | |------|------|------|------| | **后端** | Java | 17 | 开发语言 | | | Spring Boot | 3.2.1 | 应用框架 | | | Spring Security | - | 安全认证 | | | JWT | 0.12.3 | Token认证 | | | MyBatis-Plus | 3.5.7 | ORM框架 | | | MySQL | 8.x | 关系数据库 | | | Redis | 7.x | 缓存 | | | MinIO | 8.5.7 | 对象存储 | | | Knife4j | 4.4.0 | API文档 | | **前端** | Vue | 3.4.15 | 前端框架 | | | TypeScript | 5.3.3 | 类型系统 | | | Element Plus | 2.5.2 | UI组件库 | | | Vite | 5.0.11 | 构建工具 | | **小程序** | 微信小程序原生框架 | - | 学生端 | | | 微信API | - | 登录、订阅消息 | --- ## 🚀 快速开始 ### 前置要求 - **JDK 17+** - **Maven 3.8+** - **Node.js 18+** - **Docker & Docker Compose** - **微信开发者工具**(小程序开发) --- ### 第一步:启动基础设施(MySQL、Redis、MinIO) ```bash cd infra/docker docker-compose up -d ``` 等待容器启动完成后,验证服务状态: ```bash docker ps ``` 应该看到以下容器运行中: - `sxt-mysql` (端口 3306) - `sxt-redis` (端口 6379) - `sxt-minio` (端口 9000/9001) --- ### 第二步:初始化数据库 **⚠️ 重要:请使用项目自带的数据库脚本** ```bash # 方式一:通过 MySQL 客户端 mysql -h127.0.0.1 -uroot -p123456 < infra/migrations/V1__init_schema.sql # 方式二:进入容器执行 docker exec -i sxt-mysql mysql -uroot -p123456 internship < infra/migrations/V1__init_schema.sql ``` **初始化数据包含:** - 示例学校(ID: 1) - 学校管理员账户 - 基础配置数据 --- ### 第三步:配置环境变量 ```bash # 复制环境变量模板 cp .env.example .env ``` 编辑 `.env` 文件(如需修改默认值): ```bash # 数据库配置(默认值已配置) DB_HOST=localhost DB_PORT=3306 DB_NAME=internship DB_USERNAME=root DB_PASSWORD=123456 # Redis 配置 REDIS_HOST=localhost REDIS_PORT=6379 # MinIO 配置 MINIO_ENDPOINT=http://localhost:9000 MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin # JWT 配置 JWT_SECRET=internship-secret-key-change-in-production-2024 ``` --- ### 第四步:启动后端服务 ```bash cd services/api mvn spring-boot:run ``` 等待启动完成,看到以下日志表示成功: ``` Started InternshipApiApplication in X.XXX seconds ``` **验证后端:** - 访问 API 文档:http://localhost:8080/api/doc.html - 健康检查:`curl http://localhost:8080/api/actuator/health` --- ### 第五步:启动前端管理后台 ```bash cd apps/web-admin npm install npm run dev ``` 访问:http://localhost:5173 --- ### 第六步:打开小程序 1. 打开**微信开发者工具** 2. 选择 **"导入项目"** 3. 选择 `apps/miniprogram-student` 目录 4. AppID 选择 **"测试号"** 5. 在 **"详情" → "本地设置"** 中: - ✅ 勾选 **"不校验合法域名"** - ✅ 勾选 **"不校验 web-view 域名"** --- ## 👤 测试账号 | 角色 | 用户名/手机号 | 密码 | 说明 | |------|--------------|------|------| | **学校管理员** | `admin` | `admin` | 管理后台登录 | | **学生** | `User123` | `User123` | 小程序测试登录(ID: 1001) | | **企业** | `13800138000` | `Ent123` | 小程序企业端(张HR) | --- ## 📱 核心功能 ### 🎓 学生端小程序 | 功能 | 状态 | |------|------| | 微信登录 + 学号绑定 | ✅ | | 岗位浏览与搜索 | ✅ | | 城市筛选 | ✅ | | 实习申请(库内岗位) | ✅ | | 自主实习登记 | ✅ | | 申请状态跟踪 | ✅ | | 实习记录查看 | ✅ | | 周报提交 | ✅ | | 个人档案管理 | ✅ | | 头像上传 | ✅ | ### 🏢 企业端小程序 | 功能 | 状态 | |------|------| | 企业注册与认证 | ✅ | | 岗位发布与管理 | ✅ | | 学生申请处理 | ✅ | | 周报评阅 | ✅ | ### 🏛 学校管理端 | 功能 | 状态 | |------|------| | 学生数据管理 | ✅ | | 企业认证审核 | ✅ | | 岗位审核 | ✅ | | 实习申请审核 | ✅ | | 流程配置 | ✅ | | 实习台账导出 | ✅ | | 首页数据统计 | ✅ | --- ## 📦 数据库说明 ### 表结构(共 18 张表) | 分类 | 表名 | 用途 | |------|------|------| | **学校组织** | `schools` | 学校信息 | | | `school_depts` | 院系/组织结构 | | | `students` | 学生档案 | | | `school_admin_users` | 管理员用户 | | | `rbac_roles` | 角色定义 | | | `rbac_user_roles` | 用户角色关联 | | **企业岗位** | `companies` | 企业信息 | | | `enterprise_users` | 企业用户 | | | `company_verifications` | 企业认证审核 | | | `positions` | 岗位信息 | | | `position_audits` | 岗位审核记录 | | **申请实习** | `applications` | 实习申请 | | | `internships` | 实习记录 | | | `reports` | 周报/月报 | | | `report_reviews` | 周报评阅 | | **系统功能** | `files` | 文件元数据 | | | `messages` | 站内消息 | | | `message_reads` | 消息已读状态 | | | `audit_logs` | 审计日志 | | | `idempotency_records` | 幂等控制 | | | `school_settings` | 学校配置 | **⚠️ 请使用 `infra/migrations/V1__init_schema.sql`,这是与当前代码完全匹配的版本。** --- ## 🔧 常见问题 ### 1. 后端启动失败 **问题**:`Could not create connection to database` **解决**: ```bash # 检查 MySQL 容器是否运行 docker ps | grep mysql # 检查数据库是否初始化 mysql -h127.0.0.1 -uroot -p123456 -e "SHOW DATABASES;" ``` ### 2. MinIO 连接失败 **问题**:上传文件报错 **解决**: ```bash # 检查 MinIO 是否运行 docker ps | grep minio # 访问 MinIO 控制台 http://localhost:9001 用户名: minioadmin 密码: minioadmin ``` ### 3. 小程序登录失败 **问题**:`ERR_EMPTY_RESPONSE` **解决**: 1. 确认后端服务已启动:`curl http://localhost:8080/api/actuator/health` 2. 检查小程序 `app.js` 中的 `baseUrl` 是否为 `http://localhost:8080/api` 3. 在微信开发者工具中关闭域名校验 ### 4. 企业端登录失败 **问题**:登录提示用户名或密码错误 **解决**:使用正确的手机号登录 - 用户名:`13800138000`(手机号,不是 Ent123) - 密码:`Ent123` --- ## 📚 开发文档 - [后端 API 文档](docs/DEVELOPMENT.md) - [代码审查报告](docs/CODE_REVIEW_REPORT.md) - [注册登录设计](docs/REGISTER_LOGIN_DESIGN.md) --- ## 📄 许可证 MIT License --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! --- ## 📞 联系方式 如有问题,请提交 Issue 或联系项目维护者。