我在 Akemax 实习时,最让我印象深刻的一点是,大量的日常报告仍然依赖纸质流程。如果工厂车间里有人需要提交报告,他们得走到楼下,拿一张纸质表单,手写填好,然后交上去。虽然能用,但效率很低,还会打断工作节奏。我一直在想:为什么不把表单放到服务器上呢?
这个想法一直留在我脑海里。使用这些表单的人并不是程序员。他们不想安装软件、创建账户或学习新工具。他们只需要填好表单然后回去工作。所以我开发的东西必须极其简单 - 打开一个网址,选择一个表单,填写,提交。
RTR (Real-Time Reporting) 就是这样诞生的。
第 1 步:RTR 的实际功能
应用启动后,它会在管理员的桌面上运行并创建一个本地服务器。同一网络上的用户可以访问管理员的网址,进入表单页面,选择表单,输入日期和所需信息,然后提交。
在管理端应用中,管理员可以查看已提交的表单,并根据需要创建或修改表单。
# The architecture in a nutshell:
┌─────────────────────┐ IPC only ┌──────────────┐
│ Admin Panel (UI) │ ◄──────────────► │ Main Process│
│ Electron Window │ │ (Node.js) │
└─────────────────────┘ └──────┬───────┘
│
┌──────┴───────┐
│ Express HTTP │
│ Port 8080 │
│ LAN only │
└──────┬───────┘
│
┌─────────────────┼─────────────────┐
│ │ │
Phone/Tablet Desktop PC Any Browser
on the LAN on the LAN on the LAN
第 2 步:为什么没有用户账户
RTR 没有使用个人用户账户,而是记录提交表单时所用设备的 MAC 地址。由于企业通常有固定数量的设备连接到其网络,这种方式可以简单地将提交内容与设备关联起来,而不需要员工登录。
我之所以采用这种方式,是因为按照表单的本质,任何人都应该能够拿起表单直接填写,而不必先创建账户或登录。
第 3 步:基于网络的安全策略
RTR 专为内网环境设计。它不接受来自本地网络之外的连接,因此其安全性本质上取决于所运行网络的安全性。
管理面板本身是一个原生 Electron 窗口,完全通过进程间通信进行交互 - 不会为其打开任何网络套接字,因此无论防火墙如何设置,它都无法从 LAN 访问。表单服务器仅绑定到面向 LAN 的网络适配器,并将访问限制在白名单中的 IP 地址或 CIDR 范围内。
第 4 步:核心功能
- 表单构建器 - 使用不同的问题类型创建和修改报告表单
- 提交浏览器 - 查看、筛选和搜索已收集的回复
- CSV 导出 - 导出提交内容,可在 Excel、Google Sheets 或任何数据工具中进行分析
- IP 白名单 - 精确控制哪些设备可以访问和提交表单
- 设备追踪 - 通过 MAC 地址记录将提交内容与设备关联
- 完全本地化 - 所有数据都存储在管理员电脑上的 SQLite 中,无需云端
第 5 步:技术栈
RTR 使用以下技术构建:
- Electron - 管理面板的原生桌面外壳
- Node.js + Express - 用于表单分发的轻量级 HTTP 服务器
- SQLite - 零配置的本地数据库
- NSIS - Windows 安装程序打包工具
第 6 步:下载
或者克隆源码自行构建:
git clone https://github.com/petermurrayx/RTR--Real-Time-Reporting.git
cd RTR--Real-Time-Reporting
npm install
npm start # development mode
npm run build # build the installer
注意: 安装程序适用于 Windows 10/11 (x64)。首次启动时,Windows 防火墙会询问是否允许 LAN 访问 - 请允许,以便其他设备能够访问表单服务器。
虽然这个项目没有使用任何花哨的新 AI 技术,但它让我想起了自己当初选择计算机科学的原因:用技术让人们的生活更轻松,帮助他们更高效地工作,把事情做好。
如果你有空闲时间,欢迎来看看。项目采用 MIT 许可证,任何人都可以使用或修改代码。