SCIDraw 科研绘图平台

高校私有化部署招标技术参数文档
版本 v1.0  |  2026 年 5 月 29 日  |  www.scidraw.cn

1项目概述

1.1 平台简介

SCIDraw(科研绘图平台)是一套面向高校科研院所的专业在线科研插图绘制与管理平台。平台提供浏览器端矢量画布编辑器(基于 Fabric.js)、AI 智能生图、模板中心、素材库管理、协作绘图、PPT 生成、学术论坛等核心功能,支持多用户并发使用。

1.2 部署模式

本次采购为私有化部署方案,即将 SCIDraw 平台完整部署于采购方(高校)指定的服务器或私有云环境中,所有数据(用户数据、项目文件、素材资源等)存储在本地,不经过任何第三方服务器,确保数据安全与隐私合规。

1.3 适用场景

  • 高校图书馆公共科研绘图服务
  • 院系实验室科研插图教学与创作平台
  • 研究生/博士后科研绘图培训与协作
  • 校级科研支撑服务平台

2技术架构

2.1 总体架构

层级技术栈说明
前端React 18 + TypeScript + Vite 5 + Fabric.js 5SPA 单页应用,Vite 构建产物由后端 Express 静态托管
后端Node.js 18+ + Express 4RESTful API + WebSocket(Socket.io 4)
数据库MySQL 8.0(utf8mb4)30+ 数据表,InnoDB 引擎
缓存Redis 6.0+ 推荐热数据缓存、会话管理、限流计数
进程管理PM2 5.0+Cluster 集群模式,支持热重启、日志管理
反向代理Nginx 1.20+HTTPS 终止、WebSocket 代理、静态资源加速
AI 服务智谱 GLM / MiniMax 可选可替换为校内自建模型

2.2 系统架构图

┌──────────────────────────────────────────────────────┐ │ 用户浏览器 │ │ React SPA + Fabric.js 画布引擎 │ └──────────────────────┬───────────────────────────────┘ │ HTTPS / WebSocket ┌──────────────────────▼───────────────────────────────┐ │ Nginx 反向代理 │ │ SSL 终止 · 静态资源 · WebSocket 代理 │ └──────────────────────┬───────────────────────────────┘ │ ┌──────────────────────▼───────────────────────────────┐ │ PM2 Cluster (Node.js) │ │ Express API + Socket.io + 定时任务 │ │ ┌──────────┬──────────┬──────────┐ │ │ │ 实例 1 │ 实例 2 │ 实例 N │ │ │ └──────────┴──────────┴──────────┘ │ └───────┬─────────────┬────────────────┬───────────────┘ │ │ │ ┌───────▼──────┐ ┌────▼──────┐ ┌──────▼──────────────┐ │ MySQL 8.0 │ │ Redis │ │ 本地文件存储 │ │ 30+ 数据表 │ │ 缓存服务 │ │ 素材/头像/模板/PPT │ └──────────────┘ └───────────┘ └─────────────────────┘

3硬件服务器配置要求

3.1 配置方案

基础版
50 并发
CPU
4 核
内存
8 GB
系统盘
50 GB SSD
数据盘
100 GB SSD
网络
10 Mbps
标准版
200 并发(推荐)
CPU
8 核
内存
16 GB
系统盘
100 GB SSD
数据盘
500 GB SSD
网络
100 Mbps
集群版
500+ 并发
应用服务器
2 台 x 8 核 16 GB
数据库服务器
1 台 x 8 核 32 GB
Redis 服务器
1 台 x 4 核 8 GB
文件存储
NAS/NFS 2 TB
负载均衡
Nginx 或硬件 LB

3.2 素材库存储估算

数据类别初始大小年增长量说明
系统图标库~1.5 GB~200 MBSVG/PNG 科研素材图标(5000+)
系统模板数据~100 MB~50 MB模板画布 JSON + 缩略图
用户项目数据0~5 GB/百人/年画布数据存储于 MySQL
用户上传文件0~10 GB/百人/年自定义素材、头像、PPT 等
博客/论坛图片0~1 GB/年内容运营图片

4软件环境要求

4.1 操作系统与基础环境

软件版本要求用途部署方式
操作系统CentOS 7+ / Ubuntu 20.04+ / Rocky Linux 8+服务器操作系统裸机或虚拟机
Node.jsv18.x LTS(推荐 v22.x)后端运行时nvm 或包管理器
npmv10+包管理随 Node.js 安装
PM2v5.0+进程管理npm install -g pm2
MySQL8.0+(utf8mb4)关系型数据库自建或 RDS
Redis6.0+缓存服务自建或云服务
Nginx1.20+反向代理包管理器安装

4.2 SSL 证书

要求说明
用途HTTPS 加密访问
类型单域名或通配符证书
来源Let's Encrypt(免费自动续签)或商业证书
域名需采购方提供独立域名(如 draw.university.edu.cn

4.3 第三方服务(按需选配)

说明:私有化部署场景下,平台核心功能(画布编辑、素材库、模板、项目管理、协作、论坛)不依赖任何外部第三方服务即可完整运行。
服务用途必须备选方案
AI 大模型 APIAI 智能生图、智能客服智谱 GLM / MiniMax / 校内自建模型
邮件服务注册验证、通知、密码重置校内 SMTP / 阿里云邮件推送
微信支付VIP 订阅付费支付宝 / 关闭付费功能
支付宝VIP 订阅付费微信支付 / 关闭付费功能
微信 OAuth扫码登录邮箱+密码登录
对象存储大文件存储本地文件系统

5功能模块清单

5.1 核心功能(标配)

模块功能描述技术实现
画布编辑器矢量画布编辑,支持拖拽、缩放、旋转、对齐、图层管理、撤销/重做Fabric.js 5,支持高清 2x 渲染
素材库5000+ 科研插图 SVG 素材,支持分类浏览、关键词搜索、拖入画布SVG 签名防盗链,Redis 缓存加速
模板中心预设科研模板(Nature/Science 风格),一键套用模板审核、缩略图自动生成
项目管理创建/删除/重命名项目,文件夹组织,版本历史(每项目最多 50 版本)自动保存 5 分钟节流,手动保存即创建版本
协作绘图实时多人协作编辑同一画布,光标追踪Socket.io WebSocket 增量同步
导出功能PNG / JPG / SVG / PDF 多格式导出,支持 DPI 自定义(72~600)Canvas toBlob + jsPDF
LaTeX 公式KaTeX 渲染数学公式并插入画布KaTeX 0.16
分子结构式SMILES 输入 → RDKit.js 渲染 2D 分子结构 → 插入画布RDKit WASM,22 个快捷模板
注册/登录邮箱注册、密码登录、JWT Token 鉴权bcrypt 加密,7 天 Token 有效期
用户管理个人信息、头像、密码修改、邮箱验证RESTful API
后台管理用户管理、素材管理、模板审核、订单管理、系统统计管理员角色权限控制
论坛/问答校内科研绘图交流论坛,支持发帖、回复、点赞Markdown 富文本
博客系统教程发布、功能更新、公告通知Markdown + GFM 表格
数据统计PV/UV/用户活跃度/功能使用频次按日聚合,管理员可视化面板
安全防护速率限制、恶意路径拦截、IP 黑名单、SVG 防盗链分层中间件防护

5.2 增强功能(选配)

模块功能描述前置依赖
AI 智能生图文字描述生成科研插图 SVG(支持编辑)AI 大模型 API
AI 智能客服自动回答使用问题,复杂问题转人工AI 大模型 API
AI 生成 PPT根据主题自动生成科研汇报 PPTAI 大模型 API
VIP 订阅会员分级、积分体系、有效期管理支付渠道
支付集成微信支付、支付宝在线支付商户资质
微信登录扫码登录/绑定微信开放平台
邀请裂变邀请码分享、注册奖励积分
邮件营销定时邮件推送、活动通知邮件服务

5.3 画布编辑器详细功能

功能说明
基础绘图矩形、圆形、三角形、直线、箭头、自由绘制
折线工具中点锚点无限二分折线、鱼骨叉装饰物
文字编辑富文本、字体选择、大小、颜色、对齐
图片导入PNG/JPG/SVG/TIFF 拖入画布,自动适配大小
渐变填充线性/径向渐变,色阶拾色器
对齐分布左/右/上/下/水平居中/垂直居中/等间距分布
图层管理上移/下移/置顶/置底/锁定/隐藏
撤销/重做无限步撤销重做栈
智能缩放自动适配画布,支持 100%~1000% 缩放
画布尺寸A4/Letter/自定义尺寸,预设期刊投稿尺寸
裁切/蒙版对象裁切、clipPath 蒙版

6后台管理系统

6.1 用户管理

功能描述
用户列表查看所有注册用户,支持搜索/筛选/分页
用户详情查看用户信息、项目数量、存储用量、登录记录
状态管理启用/禁用账户,设置管理员权限
VIP 发放管理员手动为用户开通 VIP 体验卡(日卡/周卡/月卡)
积分调整管理员手动增减用户积分
批量操作批量导入用户、批量发放 VIP
操作日志所有管理操作留痕审计

6.2 素材管理

功能描述
图标库管理5000+ 系统图标,支持新增/删除/修改
分类管理多级分类树,支持增删改排序
上传审核用户提交的图标/模板需管理员审核后发布
批量导入支持 CSV + ZIP 批量导入素材
存储统计实时监控素材存储用量

6.3 模板管理

功能描述
模板列表查看所有公开模板,支持分类/搜索
模板审核用户提交模板需审核通过后上架
使用统计各模板使用次数排行
精选推荐设置首页推荐模板

6.4 数据统计

功能描述
访问统计每日 PV/UV 趋势图、新注册用户数
用户活跃日活/周活/月活用户统计
功能使用各功能模块使用频次排行
存储监控数据库/文件系统存储使用趋势
系统健康CPU/内存/磁盘使用率实时监控

6.5 内容管理

功能描述
博客管理发布/编辑/删除教程、公告、功能更新
论坛管理帖子审核、举报处理、版块设置
通知管理全站公告发布、定向用户通知

7日常运维

7.1 系统监控

监控项工具/方法告警阈值建议
应用进程pm2 list / pm2 monit重启次数 > 3 次/小时
CPU 使用率PM2 监控 / 系统命令持续 > 80% 超过 5 分钟
内存使用PM2 监控实例 > 512MB 触发自动重启
磁盘空间df -h使用率 > 85%
MySQL 连接数SHOW PROCESSLIST活跃连接 > 25/30
Redis 内存INFO memory使用 > maxmemory 的 80%
API 响应时间/api/health 健康检查平均 > 2 秒
错误日志PM2 日志 / 应用日志5xx 错误 > 10 次/分钟

7.2 备份策略

备份对象备份方式频率保留周期恢复时间
MySQL 数据库mysqldump 全量每日凌晨 2:0030 天< 1 小时
MySQL Binlog实时归档持续7 天点级恢复
用户文件rsync 增量每日凌晨 3:0030 天< 2 小时
系统配置Git 版本控制变更时永久< 30 分钟
PM2 配置pm2 save变更时永久< 10 分钟
推荐备份脚本:详见附录,建议添加到 crontab 自动执行。

7.3 常见故障处理

故障现象排查方法处理方案
服务无响应pm2 list 查看进程状态pm2 restart scidraw-backend
内存溢出pm2 monit 查看内存使用检查日志定位泄漏
数据库连接失败mysql -u root -p -e "SELECT 1"检查 MySQL 服务状态
Redis 连接失败redis-cli ping平台可降级运行
502 Bad Gateway检查 Node.js 进程是否存活pm2 restart
文件上传失败检查磁盘空间 df -h清理临时文件或扩容
SSL 证书过期openssl x509 -enddate续签证书

8安全要求

8.1 网络安全

安全措施描述
HTTPS 加密全站 HTTPS,TLS 1.2+
防火墙仅开放 80/443 端口,数据库/Redis 不对外暴露
速率限制API 全局限流 200 req/min,认证接口 10 req/min
IP 黑名单自动封禁恶意扫描 IP,支持手动管理
SVG 防盗链HMAC-SHA256 签名 URL + 过期时间

8.2 数据安全

安全措施描述
密码加密bcrypt 哈希,盐值轮次 10
JWT Token有效期 7 天,支持刷新与吊销
SQL 注入防护参数化查询(mysql2 prepared statement)
XSS 防护输入过滤 + 输出转义
CSRF 防护SameSite Cookie + Token 验证
文件上传安全类型白名单 + 大小限制 + 路径过滤
敏感配置环境变量隔离,.env 不纳入版本控制

8.3 管理安全

安全措施描述
管理员审计所有管理操作记录 admin_logs 表
权限分级管理员/普通用户二级权限
登录保护登录失败次数限制,IP 频率控制
文件监控实时监控素材目录文件变更,异常变动邮件告警

9部署实施计划

9.1 实施阶段

阶段内容工期交付物
一、环境准备服务器采购/分配、操作系统安装、基础软件部署3~5 个工作日服务器就绪报告
二、平台部署数据库初始化、应用部署、Nginx 配置、SSL 证书、域名解析3~5 个工作日部署完成确认书
三、数据迁移素材库导入、模板导入、历史数据迁移(如有)2~3 个工作日数据迁移报告
四、功能验证核心功能测试、性能测试、安全测试3~5 个工作日测试报告
五、用户培训管理员培训(2 课时)、普通用户使用手册1~2 个工作日培训材料、用户手册
六、正式上线试运行 1~2 周后正式切换1~2 周上线确认书
总工期:约 3~4 周(不含服务器采购周期)

9.2 验收标准

验收项标准
功能完整性招标功能清单中标配功能 100% 可用
性能指标50 并发用户下,API 平均响应时间 < 500ms,页面首屏加载 < 3s
稳定性连续运行 72 小时无故障,无内存泄漏
安全性通过 OWASP Top 10 基础安全扫描
数据完整性数据库 30+ 表完整创建,素材库 5000+ 图标可正常访问
文档完备性部署文档、运维手册、用户手册、API 文档齐全

10售后服务与技术支持

10.1 服务内容

服务项内容响应时间
电话支持5×8 小时技术支持热线工作日 2 小时内响应
远程支持远程排查、配置调整、故障修复4 小时内响应
版本升级功能更新、安全补丁、Bug 修复季度更新,紧急补丁 24h 内
培训服务新管理员培训、功能升级培训按需安排
数据备份协助制定备份策略、恢复演练每半年一次

10.2 服务级别协议(SLA)

指标承诺
系统可用性≥ 99.5%(每月计划外停机 ≤ 3.6 小时)
故障响应严重故障:30 分钟内响应;一般故障:4 小时内响应
数据恢复RPO ≤ 24 小时
版本更新每季度至少一次功能更新

10.3 服务期限

项目期限
免费质保期验收合格之日起 12 个月
延保服务可选 1~3 年延保,另行报价
源码交付可选(需另行签订源码授权协议)

11交付物清单

序号交付物格式数量
1软件安装包源码 + 构建产物1 套
2部署实施文档PDF1 份
3运维管理手册PDF1 份
4用户使用手册PDF + 在线帮助1 份
5API 接口文档PDF / 在线 Swagger1 份
6数据库设计文档PDF(含 ER 图 + 表结构)1 份
7测试报告PDF1 份
8培训材料PPT + PDF1 套
9源代码(可选)Git 仓库1 套

12资质与商务要求

12.1 供应商资质要求

资质项要求
企业法人具有独立法人资格
注册资本≥ 100 万元人民币
软件著作权SCIDraw 相关软件著作权登记证书
类似业绩近 3 年内高校/科研院所软件部署案例 ≥ 2 个
技术团队具备 Node.js / React / MySQL 技术栈开发能力

12.2 报价要求

报价应包含以下费用项(可分项报价):

费用项说明
软件授权费永久授权 / 年度订阅
部署实施费含环境搭建、数据迁移、测试验证
定制开发费(如有)校方提出的个性化功能定制
第一年运维费含技术支持、版本更新
培训费管理员培训 + 用户培训
素材扩展包(可选)额外科研素材包

附录 A:数据库表结构概览

序号表名说明预估行数
1users用户账户按注册量
2projects用户绘图项目按使用量
3project_versions版本历史按保存频率
4folders项目文件夹按使用量
5system_icons系统图标库5,000+
6icon_categories图标分类180+
7custom_assets用户自定义素材按使用量
8icon_submissions图标投稿审核按投稿量
9system_templates系统模板100+
10template_submissions模板投稿审核按投稿量
11subscriptions订阅计划定义6~10
12orders支付订单按交易量
13credits_history积分流水按使用量
14blog_posts博客文章按运营量
15forum_posts论坛帖子按使用量
16forum_replies论坛回复按使用量
17support_conversations客服会话按使用量
18support_messages客服消息按使用量
19page_views页面访问记录日均数百~数千
20daily_stats日统计汇总按运行天数
21admin_logs管理操作日志按操作量
22draw_groups协作绘图组按使用量
23group_members协作组成员按使用量
24ai_generation_historyAI 生图记录按使用量
25email_campaigns邮件活动按运营量
26referral_codes邀请码按用户量
27user_notifications用户通知按使用量
28password_reset_tokens密码重置令牌临时数据
29email_subscriptions邮件订阅偏好按用户量
30ppt_generation_historyPPT 生成记录按使用量

附录 B:环境变量配置清单

私有化部署需配置以下环境变量(backend/.env 文件):

# === 必填项 ===
# 数据库
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=scidraw
DB_PASSWORD=<由校方设定>
DB_NAME=scidraw

# 服务端口
PORT=3000

# JWT 密钥(随机生成 64 位字符串)
JWT_SECRET=<随机生成>

# SVG 签名密钥(随机生成 32 位字符串)
SVG_SIGN_SECRET=<随机生成>

# === 可选项(按需配置)===
# Redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=<由校方设定>
REDIS_DB=0

# 邮件服务(必选,用于注册验证和通知)
SMTP_HOST=smtp.university.edu.cn
SMTP_PORT=465
SMTP_SECURE=true
SMTP_USER=noreply@university.edu.cn
SMTP_PASS=<由校方提供>

# 管理员邮箱(接收系统告警)
ADMIN_EMAIL=admin@university.edu.cn

# AI 服务(可选)
GLM_API_KEY=<如需 AI 功能>
GLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4

# 支付(可选,高校免费场景可不配)
# WEIXIN_APPID=
# WEIXIN_MCHID=
# ALIPAY_APP_ID=

附录 C:Nginx 参考配置

server {
    listen 80;
    server_name draw.university.edu.cn;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name draw.university.edu.cn;

    # SSL 证书
    ssl_certificate     /etc/nginx/ssl/draw.crt;
    ssl_certificate_key /etc/nginx/ssl/draw.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    # 上传大小限制
    client_max_body_size 50M;

    # Gzip 压缩
    gzip on;
    gzip_types text/plain text/css application/json
               application/javascript text/xml;
    gzip_min_length 1024;

    # 主代理
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 120s;
    }

    # WebSocket 支持(Socket.io)
    location /socket.io/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400s;
    }

    # 静态资源长缓存
    location /assets/ {
        proxy_pass http://127.0.0.1:3000;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # 健康检查
    location /api/health {
        proxy_pass http://127.0.0.1:3000;
        access_log off;
    }
}
文档中心