# DMS 文档管理系统
**Repository Path**: MerlinRong/DMS
## Basic Information
- **Project Name**: DMS 文档管理系统
- **Description**: 企业内部非结构化数据(文档)管理混乱,缺乏统一的版本控制与权限体系。本项目旨在构建一个轻量、高性能的文档管理平台,解决文件存储分散、版本回溯困难、预览依赖本地软件等痛点。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-10-06
- **Last Updated**: 2026-10-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# DMS
**轻量级企业文档管理系统** · 版本控制 · 资源级权限 · 在线预览 · 全文检索
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://vuejs.org/)
[](https://www.typescriptlang.org/)
[](https://docs.docker.com/compose/)
[](#-测试)
[](LICENSE)
---
## ✨ 特性
- 📤 **上传体验** — MD5 秒传、分片断点续传、批量拖拽上传,相同内容物理去重
- 🌲 **目录树** — 无限层级懒加载、拖拽移动/排序、物化路径加速子树查询
- 🔐 **权限模型** — RBAC + 资源级 ACL:继承 / DENY 优先 / Override 截断,SQL 层防越权
- 🕘 **版本控制** — 完整版本链、回滚生成新副本(不覆盖历史)、文本 Diff、变更说明
- 👁 **在线预览** — 图片 / PDF / 纯文本(语法高亮)/ Office(KKFileView 转码)
- 🔎 **全文检索** — 标题 + 正文组合检索、关键词高亮、多维度筛选、异步索引
- 🗑 **回收站** — 软删除保留 30 天、按原路径还原、引用计数清理物理对象
- 🔗 **外部分享** — 带密码与有效期的受限访问链接
## 🧰 技术栈
| 层 | 技术 |
| --- | --- |
| 后端 | FastAPI · SQLAlchemy 2.0 (async) · Celery · Redis |
| 前端 | Vue 3 (Composition API) · TypeScript (Strict) · Element Plus · Pinia · Vite |
| 存储 | PostgreSQL 15 (tsvector + pg_trgm) · MinIO (S3) · SQLite/本地存储(开发模式) |
| 部署 | Docker Compose · Nginx · KKFileView |
## 🚀 快速开始
### 后端
```powershell
cd backend
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# 可选:切换生产配置(默认 SQLite + 本地存储,开箱即用)
# copy ..\.env.example ..\.env
uvicorn app.main:app --reload # 首次启动自动建表并写入种子数据
```
> 默认管理员:`admin` / `admin123`
| 地址 | 说明 |
| --- | --- |
| `http://localhost:8000/docs` | Swagger / OpenAPI 文档 |
| `http://localhost:8000/api/v1/health` | 健康检查 |
### 前端
```powershell
cd frontend
npm install
npm run dev # http://localhost:5173(已配置 /api 代理)
```
## 🐳 部署
```bash
cp .env.example .env # 修改数据库密码与 JWT_SECRET
cd frontend && npm run build && cd .. # 构建前端静态产物
docker compose -f deploy/docker-compose.yml up -d --build
```
Nginx 强制 HTTPS(SRS 4.2),TLS 证书放置于 `deploy/nginx/ssl/`。
编排包含 7 个服务(nginx / api / worker / postgres / redis / minio / kkfileview),全部配置 `healthcheck` 与 `restart: always`。
## 📦 功能覆盖
对应需求规格说明书(SRS)需求 ID:
| 模块 | 需求 | 说明 |
| --- | :---: | --- |
| 文档管理 | `DOC-01~04` | MD5 秒传、分片断点续传、下载审计、回收站 30 天、标签/备注/星标 |
| 目录树 | `TREE-01~03` | 无限层级懒加载、拖拽移动/排序、目录 CRUD |
| 权限控制 | `AUTH-01~04` | RBAC + 资源级 ACL(继承/DENY/override)、分享链接 |
| 版本控制 | `VER-01~04` | 版本链、回滚生成新副本、文本 Diff、changelog |
| 在线预览 | `PRE-01~04` | 图片/PDF/文本(语法高亮)/Office(KKFileView 转码) |
| 全文搜索 | `SRC-01~04` | 组合检索、高亮、筛选、异步索引 |
## ✅ 测试
```powershell
# 后端(pytest,42 用例:权限矩阵 / 越权边界 / 上传完整性 / 回收站引用计数)
cd backend && pytest tests -q
# 前端(vitest + vue-tsc 严格检查)
cd frontend && npm run test && npm run lint
```
## 📁 目录结构
```
DMS/
├── backend/ # FastAPI 后端(api → services → repositories 分层)
│ ├── app/
│ ├── alembic/
│ └── tests/
├── frontend/ # Vue3 SPA
│ ├── src/ # api / stores / views / components / utils
│ └── tests/
├── deploy/ # docker-compose.yml 与 nginx 配置
└── docs/ # 设计文档(本地维护)
```
## 📚 文档
- [需求规格说明书 (SRS)](.codebuddy/docs/SRS_DMS_v1.0.md)
- [系统设计文档 (SDD)](.codebuddy/docs/SDD_DMS_v1.0.md)
- [编码实施方案](.codebuddy/docs/Implementation_Plan_DMS_v1.0.md)
## 🤝 贡献
1. Fork 本仓库并创建特性分支(`git checkout -b feat/xxx`)
2. 提交前确保 `pytest`、`vitest`、`vue-tsc` 全部通过
3. Commit Message 遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/),并标注对应需求 ID
## 📄 License
[MIT](LICENSE) © 2026 DMS Contributors