6.1
请假审批——先把流程跑通,AI 的事后面再说
今天搭了个请假审批系统的骨架。需求不复杂:员工提交请假申请,主管批或驳,有个面板看汇总数据。技术栈是 Node.js + Express + MySQL 8.0,前端直接用之前写的几个静态页面改的。
不是什么大系统
三个表。leave_applications 存申请记录,leave_balances 存剩余假期额度,system_settings 是个键值对,存 AI 相关的配置项。业务逻辑全在 leaveService.js 里,纯函数,不碰数据库,方便写测试。
日期计算那块写了个头尾都算的天数——6月3号到6月5号算三天。一开始偷懒直接用时间戳相除,后来补了 +1。还有一个细节:驳回必须填理由,不然直接 400。这些规则全写了单测,node:test 跑的,没引入额外依赖。
AI 那块,只留了口子,没接
设置页面上有个"开启 AI 自动预审"的开关、一个冲突提醒阈值滑块、一段可编辑的提示词。这些配置项现在只是存到 MySQL 里,后端并没有真的去调模型。
审批详情页里有个蓝色提示框,原文写的是"智能体预留:后续这里会展示排班冲突、历史请假频率和审批建议。当前 V1 仅做业务流转。"坦白讲这就是给自己的 TODO。
我手头有一个 3.5B 的本地模型,打算后面接进来做两件事:一是帮员工填申请的时候检查描述是否清楚,二是给审批人标一下风险——比如同部门已经有人请了同一天、或者这个人最近请假频率偏高之类的。但现在还没接,因为先得把业务流程跑对,不然 AI 给出花来也没用。
今天踩的一个小坑
mysql2 的 namedPlaceholders 要用冒号占位符(:name),不是问号。一开始习惯性写成了 ?,SQL 直接报语法错。改过来就好。
另外一开始把 leave_balances 的初始数据写在了 schema.sql 里,用的是 INSERT INTO ... ON DUPLICATE KEY UPDATE,这样重复执行建表脚本也不会报错。小技巧,但省事。
接下来
先把这套流程前后端联调通,跑几个真实场景的申请看看有没有边界情况漏了。AI 预审那块估计下个版本再接,到时候还得想清楚一个问题:本地 3.5B 模型跑推理大概要一两秒,是做成同步等待还是异步通知——同步的话用户体验差,异步的话又不能即时给反馈。还没想好。

浙公网安备 33010602011771号