# node-goview **Repository Path**: robbins/node-goview ## Basic Information - **Project Name**: node-goview - **Description**: 企业级集团大屏数据可视化系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-02 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # node-goview — 企业级大屏数据可视化与展厅发布系统

node-goview

基于 GoView 二次深度研发的 Node.js 全栈增强版,专为集团企业内网打造的「多租户、高可用、可闭环」大屏数据可视化平台

node-goview GoView Node Vue TS MongoDB Docker License

--- ## 📖 关于 node-goview(二次开发背景) 本项目 **`node-goview` 是基于知名开源数据可视化平台 [GoView](https://gitee.com/dromara/go-view) 进行深度二次开发与架构重构的企业级全栈版本**。 ### 为什么会有 node-goview? GoView 拥有极其优秀的拖拽式大屏设计体验和丰富的 ECharts / VChart 图表体系。然而在集团公司实际内网落地、会议室电视墙投屏及多部门协作场景中,原版往往面临以下核心挑战: 1. **原版主要定位为前端项目**,缺乏成熟统一、开箱即用的生产级后端服务; 2. **多部门资产混杂**,缺少多租户与部门级数据权限硬隔离机制,容易造成跨部门越权; 3. **多人协同保存易冲突**,缺乏并发锁机制,后保存的人极易直接覆盖他人辛勤设计的大屏成果; 4. **硬件大屏常驻难维护**,展厅电视或工控机长时间运行常因偶发断网白屏卡死、因内存泄漏导致浏览器崩溃闪退; 5. **资产难以离线交付**,缺少便捷的工程文件导入导出与版本历史回滚机制。 为此,**`node-goview`** 围绕「**全栈一体、数据安全、硬件常驻、极简运维**」四大目标进行了彻底的二次演进,打通了企业私有化部署的最后一公里。 --- ## 🌟 核心升级与特性矩阵 ### 1. 原生全栈 Node.js + MongoDB 后端 * **一体化容器架构**:内置轻量、高性能的 Node.js 生产服务,同端口一体化托管 Vue 前端页面与全量后端 API,无需繁琐跨域配置; * **企业多租户与部门隔离**:严格按租户和部门校验项目归属,杜绝水平越权,配备独立的用户管理与密码重置后台。 ### 2. 并发安全与资产全生命周期闭环 * **乐观并发锁(Optimistic Locking)**:保存携带版本号(`expectedVersion`),遇多人同时编辑自动拦截并返回 `409 Conflict` 弹窗警示,杜绝数据静默覆盖; * **版本时光机与一键回滚**:大屏每次发布与保存均记录快照,自动维持最近 10 次滑动窗口(熔断保护 MongoDB 16MB 单文档上限),支持随时一键回退还原; * **离线工程导出/导入(.goview)**:支持一键导出离线大屏备份,随时在物理隔离的内网集群反序列化导入。 ### 3. 展厅与工控机 7×24 小时免维护常驻 * **断网静默自愈重试**:大屏端遇内网偶发断网或后端重启时,**永不白屏报错**,保持上一帧画面并在后台指数退避重试; * **凌晨内存平滑自愈**:针对安卓电视盒与工控机,每日凌晨(03:30 ~ 04:00)且无交互时平滑重载释放显存,杜绝死机; * **鼠标光标智能隐藏**:投屏后 3 秒无交互自动隐藏光标(`cursor: none`),移动时瞬间唤出; * **展厅多大屏自动轮播台**:专为展厅设计,通过 URL 参数即可开启多大屏循环巡检展示,A/B 双 iframe 预载淡入淡出,切屏彻底告别闪烁。 ### 4. SRE 企业级运维与自动化规范 * **Kubernetes / Nginx 标准探针**:提供 `/healthz`(存活探针)与 `/readyz`(数据库就绪探针); * **结构化监控日志**:服务端自动输出所有 API 请求响应耗时(毫秒级锁定慢查询); * **优雅关机(Graceful Shutdown)**:捕获系统信号后安全断开数据库连接; * **容器一键编排**:提供极简 Dockerfile、docker-compose 以及全套 Makefile 指令。 --- ## 🚀 极速部署指引(Makefile 一键部署) 系统原生支持通过 `Makefile` 进行全自动化的构建与部署。 ### 1. 查看命令手册 在根目录下输入 `make help` 即可查看所有可用指令: ```bash $ make help ====================================================================== 📊 GoView 集团大屏系统 - 自动化运维与部署 Makefile ---------------------------------------------------------------------- make deploy 🚀 一键全栈生产部署 (构建前端 + 启动 MongoDB + 启动应用服务) make up 启动容器服务 (后台运行已有镜像) make down 停止并移除所有容器及网络 (保留数据卷) make stop 停止正在运行的容器 make restart 重启所有容器服务 make ps 查看当前运行的容器状态与健康探针检查 make status 查看当前运行的容器状态 (别名: make ps) make logs 跟踪查看容器实时运行日志 (按 Ctrl+C 退出) make pm2-start 编译前端并以 PM2 集群模式启动后端服务 make pm2-stop 停止 PM2 后端服务 make pm2-restart 平滑热重载 PM2 集群服务 make pm2-status 查看 PM2 集群运行状态 make pm2-logs 查看 PM2 实时运行日志 make install 安装项目全量依赖 (pnpm) make dev 启动前端 Vite 本地开发热更新服务 (端口 3020) make server 启动后端 Node 本地开发服务 (端口 3001) make build 编译打包前端生产环境静态产物 (dist/) make lint 执行 ESLint 全库代码语法与格式校验 make test 执行后端健康探针检查 make clean 清理前端构建产物 (dist/) make help 打印所有可用命令与帮助说明 ====================================================================== ``` ### 2. 生产环境一键拉起(推荐) ```bash make deploy ``` *该指令将自动完成:前端打包编译 → 构建 Docker 极简容器(`node-goview-app`) → 启动数据库容器(`node-goview-mongodb`) → 自动初始化管理员种子数据 → 验证健康探针。* * **大屏工作台访问地址**:`http://<服务器IP>:3001` * **查看容器运行状态**:`make ps` * **查看实时日志**:`make logs` * **停止并下线容器**:`make down` --- ## 🔑 初始账号与访问入口 系统首次启动时会自动执行种子数据初始化(Seed): | 角色 | 登录账号 | 初始密码 | 所属部门 | 具备权限 | | :--- | :--- | :--- | :--- | :--- | | **平台管理员** | `admin` | `123456` | 示例部门 | 租户/用户/大屏全量管理权限 | | **业务普通成员** | `operator` | `123456` | 运营部 | 本部门大屏编辑与发布权限 | > [!IMPORTANT] > 首次部署到生产环境后,请平台管理员务必进入 **「平台管理 - 用户账号管理」** 修改默认密码! --- ## 🖥️ 展厅多大屏轮播台使用说明 在企业展厅大屏或会议室电视墙上,无需人工切换标签,支持两种启动方式: 1. **URL 直接启动**: 访问 `http://<服务器IP>:3001/#/public/carousel?tokens=TokenA,TokenB,TokenC&interval=30` * `tokens`:要循环轮播的大屏公开 Token(逗号分隔); * `interval`:每屏播放秒数(如 30 秒)。 2. **引导界面启动**: 直接在电视机浏览器中打开 `http://<服务器IP>:3001/#/public/carousel`,在引导卡片中粘贴 Token 列表即可一键播放; 3. **快捷交互**: * 按**空格键(Space)**:随时暂停/继续轮播; * 按**右方向键(→)**:立即跳至下一屏; * 鼠标静止 3 秒后,光标及控制器将自动隐去,呈现全沉浸大屏画面。 --- ## 🛠️ 本地开发环境启动 如果您需要在本地修改或调试: ```bash # 1. 安装依赖 make install # 或 pnpm install # 2. 启动本地 MongoDB (端口 27017) docker compose up -d node-goview-mongodb # 3. 启动后端 API 服务 (端口 3001) make server # 或 pnpm server # 4. 启动前端 Vite 热更新开发服务器 (端口 3020) make dev # 或 pnpm dev ``` 本地开发访问前端:`http://localhost:3020`(接口自动代理转发至 `http://localhost:3001`)。 --- ## 📦 技术栈清单 * **前端核心**:Vue 3.2、Vite 4.3、TypeScript 4.6、Naive UI 2.34、Pinia 2.0 * **可视化引擎**:Apache ECharts 5.3、ByteDance VChart 2.1 * **代码与脚本编辑器**:Monaco Editor * **后端核心**:Node.js 20+、Express 5.2、Mongoose 8.2、JWT、bcryptjs * **持久化数据库**:MongoDB 7.0 * **SRE 与容器编排**:Docker、Docker Compose、PM2 Cluster、GNU Make --- ## 🙏 致敬与开源许可证 * 本项目基于优秀开源项目 [GoView](https://gitee.com/dromara/go-view) 进行二次开发,感谢原作者团队在可视化低代码领域的杰出贡献! * 本项目遵循 [MIT License](LICENSE) 协议发布,自由开源。