# 系统需求文档 **Repository Path**: yjsmyhome/system-requirements-document ## Basic Information - **Project Name**: 系统需求文档 - **Description**: 当前客户系统功能更改需求的提交、审批及流转过程中,核心载体为需求表(领导签字确认后扫描生成的PDF文档)。目前该类PDF文档缺乏统一的上传、存储、管理及内容检索渠道,开发组获取PDF后需手动提取时间、科室、经办、功能描述等关键信息,效率低下且易出现信息遗漏、录入错误等问题,影响系统升级的进度与准确性。为解决上述痛点,规范需求文档管理流程,提升工作效率,特开发本PDF上传存储与内容提取查询系统。 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDF 文档管理系统 一个基于 Node.js + Express + Vue.js 的 PDF 文档上传、存储、信息提取和查询系统。 ## 功能特性 ### 核心功能 - ✅ **PDF 上传存储** - 支持批量上传(最大 10MB/文件)、本地存储 - ✅ **PDF 信息自动提取** - 自动提取时间、国家、部门、事项等关键信息 - ✅ **多条件查询** - 支持按时间、国家、部门、事项等条件查询 - ✅ **Excel 导出** - 支持将查询结果导出为 Excel 文件 - ✅ **权限管理** - 三种角色(普通用户、管理员、超级管理员) - ✅ **操作日志** - 记录所有用户操作 ### 技术栈 - **后端**: Node.js + Express - **前端**: Vue.js 3 + Element Plus - **数据库**: SQLite (better-sqlite3) - **PDF 解析**: pdf-parse - **Excel 处理**: xlsx ## 快速开始 ### 1. 安装依赖 ```bash cd src npm install ``` ### 2. 初始化数据库 ```bash npm run init-db ``` 默认账户: - 超级管理员:`superadmin` / `superadmin123` - 管理员:`admin` / `admin123` - 普通用户:`user1` / `user123` ### 3. 启动服务 ```bash # 开发模式 npm run dev # 生产模式 npm start ``` 访问地址:http://localhost:3000 ## 项目结构 ``` system-requirements-document/ ├── docs/ # 需求文档 │ └── 系统需求规格.docx ├── src/ │ ├── config/ # 配置文件 │ │ └── database.js # 数据库配置 │ ├── controllers/ # 控制器 │ │ ├── AuthController.js # 认证控制器 │ │ ├── PdfController.js # PDF 控制器 │ │ ├── SearchController.js # 搜索控制器 │ │ └── UserController.js # 用户控制器 │ ├── middleware/ # 中间件 │ │ ├── auth.js # 认证中间件 │ │ ├── role.js # 角色中间件 │ │ └── logger.js # 日志中间件 │ ├── models/ # 数据模型 │ │ ├── User.js # 用户模型 │ │ ├── PdfDocument.js # PDF 文档模型 │ │ ├── PdfExtractInfo.js # 提取信息模型 │ │ └── OperationLog.js # 操作日志模型 │ ├── routes/ # 路由 │ │ ├── auth.js # 认证路由 │ │ ├── pdf.js # PDF 路由 │ │ ├── search.js # 搜索路由 │ │ ├── users.js # 用户路由 │ │ └── logs.js # 日志路由 │ ├── services/ # 服务层 │ │ └── PdfService.js # PDF 解析服务 │ ├── scripts/ # 脚本 │ │ └── init-db.js # 数据库初始化脚本 │ ├── uploads/ # 上传文件目录 │ │ └── documents/ # PDF 文档存储 │ ├── public/ # 静态文件 │ │ ├── index.html # 前端页面 │ │ ├── css/ │ │ │ └── style.css # 样式文件 │ │ └── js/ │ │ └── app.js # 前端逻辑 │ ├── .env # 环境变量 │ ├── .env.example # 环境变量示例 │ ├── package.json │ └── server.js # 服务器入口 └── README.md ``` ## API 接口 ### 认证接口 - `POST /api/auth/login` - 用户登录 - `GET /api/auth/me` - 获取当前用户信息 - `PUT /api/auth/change-password` - 修改密码 ### PDF 接口 - `POST /api/pdf/upload` - 上传 PDF 文件 - `GET /api/pdf` - 获取 PDF 列表 - `GET /api/pdf/:id` - 获取 PDF 详情 - `GET /api/pdf/:id/download` - 下载 PDF 文件 - `DELETE /api/pdf/:id` - 删除 PDF 文件 - `PUT /api/pdf/:id/extract-info` - 更新提取信息 ### 搜索接口 - `GET /api/search/search` - 高级搜索 - `GET /api/search/export` - 导出 Excel - `GET /api/search/stats` - 获取统计信息 ### 用户管理接口(仅管理员) - `GET /api/users` - 获取用户列表 - `POST /api/users` - 创建用户 - `PUT /api/users/:id` - 更新用户 - `DELETE /api/users/:id` - 删除用户 ### 日志接口 - `GET /api/logs` - 获取操作日志(仅管理员) - `GET /api/logs/my` - 获取我的操作日志 ## 数据库设计 ### sys_user - 用户表 | 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键 | | username | TEXT | 用户名(唯一) | | password | TEXT | 密码(bcrypt 加密) | | role | TEXT | 角色(user/admin/superadmin) | | real_name | TEXT | 真实姓名 | | department | TEXT | 部门 | | created_at | DATETIME | 创建时间 | | is_active | INTEGER | 是否启用 | ### pdf_document - PDF 文档表 | 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键 | | filename | TEXT | 存储文件名 | | original_name | TEXT | 原始文件名 | | file_path | TEXT | 文件路径 | | file_size | INTEGER | 文件大小 | | upload_user_id | TEXT | 上传用户 ID | | upload_time | DATETIME | 上传时间 | | status | TEXT | 状态 | | delete_flag | INTEGER | 删除标记 | ### pdf_extract_info - PDF 提取信息表 | 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键 | | pdf_id | TEXT | PDF 文档 ID | | submit_time | DATETIME | 提交时间 | | country | TEXT | 国家 | | department | TEXT | 部门 | | matter | TEXT | 事项 | | remark | TEXT | 备注 | | extract_status | TEXT | 提取状态 | | is_manual | INTEGER | 是否手动编辑 | ### sys_operation_log - 操作日志表 | 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键 | | user_id | TEXT | 用户 ID | | username | TEXT | 用户名 | | action | TEXT | 操作类型 | | module | TEXT | 模块 | | content | TEXT | 内容 | | ip_address | TEXT | IP 地址 | | user_agent | TEXT | 用户代理 | | created_at | DATETIME | 创建时间 | ## 环境变量 ```bash # 服务器配置 PORT=3000 HOST=localhost # JWT 配置 JWT_SECRET=your-secret-key JWT_EXPIRE=24h # 文件上传配置 MAX_FILE_SIZE=10485760 UPLOAD_PATH=./uploads/documents # 数据库配置 DB_PATH=./data/database.sqlite ``` ## 开发说明 ### 运行开发服务器 ```bash npm run dev ``` ### 初始化数据库 ```bash npm run init-db ``` ### 生产部署 ```bash npm start ``` ## 安全说明 1. **请及时修改默认密码** 2. **生产环境请修改 JWT_SECRET** 3. **建议配置 HTTPS** 4. **定期备份数据库文件** ## 许可证 ISC ## 更新日志 ### v1.0.0 (2024-03-14) - 初始版本发布 - 实现 PDF 上传、存储、信息提取功能 - 实现多条件查询和 Excel 导出 - 实现用户权限管理 - 实现操作日志记录