基于 Django 5 + Vue 3 的前后端分离办公系统,集成 DeepSeek LLM 智能助手
- 🤖 LLM 智能助手 - DeepSeek API + MCP 数据库查询(禁止信息编造)
- 📝 工作日志 - 日报/周报/月报管理
- 📅 日程管理 - 待办事项、优先级、状态管理
- 👥 考勤管理 - 请假申请、审批流程
- 📢 通知公告 - 发布与查看系统通知
- 🔐 权限管理 - 基于角色的访问控制(员工/领导/董事)
后端: Python 3.11 + Django 5 + Django REST Framework + MySQL + Redis
前端: Vue 3 + Element Plus + Pinia + Vite
AI_Demo1/
├── aibackend/
│ ├── apps/
│ │ ├── ai_auth/ # 用户认证 (AIUser, AIDepartment)
│ │ ├── absent/ # 考勤管理
│ │ ├── inform/ # 通知公告
│ │ ├── worklog/ # 工作日志
│ │ ├── schedule/ # 日程管理
│ │ └── llm_chat/ # LLM 助手 + MCP 服务
│ ├── AI_Demo1/ # 项目配置
│ └── manage.py
│
├── aifront/
│ ├── src/
│ │ ├── api/ # HTTP 客户端
│ │ ├── views/ # 页面组件
│ │ ├── router/ # 路由配置
│ │ └── stores/ # Pinia 状态
│ └── package.json
│
└── PROJECT_OVERVIEW.md
- Python 3.11
- Node.js 16+
- MySQL 8.0+
- Redis 6.0+
cd aibackend
pip install -r requirements.txt
python manage.py migrate
python manage.py runservercd aifront
npm install
npm run dev集成 DeepSeek API + MCP 工具调用
支持的查询:
- "我的工作日志" → 查询个人日志
- "今天的待办事项" → 查询今日日程
- "研发部有哪些员工" → 查询部门员工
- "技术部的联系方式" → 查询员工邮箱
- "最新通知" → 查询系统通知
关键特性:
- ✅ 前置数据库查询(禁止编造)
- ✅ 多轮上下文理解
- ✅ 系统提示词约束
WorkLog(title, content, summary, plan, log_date, log_type)- 撰写日报/周报/月报
- 查看个人日志
- 查看下属日志(领导权限)
- 日志统计
Schedule(title, description, priority, status, start_time, end_time)- 创建待办事项
- 优先级设置(高/中/低)
- 状态管理(待办/已完成/已取消)
- 标记完成功能
AIUser(username, realname, email, department, permission)
AIDepartment(name, intro, leader, manager)- JWT 登录认证
- 基于角色的权限控制
- 部门组织架构管理
┌─────────────────────────────────────────────────────────┐
│ 用户提问(LLM 助手) │
└──────────────────────┬──────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ DeepSeek LLM 分析用户意图 │
│ 判断是否需要调用 MCP 工具 │
└──────────────────────┬──────────────────────────────────┘
│
┌─────────────┼──────────────┐
↓ ↓ ↓
┌────────┐ ┌──────────┐ ┌──────────┐
│ RAG │ │ MCP │ │ LLM │
│知识库 │ │ 工具调用 │ │ 直接回答 │
└────────┘ └──────────┘ └──────────┘
│ │ │
└─────────────┼──────────────┘
↓
┌─────────────────────────┐
│ MCP 服务执行 │
│ - 员工信息查询 │
│ - 考勤数据查询 │
│ - 通知发送 │
└──────────┬──────────────┘
↓
┌──────────────────────────┐
│ 返回结果给 AI │
│ AI 整合并回复用户 │
└──────────────────────────┘
DEEPSEEK_API_KEY=sk-your-api-key# 数据库
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "aidemo1",
"USER": "root",
"PASSWORD": "123456",
"HOST": "localhost",
}
}
# 自定义用户模型
AUTH_USER_MODEL = "ai_auth.AIUser"
# 关闭尾部斜杠(重要)
APPEND_SLASH = False
# Redis 缓存
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.redis.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
}
}VITE_BASE_URL=http://127.0.0.1:8000AIUser (用户)
├── department → AIDepartment
├── worklogs ← WorkLog
├── schedules ← Schedule
└── absents ← Absent
AIDepartment (部门)
├── leader → AIUser
├── manager → AIUser
└── members ← AIUser
WorkLog (日志)
├── author → AIUser
└── log_type (1=日报, 2=周报, 3=月报)
Schedule (日程)
├── user → AIUser
├── priority (1=低, 2=中, 3=高)
└── status (1=待办, 2=已完成, 3=已取消)
Absent (请假)
├── requester → AIUser
└── status (1=待审, 2=已批, 3=已拒)
认证
POST /auth/login
POST /auth/register
GET /auth/userinfo
工作日志
GET /worklog/logs?who=my|sub
POST /worklog/logs
PUT /worklog/logs/{id}
DELETE /worklog/logs/{id}
日程
GET /schedule/schedules?status=pending|completed
POST /schedule/schedules
POST /schedule/schedules/{id}/complete
LLM 助手
GET /llm/sessions
POST /llm/sessions
POST /llm/sessions/{id}/message
用户问题
↓
提取上下文(最近两轮对话)
↓
query_mcp_data(user_question, context_messages)
├─ 合并上下文
├─ 匹配查询类型
├─ 查询数据库
└─ 返回结构化数据
↓
system_prompt += "系统查询结果:\n{mcp_context}"
↓
调用 DeepSeek API(基于真实数据生成)
你是一个专业的OA系统AI助手。
**重要规则:**
1. 只能使用系统查询结果中的真实数据
2. 严禁编造任何员工信息
3. 无数据时明确告诉用户"暂无相关数据"
4. 不要猜测或假设任何信息
- ✅ Django 5 + Python 3.11 - 最新稳定版本
- ✅ DeepSeek LLM - 智能对话助手
- ✅ MCP 数据查询 - 禁止信息编造
- ✅ 多轮上下文 - 连续追问支持
- ✅ JWT 认证 - 安全认证机制
- ✅ RESTful API - 标准接口设计
- ✅ 权限控制 - 角色级别管理
- ✅ 响应式设计 - Element Plus UI
