# 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 **轻量级企业文档管理系统** · 版本控制 · 资源级权限 · 在线预览 · 全文检索 [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.110+-009688?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![Vue](https://img.shields.io/badge/Vue-3.4+-4FC08D?logo=vuedotjs&logoColor=white)](https://vuejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white)](https://docs.docker.com/compose/) [![Tests](https://img.shields.io/badge/tests-45%20passed-brightgreen)](#-测试) [![License](https://img.shields.io/badge/license-MIT-blue)](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