# 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 前端,适合内网部署,也适合直接开源。
[](https://gitee.com/rikh/unified-data-hub)
[](LICENSE)




---
## 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/`,运行时不联网。
---
## 🖼 界面预览
> 以下为界面演示,数据均为示例,不含真实业务数据。


---
## 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 目录监听)
- 更多考核口径的可配置化
- 前端可访问性 / 移动端优化
- 单元测试与端到端测试
---
## ☕ 赞赏
如果这个项目帮到了你,欢迎请作者喝杯咖啡。**完全自愿**,不影响使用与更新。
左:微信支付(推荐) · 右:支付宝