UniSchedulerSuper - 智能日程管理系统

Python Version Django Version License

基于 Django + LangGraph 的全功能 Web 日程管理系统,支持日程/提醒/待办管理、群组协作,并内置 AI Agent 对话助手。


核心特性


技术栈

| 层次 | 技术 | |------|------| | 后端框架 | Django 5.1.8 + Django REST Framework | | AI Agent | LangGraph + LangChain (ChatOpenAI compatible) | | WebSocket | Django Channels + Daphne (ASGI) | | 数据库 | SQLite(默认)/ PostgreSQL / MySQL | | LLM 多模型 | OpenAI / DeepSeek / Moonshot / MiniMax / Anthropic | | 联网搜索 | Tavily | | MCP 工具 | langchain-mcp-adapters | | 前端日历 | FullCalendar 6.x | | 前端 UI | Bootstrap 5 + 原生 JS | | 加密存储 | AES-256-GCM(用户 API Key)| | 日志 | concurrent_log_handler(轮转日志)|


项目结构

``` UniSchedulerSuper/ core/ # 核心业务:日程、提醒、待办、群组协作 models.py # UserData / 群组模型 / DATA_SCHEMA 验证 views_events.py # EventsRRuleManager(RRule 引擎集成) views_reminder.py # 提醒管理(含重复提醒) views_share_groups.py # 群组协作 + 版本同步 views_import_events.py # iCalendar 导入 views_token.py # API Token 管理 static/ # CSS / JS(event-manager.js 等) templates/ # HTML 模板(FullCalendar 主页等)

agent_service/ # AI Agent 服务(LangGraph) agent_graph.py # Agent 图定义、工具注册、模型初始化 consumers.py # WebSocket Consumer tools/ # Agent 工具集(日程操作、搜索等) attachment_handler.py # 附件处理(OCR、图片理解) context_optimizer.py # 上下文优化(Token 压缩) context_summarizer.py # 长对话摘要 quick_action_agent.py # 快捷操作 Agent mcp_tools.py # MCP 工具集成 models.py # 对话记录 / 内存 / 事务模型

config/ # 配置管理 api_keys_manager.py # API Key 读取(系统模型 + 第三方服务) api_keys.json # 实际配置(不入库,见 .gitignore) api_keys.example.json # 配置模板 email_manager.py # 邮件服务配置 email.json # 邮件配置(不入库) encryption.py # AES-256-GCM 加密工具

UniSchedulerSuper/ # Django 项目配置 settings.py urls.py asgi.py # ASGI 入口(Channels WebSocket) wsgi.py

api_examples/ # API 调用示例代码 example_events_api.py example_reminders_api.py example_todos_api.py example_eventgroups_api.py README.md # API 完整文档

docs/ # 设计文档 rrule_engine.py # RRule 重复规则引擎 integrated_reminder_manager.py # 集成提醒管理器 logger.py # 日志配置 requirements.txt manage.py ```


快速开始

环境要求

安装

```bash

克隆项目

git clone https://github.com/MoMoJee/UniSchedulerSuper.git cd UniSchedulerSuper

创建虚拟环境

python -m venv .venv

激活(Windows PowerShell)

.venv\Scripts\activate

激活(Linux / macOS)

source .venv/bin/activate

安装依赖

pip install -r requirements.txt ```

说明easyocr 体积约 1 GB,如不需要高精度 OCR 可跳过,系统会自动降级使用 Tesseract。

配置

1. 邮件服务(可选)

系统默认运行在测试模式,注册无需验证码,找回密码时验证码直接显示在页面上,无需邮件配置。如需真实邮件:

```bash cp config/email.example.json config/email.json

编辑 email.json,填入 SMTP 配置

```

2. AI Agent 模型配置(可选)

如需使用 AI 对话助手,配置系统模型:

```bash cp config/api_keys.example.json config/api_keys.json

编辑 api_keys.json,在 system_models 字段中填入模型信息

```

system_models 配置示例:

json { "system_models": { "system_deepseek": { "model_name": "deepseek-chat", "base_url": "https://api.deepseek.com/v1", "api_key": "sk-...", "enabled": true } } }

支持任何 OpenAI Compatible 接口。用户也可以在账户设置中绑定自己的 API Key,优先于系统模型。未配置任何模型时项目仍可正常启动,仅 AI 对话功能不可用。

如果要使用更多丰富的功能,可以参照 config/api_keys.example.json 配置其他服务,如百度云 OCR 和文档解析,以及更多 MCP 服务等

初始化数据库

bash python manage.py migrate python manage.py createsuperuser

启动服务

开发模式(不支持 WebSocket):

bash python manage.py runserver

推荐:Daphne ASGI(支持 WebSocket 与 AI Agent 实时对话):

```bash

收集静态文件(首次运行)

python manage.py collectstatic --noinput

启动

daphne -b 0.0.0.0 -p 8080 UniSchedulerSuper.asgi:application ```

访问

| 地址 | 说明 | |------|------| | http://127.0.0.1:8000/ | Web 主界面 | | http://127.0.0.1:8000/admin/ | Django 管理后台 | | http://127.0.0.1:8000/agent/ | AI Agent 对话界面 |


API 使用

系统提供完整的 RESTful API,支持 Token 认证。

获取 Token

```python import requests

res = requests.post("http://127.0.0.1:8000/api/auth/login/", json={ "username": "your_username", "password": "your_password" }) token = res.json()["token"] ```

或通过 Web 界面 设置-我的-API Token 管理获取 token

主要端点

| 模块 | 端点前缀 | |------|----------| | 日程 | /api/events/ | | 提醒 | /api/reminders/ | | 待办 | /api/todos/ | | 日程组 | /api/eventgroups/ | | 群组协作 | /api/share-groups/ | | Token 管理 | /api/token/ |

完整 API 文档与可运行示例:api_examples/README.md


日历订阅

提供符合 RFC 5545 标准的只读 iCalendar Feed,可直接添加到 Apple Calendar、Google Calendar 等客户端。

订阅地址https://yourserver.com/api/calendar/feed/?token=<YOUR_TOKEN>&type=all

| 参数 | 默认 | 说明 | |------|------|------| | token | 必填 | 用户 API Token(URL 参数鉴权,Apple Calendar 不支持自定义 Header)| | type | all | all / events / todos / reminders |

数据映射

| 项目类型 | iCalendar 组件 | 说明 | |---------|--------------|------| | 日程 | VEVENT | 完整映射,RRULE 直通,含 STATUS / PRIORITY | | 待办 | VEVENT + VALARM | 仅含 due_date 的待办,标题前缀 [待办]| | 提醒 | VEVENT + VALARM | 标题前缀 [提醒],RRULE 直通 |

注意:Apple Calendar 的 HTTP 订阅只解析 VEVENT,忽略 VTODO,因此待办和提醒均转为带 VALARM 的 VEVENT。iOS 14+ 要求 HTTPS,使用 HTTP 会触发安全警告(已测试在IOS18,IOS26下不影响使用)。

Apple Calendar 添加步骤:「设置 → 日历 → 账户 → 添加账户 → 其他 → 添加已订阅的日历」,输入上述 URL 即可。账号密码无需填写


AI Agent

Agent 基于 LangGraph 实现,通过 WebSocket 提供实时流式对话。

内置工具: - 日程/提醒/待办的增删改查 - 联网搜索(Tavily) - 附件理解(OCR + 图片分析) - MCP 工具(可扩展)

模型选择优先级:用户自有 Key > 系统配置模型 > DisabledLLM(降级占位,返回提示信息)

上下文管理:自动压缩长对话,超出窗口时触发摘要,保持上下文连贯。


MCP 服务器

mcp_server.py 将日程管理工具暴露为标准 MCP 服务,可接入 Claude Desktop、VS Code Copilot 等支持 MCP 协议的客户端。

stdio 模式(Claude Desktop 本地)

前提:需先完整部署本项目(数据库初始化、服务启动),MCP Server 本质上是本项目的一个进程,须能访问 Django ORM 和数据库。

推荐方式(命令行参数)bash python mcp_server.py --token <YOUR_API_TOKEN>

备选方式(环境变量)bash set MCP_USER_TOKEN=<YOUR_API_TOKEN> python mcp_server.py

或在 Claude Desktop 中配置:(claude_desktop_config.json): json { "mcpServers": { "unischeduler": { "command": "python", // 要使用部署了该项目的环境的 python 解释器 "args": ["D:/PROJECTS/UniSchedulerSuper/mcp_server.py", "--token", "YOUR_TOKEN"] } } }

HTTP 模式(远程客户端 / VS Code)

对于服务端: bash python mcp_server.py --http --port 8100

如果仅体验功能不部署,那么仅使用客户端即可: 客户端使用 http://yourserver:8100/mcp?api_key=<YOUR_TOKEN> 连接,支持 URL 参数(api_key= / token=)和 Authorization: Bearer Header 两种鉴权方式。

VS Code settings.json 配置示例: json { "mcp": { "servers": { "unischeduler": { "url": "http://127.0.0.1:8100/mcp?api_key=YOUR_TOKEN", // "url": "http://unischedulersuper.online:8100/mcp?api_key=YOUR_TOKEN", 适用于使用我们官方服务器的场景 "type": "http" } } } }

暴露的工具search_items / create_item / update_item / delete_item / complete_todo / get_event_groups / get_share_groups / check_schedule_conflicts


许可证

MIT License