AI 驱动的智能待办事项管理平台
自然语言输入 · AI 对话管理 · 飞书深度集成
---| 功能 | 说明 |
|---|---|
| 🗣️ 自然语言创建待办 | 输入"明天下午3点开会,高优先级"即可自动解析创建 |
| 🤖 AI 对话管理 | 基于 DeepSeek 的多轮对话,支持复杂操作指令 |
| 📝 待办 CRUD | 创建、编辑、删除、批量操作,支持标题、备注、优先级、状态、截止时间 |
| 📊 状态管理 | 未开始 / 进行中 / 已完成 / 已删除 |
| 🔴 优先级管理 | 紧急 / 重要 / 一般 |
| 🏷️ 标签系统 | 自定义标签(可设颜色),与待办多对多关联 |
| 🖥️ 多视图 | 首页输入视图 / 列表视图 / 卡片网格视图 |
| 🔍 筛选与搜索 | 按状态、优先级、标签筛选(均含计数),全文关键词搜索 |
| ✅ 批量操作 | 批量标记状态、批量删除 |
| 📈 进度汇总 | 环形图、状态分布、优先级分布、截止时间统计 |
| 🪶 飞书任务同步 | 待办 ↔ 飞书任务 v2 API 双向同步 |
| ⏰ 飞书任务提醒 | 截止前自动设置提醒 |
| 🔐 用户认证 | JWT 登录/注册,密码 bcrypt 加密 |
| 🎨 亮色卡通主题 | 点状背景、3D 阴影、弹性动画、实时时钟 |
| 技术 | 用途 |
|---|---|
| React 18 | UI 框架 |
| Vite 5 | 构建工具 |
| React Router 6 | 路由 |
| Axios | HTTP 请求 |
| react-markdown + remark-gfm | AI 回复 Markdown 渲染 |
| 技术 | 用途 |
|---|---|
| Node.js | 运行时 |
| Express 4 | HTTP 框架 |
| MySQL2 3 | 数据库驱动 |
| jsonwebtoken 9 | JWT 认证 |
| bcryptjs 2 | 密码加密 |
| dotenv 16 | 环境变量 |
| 服务 | 用途 |
|---|---|
| DeepSeek API | AI 自然语言解析(Chat Completions + Function Calling) |
| 飞书开放平台 | 任务同步、提醒、OAuth 登录 |
- Node.js ≥ 16
- MySQL ≥ 5.7(推荐 8.0)
git clone https://github.com/Morri3/MorriTodo.git
cd MorriTodo# 服务端
cd server
npm install
# 客户端
cd ../client
npm installcd server
cp .env.example .env编辑 server/.env,填入你的配置:
| 变量 | 说明 |
|---|---|
DB_HOST |
数据库地址 |
DB_PORT |
数据库端口 |
DB_USER |
数据库用户名 |
DB_PASSWORD |
数据库密码 |
DB_NAME |
数据库名称(默认 morri_todo) |
DEEPSEEK_API_KEY |
DeepSeek API 密钥 |
DEEPSEEK_BASE_URL |
DeepSeek API 地址 |
DEEPSEEK_MODEL |
使用的模型名称 |
JWT_SECRET |
JWT 签名密钥(请设为随机字符串) |
PORT |
服务端端口(默认 3001) |
FEISHU_APP_ID |
飞书应用 ID(可选) |
FEISHU_APP_SECRET |
飞书应用密钥(可选) |
mysql -u root -p < server/sql/init.sql# 服务端(端口 3001)
cd server
npm run dev
# 客户端(端口 5173)
cd client
npm run dev浏览器访问 http://localhost:5173,注册账号后即可使用。
使用云服务器里的Docker更便捷管理哦~
MorriTodo/
├── client/ # 客户端 — React + Vite
│ ├── src/
│ │ ├── api/ # API 请求封装(auth, todos, tags, chat, feishu)
│ │ ├── components/ # UI 组件
│ │ │ ├── chat/ # AI 对话面板
│ │ │ ├── layout/ # 侧边栏、筛选器、搜索
│ │ │ ├── todos/ # 待办卡片、列表、智能输入、仪表盘
│ │ │ ├── tags/ # 标签组件
│ │ │ ├── settings/ # 飞书设置
│ │ │ └── common/ # 通用弹窗、确认框
│ │ ├── context/ # React Context(Auth, Todo, Chat)
│ │ ├── pages/ # 页面(Login, MainPage, GridPage)
│ │ └── styles/ # 全局样式
│ └── vite.config.js
│
├── server/ # 服务端 — Express + MySQL
│ ├── src/
│ │ ├── config/ # 环境变量、数据库连接池
│ │ ├── middleware/ # JWT 认证、错误处理
│ │ ├── models/ # 数据模型(user, todo, tag, conversation, feishu)
│ │ ├── routes/ # API 路由(auth, todos, tags, chat, conversations, feishu)
│ │ ├── services/ # 外部服务(DeepSeek, 飞书 API)
│ │ ├── functions/ # AI Function Calling 处理器(ReAct 模式)
│ │ └── utils/ # 日志、日期解析
│ └── sql/ # 数据库初始化脚本
│
├── docs/ # 项目文档
│ ├── full-development-guide.md # 完整开发文档
│ ├── server-details.md # 服务端实现细节
│ ├── ai-development-guide.md # AI ReAct 架构说明
│ └── ecs-deployment-guide.md # ECS 部署指南
│
├── LICENSE
├── README.md
├── README_EN.md
├── CONTRIBUTION.md
└── CONTRIBUTION_EN.md
| 方法 | 端点 | 说明 | 认证 |
|---|---|---|---|
| POST | /api/auth/register |
用户注册 | ❌ |
| POST | /api/auth/login |
用户登录 | ❌ |
| GET | /api/todos |
获取待办列表 | ✅ |
| POST | /api/todos |
创建待办 | ✅ |
| PUT | /api/todos/:id |
更新待办 | ✅ |
| DELETE | /api/todos/:id |
删除待办 | ✅ |
| POST | /api/todos/batch-update |
批量更新状态 | ✅ |
| POST | /api/todos/batch-delete |
批量删除 | ✅ |
| GET/POST/DELETE | /api/tags |
标签 CRUD | ✅ |
| POST | /api/chat |
AI 对话(ReAct 循环) | ✅ |
| GET/DELETE | /api/conversations |
对话管理 | ✅ |
| GET | /api/feishu/* |
飞书 OAuth 与绑定 | ✅ |
| GET | /api/health |
健康检查 | ❌ |
- 完整开发文档 — 项目概述、技术栈、数据库设计、API 详情、部署指南
- 服务端实现细节 — MySQL2 使用、路由模式、模型模式、认证流程
- AI 开发指南 — ReAct 架构、Function Calling 流程、系统提示词
- ECS 部署指南 — 阿里云 ECS + Nginx + PM2 生产部署
欢迎提交 Issue 和 Pull Request!请先阅读 贡献指南。
本项目基于 MIT License 开源。
Made with ❤️ by Morri


