公寓大楼管理平台:从被逼无奈到勉强交差
这事儿怎么说,完全是硬着头皮接下来的。去年年底,我那住在老旧公寓的表舅突然找上了我。他不是让我修电脑,是让我给他搞一套“数字化管理”系统,说他们那个小区物业服务费年年涨,服务质量年年降,他们几个老头老太太一合计,决定自己搞一套内部记录和通知系统。
我当时正忙着公司项目,婉拒了好几次,结果表舅直接杀到了我家门口,提着两斤上好的茶叶,说啥也得让我帮这个忙。他那套说辞我熟得很:“这又不难,你随便弄弄,弄个能用的就行,算是为社区做贡献。”我能咋办?拗不过只能答应下来,但心里知道,这“随便弄弄”就是个大坑。
需求敲定:简单粗暴的“官网”
我接手这个活儿,就定下了一个基调:不折腾。这套系统是给小区内部几台指定电脑用的,目的是让那几个负责人的大爷大妈能快速查询访客信息和内部通知。但他们毕竟是外行,总得有个地方能找到这个软件?
这就是“官网”的由来。我没去申请新域名,那太费劲了。我直接扒拉出来我几年前给孩子做家庭作业展示用的那个闲置域名,划分了一个子目录,就当是这个公寓系统的门面了。
- 官网主页上只放了三样东西:系统功能介绍(简单得要命)、使用说明(五步傻瓜式教程)和最重要的安装包下载链接。
- 我选择了最便宜的轻量级云主机,配置低得可怜,反正就是个下载入口,能跑起来就行。
- 所有页面都是纯HTML手写的,连一个JS框架都没敢用。我知道,一旦用了复杂的东西,后期的维护就会变成一场噩梦。
我搞定这个官网页面只花了一个下午,主要是让表舅他们觉得,这玩意儿是正规的,有地方可找。
核心难题:制作“安装包”
最要命的工程就是这个“安装包”。小区物业那几台电脑,操作系统五花八门,有Win7的,也有Win10的,而且大多是十年前的配置,网络环境也乱七八糟。我必须确保这个系统能一键部署,不能让大爷大妈去折腾环境依赖。
我的做法是把所有的东西都塞进去,做成一个大的自给自足的包:
我选择了Python来编写后台服务,因为它相对轻量。但环境依赖是个麻烦事,所以我就用工具把整个Python环境、后台代码和数据库(我选了SQLite,无需配置)全部打包成了一个自解压的EXE文件。
这个EXE文件被我命名为《XX公寓管理系统_一键安装.exe》。
我写了一个启动脚本,这个脚本设计得非常狡猾:
- 它自动解压所有文件到指定目录。
- 它偷偷地检查本机有没有空闲端口。
- 它自动运行后台服务,并且隐藏了所有的命令窗口和后台程序界面。
- 成功后,它只弹出一个简洁的“安装成功,请访问本地地址”的对话框。
我拿到物业办公室测试了第一次。一个老会计点开了我的安装包,系统开始运行,但屏幕上闪过几个黑色的命令窗口。老会计吓坏了,以为是病毒,立马拔了电源。我被骂得狗血淋头。
回来后,我花了一整天时间去研究怎么彻底隐藏那些黑窗口。第二次测试,我做到了安装过程静默无声,老会计看到只弹出了一个提示框,才露出了满意的表情。
交付与收尾:坑总是有的
系统跑起来之后,我指导他们使用了几天,表舅发来了微信,说系统挺好使,访客记录一清二楚。我正打算松一口气,新的问题就冒出来了。
由于那几台老电脑运行环境复杂,时不时就自己重启。一旦重启,我的后台服务就停了。虽然我设计了开机自启动,但不知为何,总有那么一两台电脑失效。
我远程登录上去排查,发现问题出在Windows的启动项和用户权限上。我临时又写了一个非常简单的监视脚本,让它每隔五分钟检查一次后台服务是否还在运行,如果死了,就强制拉起来。
整个过程,从被表舅拉下水,到我搭建官网,再到调试安装包,3解决那些奇奇怪怪的电脑环境问题,我搭进去了接近一个月晚上的休息时间。虽然3实现了,也交付了,但要我说,这种为爱发电的社区项目,真是耗尽了我所有的耐心。不过看到表舅他们现在用得很顺手,时不时还夸赞我一句“年轻有为”,心里那点不爽也就算过去了。