# interview-daily-push
**Repository Path**: wxl212/interview-daily-push
## Basic Information
- **Project Name**: interview-daily-push
- **Description**: 面试题每日推送系统 - 支持语雀题库导入、邮件定时推送、在线查看,助力面试准备
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-28
- **Last Updated**: 2026-01-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Interview Daily Push 📚
面试题每日推送系统
一个简洁优雅的面试题库管理和定时推送系统,支持从语雀等平台导入题库,通过邮件定时推送面试题,助力面试准备。
---
## ✨ 功能特性
### 📖 题库管理
- **语雀题库导入**:支持从语雀知识库一键导入面试题目录
- **多级分类**:自动解析语雀文件夹结构,支持无限级分类
- **内容抓取**:自动抓取语雀文档内容,支持 Markdown 渲染
### 📧 邮件推送
- **定时推送**:支持自定义推送时间,每天定时发送面试题
- **灵活配置**:可选择工作日/周末/每天推送
- **多邮箱支持**:支持配置多个接收邮箱
- **精美邮件**:响应式邮件模板,手机端阅读体验佳
### 🎯 学习模式
- **顺序推送**:按题目顺序依次推送,系统学习
- **随机推送**:随机抽取题目,查漏补缺
- **在线查看**:邮件内点击即可在线查看完整题目内容
### 🔧 系统管理
- **SMTP 配置**:支持多套 SMTP 邮箱配置
- **用户管理**:基于 Sa-Token 的权限认证
- **零配置启动**:自动创建数据库和表结构
## 🛠️ 技术栈
| 技术 | 说明 |
|------|------|
| Spring Boot 3.2 | 基础框架 |
| Sa-Token | 权限认证 |
| MyBatis-Plus | ORM 框架 |
| Thymeleaf | 模板引擎 |
| Bootstrap 5 | 前端 UI |
| MySQL 8.0 | 数据库 |
| Flexmark | Markdown 解析 |
| Hutool | 工具库 |
## 🚀 快速开始
### 环境要求
- JDK 21+
- MySQL 8.0+
- Maven 3.6+
### 1. 克隆项目
```bash
git clone https://github.com/your-username/interview-daily-push.git
cd interview-daily-push
```
### 2. 配置数据库
编辑 `src/main/resources/application.yml`,修改数据库连接信息:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/interview_push?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true
username: root
password: your_password
```
> 💡 项目启动时会**自动创建数据库和表结构**,无需手动执行 SQL!
### 3. 运行项目
```bash
# 使用 Maven 运行
mvn spring-boot:run
# 或者打包后运行
mvn clean package -DskipTests
java -jar target/push-1.0.0.jar
```
### 4. 访问系统
启动成功后访问:http://localhost:8000
**默认管理员账号**:
- 用户名:`admin`
- 密码:`admin`
## 📖 使用指南
### 第一步:配置 SMTP 邮箱
进入「系统设置」页面,配置 SMTP 邮箱信息:
| 邮箱 | SMTP 服务器 | 端口 |
|------|-------------|------|
| QQ邮箱 | smtp.qq.com | 465 (SSL) |
| 163邮箱 | smtp.163.com | 465 (SSL) |
| Gmail | smtp.gmail.com | 587 (TLS) |
### 第二步:添加题库来源
1. 进入「题库来源」页面
2. 点击「添加来源」
3. 填写语雀知识库 URL(如:`https://www.yuque.com/xxx/interview`)
4. 点击「同步」获取题目列表
### 第三步:配置推送规则
1. 进入「推送配置」页面
2. 选择要推送的题库和分类
3. 设置推送时间(如:09:00, 18:00)
4. 选择推送日期类型(每天/工作日/周末)
5. 填写接收邮箱
### 第四步:开始学习
- **定时推送**:系统会按配置的时间自动发送邮件
- **手动推送**:在「题目推送」页面点击「下一题」立即获取
## 📁 项目结构
```
src/main/java/com/interview/push/
├── PushApplication.java # 启动类
├── common/ # 公共类
│ ├── Constants.java # 常量定义
│ └── Result.java # 统一响应
├── config/ # 配置类
│ ├── AppConfig.java # 应用配置
│ ├── DatabaseInitializer.java # 数据库初始化
│ ├── SaTokenConfig.java # 权限配置
│ └── ...
├── controller/ # 控制器
│ ├── AuthController.java # 认证接口
│ ├── PublicController.java # 公开访问(邮件链接)
│ ├── PushController.java # 推送接口
│ └── ...
├── entity/ # 实体类
├── mapper/ # Mapper 接口
├── scheduler/ # 定时任务
│ └── EmailPushScheduler.java # 邮件推送调度器
└── service/ # 服务层
├── impl/
└── YuqueParserService.java # 语雀解析服务
src/main/resources/
├── application.yml # 配置文件
└── templates/ # 页面模板
├── login.html # 登录页
├── index.html # 首页/仪表盘
├── source.html # 题库来源管理
├── question.html # 题目管理
├── push.html # 题目推送
├── config.html # 推送配置
├── settings.html # 系统设置
└── public/ # 公开页面(无需登录)
└── question.html # 邮件在线查看
```
## 🐳 Docker 部署
```bash
# 构建镜像
docker build -t interview-daily-push .
# 运行容器
docker run -d \
--name interview-push \
-p 8000:8000 \
-e SPRING_DATASOURCE_URL=jdbc:mysql://your-mysql:3306/interview_push \
-e SPRING_DATASOURCE_USERNAME=root \
-e SPRING_DATASOURCE_PASSWORD=your_password \
interview-daily-push
```
## 📝 注意事项
1. **语雀访问**:部分语雀知识库需要登录才能访问,可在题库来源中配置 Cookie
2. **邮件发送**:QQ/163 邮箱需要开启 SMTP 服务并获取授权码
3. **定时任务**:推送时间精确到分钟,系统每分钟检查一次
4. **数据备份**:建议定期备份 MySQL 数据库
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
## 📄 License
[MIT License](LICENSE)
---
如果这个项目对你有帮助,请给一个 ⭐ Star 支持一下!