MrDoc 项目框架分析

MrDoc 是一个基于 Django 的在线文档管理系统(类似语雀/Notion)。以下是完整的项目架构分析:


📁 项目结构总览

MrDoc-mod/
├── MrDoc/              # Django 主配置目录
│   ├── settings.py     # 核心配置(数据库、中间件、APP注册等)
│   ├── urls.py         # 根路由分发
│   └── wsgi.py         # WSGI 入口
├── app_admin/          # 管理后台 APP(用户、设置、图片/附件管理)
├── app_doc/            # 文档核心 APP(文集、文档、标签、分享、搜索)
├── app_api/            # API 接口 APP(Token认证、RESTful API)
├── app_ai/             # AI 接入 APP(文本生成、Dify配置)
├── config/             # 配置文件
│   ├── config.ini      # 站点配置(数据库、调试模式等)
│   └── uwsgi.ini       # uWSGI 生产服务器配置
├── template/           # 前端模板(Django Templates)
├── static/             # 静态资源(JS/CSS/字体/图标)
├── database/           # SQLite 数据库文件
├── media/              # 用户上传文件(图片、附件)
├── locale/             # 国际化翻译文件(zh-hans/zh-hant/en)
├── whoosh_index/       # 全文搜索索引
├── docker_mrdoc.sh     # Docker 启动脚本
├── Dockerfile          # Docker 构建文件
└── docker-compose.yml  # Docker Compose 编排

🏗️ 四层架构

层级说明
MrDoc/Django 主配置层:路由分发、数据库/缓存/中间件配置
app_admin/管理后台层:用户管理、系统设置、注册码、图片/附件管理
app_doc/文档业务层:文集(Project)、文档(Doc)、标签(Tag)、分享(Share)、搜索
app_api/API 接口层:Token 认证、RESTful API、第三方客户端接入
app_ai/AI 扩展层:Dify 平台接入、AI 文本生成

🗄️ 核心数据模型

模型所属APP说明
UserDjango内置用户(支持用户名/邮箱登录)
SysSettingapp_admin系统设置键值对(站点名、邮箱配置等)
RegisterCodeapp_admin注册邀请码
UserOptionsapp_admin用户个性化设置(编辑器偏好)
Projectapp_doc文集(权限:公开/私密/指定用户/访问码)
Docapp_doc文档(支持三级目录层级、4种编辑器)
DocHistoryapp_doc文档历史版本
DocShareapp_doc文档分享(公开/私密)
Tag / DocTagapp_doc标签系统
Image / Attachmentapp_doc图片/附件素材管理
ProjectCollaboratorapp_doc文集协作成员
MyCollectapp_doc用户收藏

🔗 路由体系

路径前缀所属APP功能
/app_doc首页、文集浏览、文档浏览
/login/ /register/app_admin.views登录/注册
/admin/app_admin后台管理(用户/文集/文档/设置)
/api/app_apiToken API(第三方客户端)
/api_app/app_apiRESTful API
/ai/app_aiAI 配置与生成
/media/Django serve用户上传文件访问
/sitemap.xmlapp_doc站点地图

🔐 权限体系

  1. 超级管理员@superuser_only 装饰器,可管理所有用户、文集、文档、系统设置
  2. 文集权限:公开(0) / 私密(1) / 指定用户(2) / 访问码(3)
  3. 协作权限:普通协作(可新建/修改自己的文档) / 高级协作(可修改所有文档)
  4. 全站登录:通过 RequiredLoginMiddleware 中间件控制
  5. API认证AppAuth / AppMustAuth 基于 Token 的认证

🛠️ 技术栈

技术用途
Django 2.1+Web 框架
SQLite/MySQL/PostgreSQL数据库(config.ini 配置)
Whoosh + Haystack全文搜索引擎
uWSGI生产级 WSGI 服务器
Layui + PearAdminLayui后台管理 UI
Vditor / Editor.md / iceEditor前端编辑器
Django REST FrameworkAPI 接口
Docker容器化部署
Loguru日志记录
Cryptography敏感数据加密

🐳 Docker 部署流程

Dockerfile (构建) → docker-compose.yml (编排) → docker_mrdoc.sh (启动)
                                                      │
                                                      ├─ migrate (建表)
                                                      ├─ 创建超级管理员 (admin/admin)
                                                      ├─ rebuild_index (搜索索引)
                                                      └─ uwsgi (启动服务:10086)
浏览 75
点赞 0