MrDoc 项目框架分析
|
字数总计:
3483
|
阅读时长:
2分钟
|
阅读量:
32
这篇文章距离最后更新已过20 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
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 | 说明 |
|---|
User | Django内置 | 用户(支持用户名/邮箱登录) |
SysSetting | app_admin | 系统设置键值对(站点名、邮箱配置等) |
RegisterCode | app_admin | 注册邀请码 |
UserOptions | app_admin | 用户个性化设置(编辑器偏好) |
Project | app_doc | 文集(权限:公开/私密/指定用户/访问码) |
Doc | app_doc | 文档(支持三级目录层级、4种编辑器) |
DocHistory | app_doc | 文档历史版本 |
DocShare | app_doc | 文档分享(公开/私密) |
Tag / DocTag | app_doc | 标签系统 |
Image / Attachment | app_doc | 图片/附件素材管理 |
ProjectCollaborator | app_doc | 文集协作成员 |
MyCollect | app_doc | 用户收藏 |
🔗 路由体系
| 路径前缀 | 所属APP | 功能 |
|---|
/ | app_doc | 首页、文集浏览、文档浏览 |
/login/ /register/ | app_admin.views | 登录/注册 |
/admin/ | app_admin | 后台管理(用户/文集/文档/设置) |
/api/ | app_api | Token API(第三方客户端) |
/api_app/ | app_api | RESTful API |
/ai/ | app_ai | AI 配置与生成 |
/media/ | Django serve | 用户上传文件访问 |
/sitemap.xml | app_doc | 站点地图 |
🔐 权限体系
- 超级管理员:
@superuser_only 装饰器,可管理所有用户、文集、文档、系统设置 - 文集权限:公开(0) / 私密(1) / 指定用户(2) / 访问码(3)
- 协作权限:普通协作(可新建/修改自己的文档) / 高级协作(可修改所有文档)
- 全站登录:通过
RequiredLoginMiddleware 中间件控制 - 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 Framework | API 接口 |
| Docker | 容器化部署 |
| Loguru | 日志记录 |
| Cryptography | 敏感数据加密 |
🐳 Docker 部署流程
Dockerfile (构建) → docker-compose.yml (编排) → docker_mrdoc.sh (启动)
│
├─ migrate (建表)
├─ 创建超级管理员 (admin/admin)
├─ rebuild_index (搜索索引)
└─ uwsgi (启动服务:10086)