MCP推送通知静默时间
一个模块化、安全的系统,使MCP最终用户能够为推送通知定制安静时间。用户可以在用户定义的时间段内抑制或排队通知,以避免干扰,具有强大的验证、加密和多设备支持。
______________________________________________________________________
特性
- 用户定义的安静时间: 设置通知抑制的开始和结束时间。
- 安全存储: 静默时间偏好在传输(TLS/HTTPS)和静止(PostgreSQL)时进行加密。
- 抑制和排队: 通知在安静时段被抑制或排队,如果仍然相关,则在之后发送。
- 即时更新: 对安静时间设置的更改立即生效。
- 验证和错误处理: 强大的输入验证和用户友好的错误消息。
- 多设备和DST支持: 处理夏令时和多种设备场景。
- 身份验证: 所有设置都是用户特定的,需要JWT身份验证。
- 可扩展: 模块化后端和前端,便于功能扩展。
______________________________________________________________________
技术栈
- 后端: Python 3.11、FastAPI、SQLAlchemy、Alembic、PostgreSQL、JWT、Docker
- 前端: React 18+,React测试库
- 测试: Pytest(后端)、React测试库(前端)
- 安全: TLS/HTTPS、JWT、加密存储
______________________________________________________________________
快速开始
先决条件
- Docker&Docker编写
- Node.js(16+)和npm/yarn(用于前端开发)
后端设置
- 克隆存储库:
git clone
cd - 配置环境变量:
- 复制 .env.example 到 .env 并设置秘密(JWT、DB等)。
- 使用Docker构建并运行后端:
cd backend
docker build -t mcp-quiet-hours-backend .
docker run --env-file .env -p 8000:8000 mcp-quiet-hours-backend或者使用Docker Compose(推荐给开发人员):
docker-compose up --build- 数据库迁移:
- Alembic迁移在容器启动时自动运行。 - 要手动运行,请执行以下操作:
poetry run alembic upgrade head前端设置
- 安装依赖项:
cd frontend
npm install- 配置API基本URL:
- 集 REACT_APP_API_BASE_URL 在 .env 如果后端未打开 localhost:8000.
- 运行前端:
npm start______________________________________________________________________
用法
认证
- 注册新帐户或使用现有凭据登录。
- 所有API端点(除
/auth/register和/auth/token)需要有效的JWT。
安静时间管理
- 访问UI中的“推送通知静默时间”设置。
- 设置开始/结束时间(24小时格式),选择您的时区,启用/禁用安静时间。
- 无效的配置(例如,先结束后开始,相同的开始/结束)将被拒绝,并出现明显的错误。
- 删除安静时间以随时接收通知。
通知递送
- 在安静时间发送的通知会排队,如果仍然相关,会在安静时间后发送。
- 您可以通过API或UI触发排队通知的传递。
- 该系统可处理夜间安静时间和夏令时转换。
______________________________________________________________________
api参考
认证
POST /auth/register--注册新用户POST /auth/token--获取JWT访问令牌
安静时间
GET /quiet-hours/me--获取当前用户的安静时间设置POST /quiet-hours/me--创建安静时间设置PUT /quiet-hours/me--更新安静时间设置DELETE /quiet-hours/me--删除安静时间设置
通知
POST /notifications/send--发送推送通知(如果在安静时间内,则被抑制/排队)POST /notifications/deliver-queued--在安静时间后发送所有排队的通知
______________________________________________________________________
安全与合规
- 所有敏感数据在传输(TLS/HTTPS)和静止(PostgreSQL)时都会加密。
- 对所有用户特定的端点强制执行JWT身份验证。
- 输入验证和错误处理功能强大,用户友好。
- 专为可扩展性和可扩展性而设计。
______________________________________________________________________
测试
- 后端: 跑
pytest在backend/目录。 - 前端: 跑
npm test在frontend/目录。 - 测试涵盖了包括夏令时和多设备场景在内的边缘情况。
______________________________________________________________________
项目结构
backend/
main.py
models.py
schemas.py
crud.py
auth.py
notification.py
tests/
alembic/
Dockerfile
frontend/
src/
components/
QuietHoursSettings.jsx
api/
api.js
App.jsx
tests/
README.md______________________________________________________________________
贡献
- 分叉仓库并创建一个功能分支。
- 编写清晰、记录良好的代码和测试。
- 确保所有测试均已通过,且代码已格式化。
- 提交一个带有详细描述的拉取请求。
______________________________________________________________________
许可证
MIT许可证
______________________________________________________________________
联系
如有疑问或支持,请打开问题或联系维护人员。
