Skip to content

RudyGo8/AI_OaSystem

Repository files navigation

AI_Demo1 - 智能 OA 系统

基于 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 runserver

后端服务:http://127.0.0.1:8000

前端启动

cd aifront
npm install
npm run dev

前端服务:http://localhost:8888


📚 主要功能模块

1. LLM 智能助手

集成 DeepSeek API + MCP 工具调用

支持的查询:

  • "我的工作日志" → 查询个人日志
  • "今天的待办事项" → 查询今日日程
  • "研发部有哪些员工" → 查询部门员工
  • "技术部的联系方式" → 查询员工邮箱
  • "最新通知" → 查询系统通知

关键特性:

  • ✅ 前置数据库查询(禁止编造)
  • ✅ 多轮上下文理解
  • ✅ 系统提示词约束

2. 工作日志

WorkLog(title, content, summary, plan, log_date, log_type)
  • 撰写日报/周报/月报
  • 查看个人日志
  • 查看下属日志(领导权限)
  • 日志统计

3. 日程管理

Schedule(title, description, priority, status, start_time, end_time)
  • 创建待办事项
  • 优先级设置(高/中/低)
  • 状态管理(待办/已完成/已取消)
  • 标记完成功能

4. 用户认证

AIUser(username, realname, email, department, permission)
AIDepartment(name, intro, leader, manager)
  • JWT 登录认证
  • 基于角色的权限控制
  • 部门组织架构管理

5.架构说明

┌─────────────────────────────────────────────────────────┐
│                    用户提问(LLM 助手)                    │
└──────────────────────┬──────────────────────────────────┘
                       │
                       ↓
┌─────────────────────────────────────────────────────────┐
│              DeepSeek LLM 分析用户意图                     │
│              判断是否需要调用 MCP 工具                      │
└──────────────────────┬──────────────────────────────────┘
                       │
         ┌─────────────┼──────────────┐
         ↓             ↓              ↓
    ┌────────┐  ┌──────────┐  ┌──────────┐
    │ RAG    │  │   MCP    │  │  LLM     │
    │知识库  │  │ 工具调用 │  │ 直接回答 │
    └────────┘  └──────────┘  └──────────┘
         │             │              │
         └─────────────┼──────────────┘
                       ↓
           ┌─────────────────────────┐
           │     MCP 服务执行         │
           │ - 员工信息查询          │
           │ - 考勤数据查询          │
           │ - 通知发送              │
           └──────────┬──────────────┘
                      ↓
           ┌──────────────────────────┐
           │    返回结果给 AI          │
           │   AI 整合并回复用户       │
           └──────────────────────────┘

🔧 配置说明

环境变量 (.env)

DEEPSEEK_API_KEY=sk-your-api-key

Django 配置 (settings.py)

# 数据库
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",
    }
}

前端配置 (.env.development)

VITE_BASE_URL=http://127.0.0.1:8000

📊 数据模型关系

AIUser (用户)
  ├── 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=已拒)

🔌 API 端点

认证
  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

🎓 关键技术

MCP 查询流程

用户问题
  ↓
提取上下文(最近两轮对话)
  ↓
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

交流

头像

About

基于OA系统二开的AI驱动OA系统,集成Deepseek模型

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors