# unified-data-hub **Repository Path**: rikh/unified-data-hub ## Basic Information - **Project Name**: unified-data-hub - **Description**: 综合数据中枢 - 文档与部署模板(脱敏开源版) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-19 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: JavaScript, Python, 考核系统 ## README # 综合数据中枢(Unified Data Hub) > 把「端到端考核」「感知/AVP 采集工效」两条业务线合并到**一个库、一个入口、一套账号**的轻量数据看板。 > > 零运行时框架、单文件后端、离线可用的 Vue3 + ECharts 前端,适合内网部署,也适合直接开源。 [![Gitee](https://gitee.com/rikh/unified-data-hub/badge/star.svg?theme=dark)](https://gitee.com/rikh/unified-data-hub) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![Node](https://img.shields.io/badge/Node.js-%E2%89%A522.5-339933) ![SQLite](https://img.shields.io/badge/SQLite-node%3Asqlite-003B57) ![Frontend](https://img.shields.io/badge/Vue-3-42b883) ![Charts](https://img.shields.io/badge/ECharts-5-aa344d) --- ## 1. 它解决什么问题 过去「端到端工效考核」和「感知采集工效」是两套系统、两个域名、两套账号体系: - 同一辆车、同一个人,要在两个站点分别查; - 考核口径分散,月度汇总靠人肉拼接; - 申述在聊天里流转,没有留痕; - 数据源在企微智能表格 / NAS Excel / 本地库之间来回搬。 综合数据中枢把两套数据**镜像进一个统一库 `unified.db`**,提供: | 能力 | 说明 | |:--|:--| | 🛰️ 智慧大屏 | 6 张 KPI 卡 + 多张趋势/构成图,一屏看全 | | 🧮 三线考核 | 端到端 / 感知 / AVP 明细、筛选、汇总、导出 | | 🔍 公开自查 | 安全员按车架号 + 日期自查,直接发起申述 | | 📨 申述流转 | 提交 → 受理 → 免考核 / 维持考核 / 退回,全链路留痕 | | 🚗 车辆主数据 | 车型、系数、业务线、生效日期,支持按日期回溯判型 | | 🗓️ 出车跟踪 | 按外采工单 + 三线数据合成,识别未登记车辆 | | 📢 公告 / 规则 | 分业务线公告栏、扣减规则常驻展示 | | 👥 权限 | `superuser / admin / user / auditor` + 业务线隔离 | | 📤 导入导出 | CSV / Excel 导出,文件管理,手动/定时同步 | --- ## 2. 30 秒了解架构 ```mermaid flowchart LR subgraph Sources[数据源] WX[企微智能表格
感知日度采集] NAS[NAS Excel
外采工单录入] E2E[端到端考核底表
data.json / computed_xs] OLLAMA[本地 Ollama
qwen2.5:7b-32k] end subgraph Sync[同步层] S1[sync-sensing.cjs] S2[import-work-orders.cjs] S3[sync-e2e.cjs] S4[build-vehicle-track.cjs] S5[gen-daily-summary.cjs] end DB[(unified.db
SQLite WAL)] APP[server.js
Node http + node:sqlite] UI[Vue3 + ECharts
大屏 / 自查 / 管理端] WX --> S1 --> DB NAS --> S2 --> DB E2E --> S3 --> DB DB --> S4 --> DB DB --> APP APP --> UI DB --> S5 OLLAMA --> S5 S5 --> APP ``` **两个关键词:** 1. **只读聚合**:源系统(企微表 / 外采 Excel / 端到端 JSON)只读,统一库是唯一写入口。 2. **零依赖**:后端只用 Node 内置 `http` + `node:sqlite`;前端 Vue/ECharts 全部落在 `public/vendor/`,运行时不联网。 --- ## 🖼 界面预览 > 以下为界面演示,数据均为示例,不含真实业务数据。 ![智慧大屏](assets/screenshots/dashboard.png) ![车辆状态](assets/screenshots/vehicle-stats.png) --- ## 3. 快速开始(本地跑起来) ### 3.1 环境要求 - Node.js **≥ 22.5**(需要 `node:sqlite`,当前仍标记为 experimental,启动时会有警告,属正常) - Linux / macOS / Windows 均可;生产建议 Linux + systemd - 可选:`bcryptjs`(账号密码哈希)、`python3`(Excel 导出) ### 3.2 最小启动 ```bash git clone https://gitee.com/rikh/unified-data-hub.git cd unified-data-hub # 1) 初始化数据库 sqlite3 data/unified.db < sql/schema.sql # 2) 安装依赖(bcryptjs,用于账号密码) npm install # 3) 创建第一个管理员(见 docs/deployment.md「初始化管理员」) node scripts/init-admin.cjs --username admin --password 'ChangeMe!123' # 4) 配置 cp config/.env.example .env # 编辑 .env:PORT / UNIFIED_DB / WRITE_TOKEN # 5) 启动 set -a && . ./.env && set +a node server.js ``` 打开 `http://127.0.0.1:19200/`: - `/` 智慧大屏(公开) - `/query` 考核自查(公开) - `/admin` 管理端(需登录) ### 3.3 目录结构 ```text unified-data-hub/ ├── server.js # 单文件后端(HTTP 路由 + SQL + 认证) ├── public/ │ ├── index.min.html # 智慧大屏 │ ├── query.min.html # 公开自查 / 申述 │ ├── admin.min.html # 管理端 │ ├── app.min.js / app.min.css │ └── vendor/ │ ├── vue.global.prod.js │ └── echarts.min.js ├── sql/ │ ├── schema.sql # 表结构(可直接执行) │ └── seed.sql # 规则/演示数据(可选) ├── config/ │ ├── .env.example │ ├── systemd/unified-data-hub.service │ ├── nginx/unified-data-hub.conf │ └── cron/unified-data-hub.cron ├── scripts/ # 同步 / 运维脚本 │ ├── sync-sensing.cjs │ ├── sync-e2e.cjs │ ├── import-work-orders.cjs │ ├── build-vehicle-track.cjs │ ├── gen-daily-summary.cjs │ └── init-admin.cjs ├── docs/ # 本文档集 └── data/unified.db # 运行时生成(已 gitignore) ``` ### 3.4 核心配置速查 | 变量 | 必填 | 默认 | 说明 | |:--|:--:|:--|:--| | `PORT` | 否 | `19200` | HTTP 监听端口 | | `UNIFIED_DB` | 建议 | `../unified/unified.db` | 统一库绝对路径 | | `WRITE_TOKEN` | 生产必填 | 空 | 同步脚本写接口令牌 | | `TZ` | 建议 | `Asia/Shanghai` | 影响本地时间与日志 | | `EFF_ALERT_WEBHOOK` | 否 | 内置 | 工单缺失告警机器人 | | `PYTHON` | 否 | `python3` | Excel 导出解释器 | > 完整配置见 [docs/configuration.md](docs/configuration.md),包含业务参数、数据源、定时任务、Nginx 与 systemd。 --- ## 4. 文档导航 | 文档 | 内容 | |:--|:--| | [docs/architecture.md](docs/architecture.md) | 架构、模块边界、数据流、部署拓扑 | | [docs/configuration.md](docs/configuration.md) | **配置项总表**:环境变量、业务参数、数据源、定时任务、反代 | | [docs/data-model.md](docs/data-model.md) | 数据表、字段、约束、索引、数据字典 | | [docs/business-rules.md](docs/business-rules.md) | 考核公式、状态机、口径与边界条件 | | [docs/api.md](docs/api.md) | 全部 HTTP API:参数、权限、返回结构 | | [docs/deployment.md](docs/deployment.md) | 从零部署:systemd、Nginx、TLS、防火墙 | | [docs/operations.md](docs/operations.md) | 日常运维、同步排程、备份恢复、监控 | | [docs/troubleshooting.md](docs/troubleshooting.md) | 常见故障与排查手册 | | [docs/security.md](docs/security.md) | 认证、权限、密钥管理、数据合规 | | [docs/open-source-checklist.md](docs/open-source-checklist.md) | 开源前脱敏与发布清单 | --- ## 5. 设计取舍 **为什么用 SQLite?** - 数据量在「十万级/年」以内,单机读写完全够用; - 备份就是一个文件,迁移成本极低; - `node:sqlite` 内置,不需要编译原生模块,部署零依赖。 **为什么不用前后端分离?** - 内网工具,页面数量少,Vue3 全局构建 + 单文件后端最省运维; - 没有构建链,改完刷新即可; - 静态资源全部本地化,断网可用。 **为什么保留源系统?** - 源系统仍在生产使用,统一库只做**镜像 + 聚合**,不反向写; - 任何同步失败都不会破坏源数据; - 需要回滚时,删掉 `unified.db` 重新同步即可。 --- ## 6. 许可证与第三方组件 - 本项目代码:**MIT License**(见 [LICENSE](LICENSE)) - [Vue.js](https://github.com/vuejs/core):MIT - [Apache ECharts](https://github.com/apache/echarts):Apache-2.0 - [bcryptjs](https://github.com/dcodeIO/bcrypt.js):MIT > ⚠️ 仓库内**不包含**任何真实业务数据、账号、密钥、内网地址。开源前请务必阅读 > [docs/open-source-checklist.md](docs/open-source-checklist.md)。 --- ## 7. 贡献 见 [CONTRIBUTING.md](CONTRIBUTING.md)。欢迎提交 Issue / PR,尤其是: - 新的数据源适配器(飞书多维表格、钉钉、Excel 目录监听) - 更多考核口径的可配置化 - 前端可访问性 / 移动端优化 - 单元测试与端到端测试 --- ## ☕ 赞赏 如果这个项目帮到了你,欢迎请作者喝杯咖啡。**完全自愿**,不影响使用与更新。

微信支付收款码 支付宝收款码

左:微信支付(推荐) · 右:支付宝