# admin-platform **Repository Path**: qiuanshmily/admin-platform ## Basic Information - **Project Name**: admin-platform - **Description**: 基于 HTML5 + jQuery + Bootstrap + 原生JavaScript 的轻量级管理平台,专为测评系统设计 - **Primary Language**: HTML - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2026-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 管理平台 基于 HTML5 + jQuery + Bootstrap + 原生JavaScript 的轻量级管理平台,专为测评系统设计。 ## 技术栈 - **前端**: HTML5 + jQuery + Bootstrap 5 + Bootstrap Icons + 原生JavaScript - **后端**: Node.js + Express.js + EJS模板引擎 - **数据库**: PostgreSQL (复用现有数据库连接) - **认证**: JWT Token + bcryptjs密码加密 - **日志**: Winston日志系统 - **依赖管理**: npm + package.json ## 核心功能模块 ### 1. 用户管理模块 - 用户列表查看与搜索 - 用户信息编辑与更新 - 用户新增功能 - 用户状态管理(激活/暂停) - 批量用户操作 - 用户角色权限管理 ### 2. 题目管理模块 - 题目列表展示与分页 - 题目创建、编辑、删除 - 支持多种题型:单选题、多选题、判断题、简答题 - 题目选项管理 - 正确答案设置与验证 - 批量题目操作 ### 3. 测评管理模块 - 测评列表管理 - 测评状态监控 - 测评结果统计 - 测评数据导出 ### 4. 数据统计模块 - 用户数据统计(总用户数、活跃用户、新增用户) - 测评数据统计(完成率、平均分、参与度) - 系统运行状态监控 - 实时数据图表展示 ### 5. 系统管理模块 - 管理员登录认证 - 系统配置管理 - 日志查看与分析 - 数据库连接状态监控 ## 快速开始 ### 环境要求 - Node.js >= 14.0.0 - PostgreSQL数据库 - 后端API服务(端口3000) ### 安装与启动 1. **安装依赖** ```bash cd admin-platform npm install ``` 2. **配置环境变量** 创建 `.env` 文件并配置: ```env PORT=3001 JWT_SECRET=your-jwt-secret-key DATABASE_URL=postgresql://username:password@localhost:5432/database_name ``` 3. **启动服务** ```bash npm start # 或开发模式 npm run dev ``` 4. **访问管理平台** 打开浏览器访问:`http://localhost:3001` ### 管理员登录 - 默认管理员账号需在数据库user表中设置platform字段为9 - 支持JWT Token认证 - 密码使用bcryptjs加密存储 ## 目录结构 ``` admin-platform/ ├── config/ # 配置文件 │ ├── database.js # 数据库配置 │ ├── logger.js # 日志配置 │ └── migrations/ # 数据库迁移脚本 ├── middleware/ # 中间件 │ └── auth.middleware.js # 认证中间件 ├── public/ # 静态资源 │ ├── css/ # 样式文件 │ │ ├── admin.css │ │ ├── assessments.css │ │ ├── dashboard.css │ │ ├── login.css │ │ ├── questions.css │ │ └── users.css │ └── js/ # JavaScript文件 │ ├── assessments.js │ ├── common.js │ ├── dashboard.js │ ├── levelquestions.js │ ├── login.js │ ├── passlevels.js │ ├── questions.js │ ├── user-edit.js │ └── users.js ├── routes/ # 后端路由 │ └── api.js # API路由处理 ├── scripts/ # 脚本文件 │ └── migrate.js # 数据库迁移脚本 ├── views/ # HTML页面模板 │ ├── assessments.html # 测评管理页面 │ ├── dashboard.html # 仪表盘页面 │ ├── levelquestions.html # 关卡题目管理页面 │ ├── login.html # 登录页面 │ ├── passlevels.html # 通关关卡管理页面 │ ├── questions.html # 题目管理页面 │ ├── user-edit.html # 用户编辑页面 │ └── users.html # 用户管理页面 ├── logs/ # 日志文件目录 ├── .env # 环境变量配置 ├── package.json # 项目配置 └── app.js # 主应用文件 ``` ## API接口文档 ### 认证相关 - `POST /api/admin/login` - 管理员登录 - `GET /api/admin/verify` - 验证管理员Token - `GET /api/admin/verify-token` - 验证管理员Token (兼容前端调用) - `POST /api/admin/logout` - 管理员退出登录 ### 用户管理 - `GET /api/admin/users` - 获取用户列表 - `GET /api/admin/users/:id` - 获取用户详情 - `POST /api/admin/users` - 新增用户 - `PUT /api/admin/users/:id` - 更新用户信息 - `POST /api/admin/users/batch-update-status` - 批量更新用户状态 ### 题目管理 - `GET /api/questions` - 获取题目列表 - `GET /api/questions/:id` - 获取题目详情 - `POST /api/questions` - 创建题目 - `PUT /api/questions/:id` - 更新题目 - `DELETE /api/questions/:id` - 删除题目 - `DELETE /api/questions/bulk-delete` - 批量删除题目 ### 测评管理 - `GET /api/assessments` - 获取测评列表 - `GET /api/assessments/:id` - 获取测评详情 - `POST /api/assessments` - 创建测评 - `PUT /api/assessments/:id` - 更新测评 - `DELETE /api/assessments/:id` - 删除测评 - `PATCH /api/assessments/:id/status` - 更新测评状态 - `GET /api/assessment/categories` - 获取测评分类列表 - `GET /api/assessments/simple` - 获取简化版测评列表(用于下拉框选项) ### 关卡管理 - `GET /admin/passlevels` - 获取关卡列表 - `GET /admin/passlevels/:id` - 获取关卡详情 - `POST /admin/passlevels` - 创建关卡 - `PUT /admin/passlevels/:id` - 更新关卡 - `DELETE /admin/passlevels/:id` - 删除关卡 - `POST /admin/passlevels/batch-update-status` - 批量更新关卡状态 - `POST /admin/passlevels/batch-delete` - 批量删除关卡 ### 关卡题目关联 - `GET /levelquestions` - 获取关卡题目关联关系列表 - `GET /levelquestions/:id` - 获取关卡题目关联关系详情 - `POST /levelquestions` - 创建关卡题目关联关系 - `PUT /levelquestions/:id` - 更新关卡题目关联关系 - `DELETE /levelquestions/:id` - 删除关卡题目关联关系 - `DELETE /levelquestions/batch` - 批量删除关卡题目关联关系 ### 数据统计 - `GET /api/admin/statistics` - 获取统计数据 - `GET /api/admin/activities` - 获取最近活动 - `GET /api/admin/system-info` - 获取系统信息 - `GET /stats` - 获取系统统计数据 - `GET /stats/activity` - 获取用户活跃度统计 ## 数据库设计 ### 用户表 (users) - id: 用户ID - username: 用户名 - password: 加密密码 - email: 邮箱 - phone: 手机号 - platform: 平台标识(9为管理员) - status: 用户状态 - create_time: 创建时间 - update_time: 更新时间 - last_login_at: 最后登录时间 ### 题目表 (questions) - id: 题目ID - content: 题目内容 - options: 选项(JSON格式) - correct_answer: 正确答案 - type: 题目类型 - analysis: 解析 - level: 难度等级 - sort: 排序 - create_time: 创建时间 - update_time: 更新时间 ### 关卡表 (pass_levels) - id: 关卡ID - level_number: 关卡编号 - title: 关卡标题 - description: 关卡描述 - question_count: 题目数量 - difficulty_level: 难度等级 - time_limit: 时间限制 - credits_reward: 学分奖励 - created_at: 创建时间 - updated_at: 更新时间 ### 关卡题目关联表 (level_questions) - id: 关联关系ID - level_id: 关卡ID - question_id: 题目ID - question_order: 题目顺序 ## 开发计划 ### 1. 完善用户新增功能计划 #### 1.1 需求分析 当前系统已经实现了用户管理的大部分功能,包括用户列表查看、搜索、编辑和状态管理,但缺少用户新增功能。根据现有代码逻辑,需要补充完整的用户新增功能。 #### 1.2 实现内容 **数据库层** - 在 `config/database.js` 中添加 `createUser` 函数,用于向数据库中插入新用户记录 - 实现密码加密功能,使用 bcrypt 对用户密码进行加密存储 - 确保新增用户的 platform 字段设置为 9(管理平台用户) **API 层** - 在 `routes/api.js` 中添加 POST 方法的 `/admin/users` 接口,用于接收用户新增请求 - 实现请求参数验证,确保必填字段(用户名、密码、邮箱)完整 - 实现用户名唯一性检查,避免重复用户 - 返回新增用户的完整信息 **前端页面** - 检查 `views/users.html` 页面,添加用户新增按钮 - 实现用户新增模态框,包含用户名、密码、邮箱、电话等字段 - 实现表单验证,确保输入数据格式正确 - 添加提交按钮和取消按钮,处理表单提交和关闭逻辑 **前端 JavaScript** - 在 `public/js/users.js` 中添加用户新增相关的 JavaScript 逻辑 - 实现模态框的显示和隐藏 - 实现表单数据的收集和验证 - 实现 AJAX 请求,调用后端 API 新增用户 - 实现新增成功后的页面刷新和提示 #### 1.3 技术细节 - 使用 bcrypt 对用户密码进行加密存储,确保密码安全 - 实现完整的输入验证,包括必填字段检查、格式验证和唯一性检查 - 遵循现有代码的风格和结构,保持代码一致性 - 添加适当的错误处理和日志记录 - 确保新增功能与现有功能无缝集成 ### 2. 评测管理模块批量导入功能开发计划 #### 2.1 功能需求分析 **核心功能** - 支持通过Excel/CSV文件批量导入题目数据 - 自动维护题目管理、关卡管理及关卡题目维护三者之间的关联关系 - 支持断点续传、错误数据隔离处理及导入结果日志记录 - 保证数据一致性和完整性 **数据导入规则** - 支持Excel(.xlsx)和CSV(.csv)两种文件格式 - 单次导入文件大小限制:10MB - 支持最多5000条数据/次导入 - 支持断点续传,导入中断后可从断点继续 #### 2.2 系统架构设计 **模块划分** | 模块 | 主要功能 | 技术栈 | |------|----------|--------| | 前端文件上传模块 | 文件选择、上传、进度展示 | jQuery + Bootstrap | | 后端文件处理模块 | 文件解析、数据校验、批量导入 | Node.js + Express + Multer + xlsx + csv-parser | | 数据导入核心模块 | 事务处理、批量插入、关联维护 | Node.js + PostgreSQL事务 + 批量插入策略 | | 导入任务管理模块 | 任务创建、断点续传、状态监控 | Redis + 任务队列 | | 日志管理模块 | 导入结果记录、错误日志 | Winston日志系统 | **接口设计** | 接口 | 方法 | 功能 | 权限 | |------|------|------|------| | /api/admin/questions/batch-import | POST | 上传并开始导入 | 管理员 | | /api/admin/questions/import-status/:taskId | GET | 查询导入状态 | 管理员 | | /api/admin/questions/import-logs/:taskId | GET | 获取导入日志 | 管理员 | | /api/admin/questions/import-template | GET | 下载导入模板 | 管理员 | | /api/admin/questions/import-resume/:taskId | POST | 断点续传 | 管理员 | #### 2.3 数据库设计 **新增表结构** **导入任务表 (import_tasks)** - id: UUID PRIMARY KEY - filename: VARCHAR(255) NOT NULL - total_rows: INTEGER DEFAULT 0 - processed_rows: INTEGER DEFAULT 0 - success_rows: INTEGER DEFAULT 0 - failed_rows: INTEGER DEFAULT 0 - status: VARCHAR(20) DEFAULT 'pending' -- pending, processing, completed, failed, paused - error_message: TEXT - created_at: TIMESTAMP DEFAULT NOW() - updated_at: TIMESTAMP DEFAULT NOW() **导入错误表 (import_errors)** - id: SERIAL PRIMARY KEY - task_id: UUID REFERENCES import_tasks(id) ON DELETE CASCADE - row_number: INTEGER NOT NULL - error_type: VARCHAR(50) NOT NULL - error_message: TEXT NOT NULL - raw_data: JSONB NOT NULL - created_at: TIMESTAMP DEFAULT NOW() #### 2.4 前端交互设计 **文件上传界面** - 拖放区域 + 点击上传按钮 - 支持文件类型和大小校验 - 显示上传进度条 - 提供导入模板下载链接 **导入进度展示** - 实时显示已处理条数/总条数 - 显示成功/失败/跳过条数 - 导入状态实时更新 - 支持暂停/继续/取消操作 **错误提示机制** - 导入完成后显示详细错误报告 - 支持下载错误日志 - 错误数据高亮显示 - 提供错误原因和修复建议 #### 2.5 后端处理逻辑 **文件解析** - 使用 `xlsx` 库解析Excel文件 - 使用 `csv-parser` 库解析CSV文件 - 支持自定义分隔符(CSV) - 支持首行作为表头 **数据验证** - 字段类型验证 - 必填项验证 - 业务规则验证 - 唯一性验证 - 格式验证(JSON字段) **事务处理** - 使用PostgreSQL事务确保数据一致性 - 每个关卡的导入作为一个独立事务 - 支持部分成功,失败数据隔离 - 事务回滚机制 **批量插入策略** - 采用批量插入,每100条数据作为一个批次 - 使用 `COPY` 命令提高插入效率 - 支持异步插入,不阻塞主线程 - 监控数据库连接池状态 #### 2.6 测试计划 **单元测试** - 文件解析功能测试 - 数据验证逻辑测试 - 事务处理测试 - 批量插入性能测试 **集成测试** - 完整导入流程测试 - 断点续传功能测试 - 错误处理机制测试 - 并发导入测试 **性能测试** - 单文件5000条数据导入测试 - 10并发导入测试 - 大数据量导入时间测试 - 内存使用情况监控 #### 2.7 部署方案及数据安全措施 **部署方案** - 使用Docker容器化部署 - 配置Nginx作为反向代理 - 配置文件上传目录权限 - 配置日志旋转 **数据安全措施** - 文件上传前进行病毒扫描 - 输入数据严格校验,防止SQL注入 - 敏感数据加密存储 - 导入日志详细记录,便于审计 - 定期备份导入数据 ## 开发说明 ### 前端开发 - 使用Bootstrap 5响应式布局 - jQuery处理DOM操作和AJAX请求 - 原生JavaScript处理业务逻辑 - 支持移动端适配 ### 后端开发 - Express.js框架处理HTTP请求 - EJS模板引擎渲染页面 - Winston记录系统日志 - 统一的错误处理机制 ### 安全特性 - JWT Token认证 - bcryptjs密码加密 - SQL注入防护 - XSS攻击防护 - CSRF防护 ## 版本信息 - **当前版本**: 1.0.0 - **Node.js版本**: >=14.0.0 - **数据库**: PostgreSQL - **最后更新**: 2025年12月 ## 技术支持 如有问题请联系系统管理员或查看系统日志文件。