5151└─────────────────┘
5252```
5353
54+ ## 快速开始
55+
56+ ### 方式一:使用 Docker
57+
58+ ``` bash
59+ # 1. 构建并启动容器
60+ docker-compose up -d
61+
62+ # 2. 查看日志
63+ docker-compose logs -f
64+
65+ # 3. 停止服务
66+ docker-compose down
67+ ```
68+
69+ ### 方式三:使用启动脚本
70+
71+ ``` bash
72+ # 1. 克隆或下载项目到服务器
73+ cd /path/to/notify-scheduler
74+
75+ # 2. 运行启动脚本(开发模式)
76+ ./start.sh
77+
78+ # 或者使用生产模式(Gunicorn)
79+ ./start.sh prod
80+ ```
81+
82+ ## Web 界面使用说明
83+
84+ 访问 ` http://your-server:5000 ` 打开 Web 管理界面。
85+
5486## 📂 项目文件说明
5587
5688### 核心代码文件
91123| ` test_system.py ` | 系统测试脚本 | 测试人员 |
92124| ` config_examples.json ` | 各渠道配置示例 | 配置人员 |
93125
94- ## 快速开始
95-
96- ### 方式一:使用启动脚本(推荐)
97-
98- ``` bash
99- # 1. 克隆或下载项目到服务器
100- cd /path/to/notify-scheduler
101-
102- # 2. 运行启动脚本(开发模式)
103- ./start.sh
104-
105- # 或者使用生产模式(Gunicorn)
106- ./start.sh prod
107- ```
108-
109- 访问 ` http://localhost:5000 ` 即可使用 Web 界面。
110-
111- ### 方式二:手动安装
112-
113- ``` bash
114- # 1. 创建虚拟环境
115- python3 -m venv venv
116- source venv/bin/activate
117-
118- # 2. 安装依赖
119- pip install -r requirements.txt
120- pip install gunicorn ANotify
121-
122- # 3. 初始化数据库
123- python -c " from models import init_db; init_db()"
124-
125- # 4. 启动服务(开发模式)
126- python app.py
127-
128- # 或使用 Gunicorn(生产模式)
129- gunicorn -c gunicorn_config.py app:app
130- ```
131-
132- ### 方式三:使用 Docker
133-
134- ``` bash
135- # 1. 构建并启动容器
136- docker-compose up -d
137-
138- # 2. 查看日志
139- docker-compose logs -f
140-
141- # 3. 停止服务
142- docker-compose down
143- ```
144-
145- ## Web 界面使用说明
146-
147- 访问 ` http://your-server:5000 ` 打开 Web 管理界面。
148-
149126### 创建通知任务
150127
1511281 . 在左侧表单中填写通知信息:
@@ -174,105 +151,6 @@ docker-compose down
174151- 每个渠道项支持 ** 编辑** 与 ** 删除** 操作:编辑时会弹出模态框,允许修改渠道名称、配置字段及是否设为默认(渠道类型不可变更以保证安全)。
175152- 在创建任务时可从“选择已保存的渠道”下拉中快速选择,UI 已优化下拉样式以与表单一致,移动端也增加了触控友好性。
176153
177- ## 生产环境部署
178-
179- ### 使用 Systemd(推荐用于 Ubuntu/Debian)
180-
181- 1 . ** 复制项目到服务器**
182-
183- ``` bash
184- sudo mkdir -p /var/www/notify-scheduler
185- sudo cp -r * /var/www/notify-scheduler/
186- cd /var/www/notify-scheduler
187- ```
188-
189- 2 . ** 安装依赖**
190-
191- ``` bash
192- python3 -m venv venv
193- source venv/bin/activate
194- pip install -r requirements.txt
195- pip install gunicorn ANotify
196- ```
197-
198- 3 . ** 配置 Systemd 服务**
199-
200- ``` bash
201- # 复制服务配置文件
202- sudo cp notify-scheduler.service /etc/systemd/system/
203-
204- # 重载 systemd
205- sudo systemctl daemon-reload
206-
207- # 启动服务
208- sudo systemctl start notify-scheduler
209-
210- # 设置开机自启
211- sudo systemctl enable notify-scheduler
212-
213- # 查看状态
214- sudo systemctl status notify-scheduler
215- ```
216-
217- 4 . ** 配置 Nginx(可选但推荐)**
218-
219- ``` bash
220- # 安装 Nginx
221- sudo apt install nginx
222-
223- # 复制配置文件
224- sudo cp nginx.conf /etc/nginx/sites-available/notify-scheduler
225- sudo ln -s /etc/nginx/sites-available/notify-scheduler /etc/nginx/sites-enabled/
226-
227- # 修改配置中的域名
228- sudo nano /etc/nginx/sites-available/notify-scheduler
229-
230- # 测试配置
231- sudo nginx -t
232-
233- # 重启 Nginx
234- sudo systemctl restart nginx
235- ```
236-
237- ### 使用 Docker Compose
238-
239- ``` bash
240- # 1. 启动服务
241- docker-compose up -d
242-
243- # 2. 查看运行状态
244- docker-compose ps
245-
246- # 3. 查看日志
247- docker-compose logs -f notify-scheduler
248-
249- # 4. 重启服务
250- docker-compose restart
251-
252- # 5. 停止服务
253- docker-compose down
254- ```
255-
256- ### 使用 Docker(单容器)
257-
258- ``` bash
259- # 1. 构建镜像
260- docker build -t notify-scheduler .
261-
262- # 2. 运行容器
263- docker run -d \
264- --name notify-scheduler \
265- -p 5000:5000 \
266- -v $( pwd) /data:/app/data \
267- -v $( pwd) /logs:/app/logs \
268- notify-scheduler
269-
270- # 3. 查看日志
271- docker logs -f notify-scheduler
272-
273- # 4. 停止容器
274- docker stop notify-scheduler
275- ```
276154
277155## API 接口文档
278156
@@ -327,48 +205,8 @@ docker stop notify-scheduler
327205| IYUU | ` iyuu ` | token (可选 ` server_url ` ) |
328206| 巴法云 | ` bafayun ` | token (可选 ` server_url ` ) |
329207
330- 详细配置示例请查看 ` config_examples.json ` 。
331-
332- ## 重复任务 Cron 表达式
333-
334- 常用 Cron 表达式示例:
335- - ` 0 9 * * * ` - 每天早上9点
336- - ` 0 */2 * * * ` - 每2小时
337- - ` 0 9 * * 1 ` - 每周一早上9点
338- - ` 0 0 1 * * ` - 每月1号零点
339- - ` */30 * * * * ` - 每30分钟
340-
341- ## 运维管理
342-
343- ### 查看日志
344-
345- ``` bash
346- # Systemd 服务日志
347- sudo journalctl -u notify-scheduler -f
348-
349- # Gunicorn 日志
350- tail -f logs/access.log
351- tail -f logs/error.log
352208
353- # Docker 日志
354- docker-compose logs -f
355- ```
356-
357- ### 重启服务
358-
359- ``` bash
360- # Systemd
361- sudo systemctl restart notify-scheduler
362-
363- # Docker
364- docker-compose restart
365-
366- # 手动停止和启动
367- ./stop.sh
368- ./start.sh prod
369- ```
370-
371- ### 数据备份
209+ ## 数据备份
372210
373211``` bash
374212# 备份数据库
@@ -378,49 +216,6 @@ cp notify_scheduler.db notify_scheduler.db.backup
3782160 2 * * * cp /var/www/notify-scheduler/notify_scheduler.db /backup/notify_scheduler_$( date +\% Y\% m\% d) .db
379217```
380218
381- ## 安全建议
382-
383- 1 . ** 使用 HTTPS** : 在生产环境中配置 SSL 证书
384- 2 . ** 设置防火墙** : 只开放必要的端口
385- 3 . ** 定期更新** : 及时更新依赖包
386- 4 . ** 备份数据** : 定期备份数据库文件
387- 5 . ** 访问控制** : 配置 Nginx 基本认证或其他认证方式
388- 6 . ** 日志监控** : 定期检查日志文件
389-
390- ## 故障排查
391-
392- ### 服务无法启动
393-
394- ``` bash
395- # 检查端口占用
396- sudo lsof -i :5000
397-
398- # 检查日志
399- tail -f logs/error.log
400- sudo journalctl -u notify-scheduler -n 50
401- ```
402-
403- ### 通知发送失败
404-
405- 1 . 检查任务详情中的错误信息
406- 2 . 验证渠道配置是否正确
407- 3 . 检查网络连接
408- 4 . 查看应用日志
409-
410- ### 数据库错误
411-
412- ``` bash
413- # 重新初始化数据库(会清空数据)
414- python -c " from models import Base, engine; Base.metadata.drop_all(engine); Base.metadata.create_all(engine)"
415- ```
416-
417- ## 性能优化
418-
419- 1 . ** 调整 Gunicorn workers 数量** : 修改 ` gunicorn_config.py `
420- 2 . ** 使用数据库连接池** : 默认已配置 SQLAlchemy 连接池
421- 3 . ** 启用 Nginx 缓存** : 配置静态资源缓存
422- 4 . ** 定期清理旧任务** : 删除过期的已完成任务
423-
424219## 常见问题
425220
426221** Q: 如何更改运行端口?**
@@ -442,14 +237,14 @@ A: 在 `notifier.py` 中添加新的发送方法,并在 `models.py` 中添加
442237## 开发计划
443238
444239### 已完成
445- - [x] Web 管理界面
446240- [x] 日历视图支持点击任务进行编辑
447241- [x] 移动端响应式适配与触摸优化
448242- [x] 拖拽调整任务时间(日历视图)
449243- [x] 日历订阅及同步功能
450244- [x] 支持多渠道消息推送
245+ - [x] 重复任务暂停功能
451246- [ ] 失败自动重试
452- - [ ] 重复任务暂停功能
247+ - [ ] 脚本运行
453248- [ ] 数据导入/导出
454249
455250## License
0 commit comments