task-reminder/README.md
2025-05-28 09:50:20 +08:00

181 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Zeodao任务提醒系统
一个基于Spring Boot的企业微信任务提醒系统专门用于提醒团队成员及时在禅道系统中刷新任务状态。系统会在工作日的早上9点和下午5:30自动发送提醒消息帮助团队养成良好的任务状态更新习惯。
## 功能特性
- ✅ 自动在工作日早上9:00发送禅道任务状态提醒
- ✅ 自动在工作日下午17:30发送任务完成状态提醒
- ✅ 自动排除周末和法定节假日
- ✅ 支持企业微信Webhook消息推送
- ✅ 支持Markdown格式消息包含操作指引
- ✅ 提供REST API进行手动测试和触发
- ✅ 完整的日志记录和错误处理
- ✅ 可配置的消息内容和时间
## 技术栈
- Java 21
- Spring Boot 2.7.14
- Maven
- 企业微信Webhook API
## 快速开始
### 1. 环境要求
- JDK 21 或更高版本
- Maven 3.6+
### 2. 配置企业微信Webhook
`src/main/resources/application.yml` 中配置您的企业微信Webhook地址
```yaml
wechat:
webhook:
url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WEBHOOK_KEY
```
### 3. 编译和运行
```bash
# 编译项目
mvn clean compile
# 运行项目
mvn spring-boot:run
```
或者打包后运行:
```bash
# 打包
mvn clean package
# 运行jar包
java -jar target/task-reminder-1.0.0.jar
```
### 4. 验证系统
系统启动后可以通过以下API进行测试
```bash
# 健康检查
curl http://localhost:8080/api/reminder/health
# 发送测试消息
curl -X POST http://localhost:8080/api/reminder/test
# 手动触发早上提醒
curl -X POST http://localhost:8080/api/reminder/morning
# 手动触发晚上提醒
curl -X POST http://localhost:8080/api/reminder/evening
# 获取提醒信息
curl http://localhost:8080/api/reminder/info
```
## 配置说明
### 时间配置
`application.yml` 中可以自定义提醒时间:
```yaml
task:
reminder:
morning:
time: "0 0 9 * * MON-FRI" # Cron表达式工作日早上9点
message: "早上好!请及时更新您的任务状态,开始新的一天工作!"
evening:
time: "0 30 17 * * MON-FRI" # Cron表达式工作日下午5:30
message: "下班前提醒:请更新今日任务完成状态,为明天做好准备!"
```
### 节假日配置
系统内置了2024年和2025年的法定节假日可以在 `HolidayUtil.java` 中修改或添加自定义节假日。
## API文档
### 健康检查
- **URL**: `GET /api/reminder/health`
- **描述**: 检查系统运行状态
### 发送测试消息
- **URL**: `POST /api/reminder/test`
- **描述**: 发送一条测试消息到企业微信群
### 手动触发早上提醒
- **URL**: `POST /api/reminder/morning`
- **描述**: 手动触发早上任务提醒
### 手动触发晚上提醒
- **URL**: `POST /api/reminder/evening`
- **描述**: 手动触发晚上任务提醒
### 获取提醒信息
- **URL**: `GET /api/reminder/info`
- **描述**: 获取下次提醒时间和系统状态信息
## 日志
系统会在 `logs/task-reminder.log` 文件中记录详细的运行日志,包括:
- 定时任务执行记录
- 消息发送状态
- 错误信息
- 系统健康检查
## 部署建议
### 生产环境部署
1. 修改 `application.yml` 中的日志级别为 `INFO`
2. 配置合适的JVM参数
3. 使用systemd或其他进程管理工具管理应用
4. 配置日志轮转策略
### Docker部署
可以创建Dockerfile进行容器化部署
```dockerfile
FROM openjdk:21-jre-slim
COPY target/task-reminder-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
```
## 故障排除
### 常见问题
1. **消息发送失败**
- 检查企业微信Webhook地址是否正确
- 检查网络连接是否正常
- 查看日志文件中的错误信息
2. **定时任务不执行**
- 检查Cron表达式是否正确
- 确认当前时间是否为工作日
- 查看系统日志确认定时任务是否启动
3. **节假日判断错误**
- 检查 `HolidayUtil.java` 中的节假日配置
- 确认系统时间是否正确
## 贡献
欢迎提交Issue和Pull Request来改进这个项目。
## 许可证
MIT License
## 联系方式
如有问题,请联系开发团队。