先说个我见过的真事儿。
一家五个人的小公司,老板、销售、财务挤在一个开间里。合同这东西,签完往哪放?销售微信发一份,财务邮箱存一份,老板电脑桌面上再躺一份。问"XX公司那个年度服务协议啥时候到期",全公司开始翻聊天记录,翻完发现——上周已经自动续了一年。
这种事,五个人以内的小团队太常见了。不是不想管,是上一套正经的合同管理系统,光实施费就够发两个月工资了。今天聊个实在的:一台便宜服务器 + 两个开源工具,一个下午搭起来,够用十年。
先想清楚:五个人到底要什么
别一上来就想着电子签章、审批流、权限矩阵。五个人没有"流程",只有"别忘了"。
你真正需要的就三件事:
- 合同原件能找着——谁跟谁签的、多少钱、扫描件在哪
- 到期能提前喊人——别等到自动续费扣钱了才知道
- 谁负责的心里有数——不然提醒了也没人管
说白了,就是要一张"会自己叫唤的台账"。
选型:一张表 + 一个闹钟
我的建议组合是这样的:
- NocoDB(开源):你可以理解成"能联网的 Excel"。界面跟表格一样,谁都会用,但它背后是真数据库,能存附件、能设权限、能被别的程序读写。
- n8n(开源):理解成一个"不会累的文员"。你告诉它每天早上九点干一件事,它就天天干,风雨无阻。
- 企业微信/钉钉机器人:就是那个喊人的嘴。
三个东西都跑在你自己的服务器上,数据不出门,也不用按人头交年费。
部署这块不用怕,全部用 Docker 装。用打比方的话说,Docker 就像"集装箱"——NocoDB、n8n 各自装一个箱子,箱子之间不打架,搬家(换服务器)的时候整体吊走就行。一条 docker compose up -d 完事。
台账怎么建:字段设计是关键
打开 NocoDB,新建一张表,字段大概这么设:
| 字段 | 说明 | |---|---| | 合同名称 | 例如"XX科技年度运维服务协议" | | 对方公司 | 签给谁的 | | 合同金额 | 提醒时顺手看一眼 | | 签订日期 | | | 到期日期 | 核心字段,闹钟就盯着它 | | 负责人 | 到期该找谁 | | 续签状态 | 待评估/续签中/不续签 | | 扫描件 | 直接传 PDF 或图片 | | 备注 | 一些"当时谈的时候说好了"的破事 |
最后那个"备注"别省。合同里没写、但双方口头认了的东西,全塞这儿。半年后你会感谢自己。
提醒逻辑:用"提前量"分级
n8n 里配一条定时任务,每天早上九点跑一次,去表里捞:
- 离到期 60 天 → 给负责人发个温和提醒:"有个合同还有俩月到期,看看要不要谈续签"
- 离到期 30 天 → 拉个小群,把负责人和老板都拉进来
- 离到期 7 天 → 直接 @负责人,语气加重
这套分级很有必要。天天催等于没催,人会产生免疫。60 天的时候是提醒,7 天的时候才是拉警报。
配好之后你甚至可以加一条:合同状态改成"已续签"并填了新的到期日,闹钟自动进入下一轮。这样一年一年滚下去,不用人管。
几个坑,提前说
第一,备份。 数据库每天自动导出一次,扔到对象存储或者另一台机器上。别问我为什么强调这个,问就是见过硬盘挂了、五年合同全没的。
第二,别把敏感信息往备注里写。 银行密码、身份证号这类东西,NocoDB 里能看到的人就能看到,别图省事。
第三,交接。 人走了,负责人的字段要改。这事设成"离职流程"的一部分,不然提醒发到一个已经注销的账号上,等于没提醒。
第四,别贪多。 有人一上来就想把"合同审批""发票核对""回款跟踪"全接进来,最后做成一个四不像的怪物。先把到期提醒跑通,稳定三个月,再想下一步。
算笔账
一台 2 核 4G 的云服务器,一年几百块。域名几十块。软件全开源免费。搭的时间,熟悉 Docker 的话一个下午,不熟悉的话一个周末。跟动辄几万块的商业系统比,省下的钱够你请全公司吃半年午饭。
五个人的公司,最贵的从来不是软件,是"忘了"这两个字。
更多方案可访问 itfangan.com