把“谁到岗了没”这件事,做得快、防作弊、可回溯,而且不烧老师的时间。
从“打得上卡”到“算得清、管得住、可导出”,一整套都齐了。
贴纸写死永久链接,碰一下服务器 302 跳到当期限时链接,安卓零点击自动完成,iPhone 点通知即可。
打卡点 / 临时码带 HMAC 签名,每天 10:00 / 15:00 / 24:00 换一批,90 秒宽限;过期旧链接当场失效。
不用选餐次,按刷卡时刻落在哪一档自动归:00–10 早餐、10–15 午餐、15–24 晚餐,时段边界与换码点同源。
首次登录即绑定这台手机,一台手机只绑一位老师;之后碰贴纸 / 扫码不再输密码,直接完成打卡。
挂餐厅门口:今日值班按楼层列出,已到岗自动变绿显时间,当前可扫二维码按剩余时间自动刷新。
5 个工作表:原始记录、每日汇总、配对明细、三餐汇总、值班到位; UTF-8 BOM,双击不乱码。
一天可打很多轮:签到→签退→签到→签退,每轮至少隔最小间隔(默认 15 分,可按秒改),导出按轮配对算工时。
签到后超过 90 分钟还没签退,这一轮按没打卡处理,避免虚增工时;时长后台可调,填 0 即关。
今天没排班却来打卡,老师端弹卡问“替谁值班”,填完进备注、按正常出勤计,导出多一列出勤说明。
每次签到 / 签退成功随机抽一句用餐关心话,只在真打上卡时回;内置 30 句,后台可整批替换或关掉。
双击 / 刷新 / 浏览器预取都幂等返回上一次结果,绝不重复计数;并发写入走事务,10 个请求也只落 1 条。
后台“录入 UID”绑卡号;POST /api/tap 支持 uid 字段,用 teacher_id 指定需带读卡器密钥,杜绝公网伪造。
手机 NFC、扫码、网页老师端、管理后台、值班大屏——同一套账号、同一套规则。
同一套服务端,老师在校内校外都能打卡;二维码由浏览器本地画,弱网也出得图。
餐厅值班、三餐打卡、临时替班、外勤补录、统计报表——同一套系统应付。
按楼层排班,老师碰贴纸即到岗,大屏实时显绿,超时未签退自动标“未到岗”。
不选手动选餐次,系统按时间窗自动归早 / 午 / 晚,导出多一份三餐汇总。
没排班来打卡,弹卡选“替谁值班”,记备注、按正常出勤,被代格显“X 代”。
忘了打或设备异常,管理员在刷卡记录页补录,不受间隔限制、按时间自动归餐次。
每人每日汇总 + 配对明细 + 三餐汇总,一键 Excel / CSV,迟到早退线可配。
无 NFC 手机用扫码兜底;USB 读卡器走 /api/tap,校园网内断网也能照常。
服务器部署在校园内网,账号、记录、日志全部留在本地,备份就是复制一个文件。
确认打卡点数量、楼层结构、网络与服务器环境。
部署 Flask + SQLite 服务端,导入老师名单与值班表。
生成 NFC 贴纸链接与二维码,贴到各楼层打卡点。
老师上手培训,设置项后台即时生效,全年答疑支持。
谁能管什么、谁只能管自己那一片,系统里划得明明白白。
| 角色 | 登录入口 | 权限范围 |
|---|---|---|
| 超级管理员 | admin 后台 | 全部页面:老师 / 值班表 / 打卡点 / 手机绑定 / 导出 / 设置 |
| 年级管理员 | 后台受限菜单 | 今日概览、临时打卡码、刷卡记录、统计导出;越界直接 403 |
| 老师 | /login 老师端 | 我的打卡、改密码;碰贴纸 / 扫码完成签到签退 |
| 打卡点 | 贴纸 / 临时码 | 碰一下或扫一下即打卡,无需登录(登录态由手机绑定认人) |
关于部署、打卡、设备与数据的那些疑问。
轻量、可控,为校园网络环境而生。
原生 Jinja2 模板,无前端构建;数据与代码分离部署,升级不打断正常使用。
私有化部署的意义不只是省带宽,更是把数据的归属权交回学校自己手里。
账号、记录、日志全落本校服务器,不经过第三方云,备份复制一个文件即可。
四类角色分级授权,年级管理员越界访问直接返回 403,不只是藏起菜单。
登录、下发、改密、补录等关键操作留痕,可回溯到具体的人与时间。
打卡链接 HMAC 签名只对当前时段有效,截图过期即失效,杜绝远程代打。
同账号 + 同 IP 连错 5 次锁 5 分钟;密码 PBKDF2 哈希存储,后台看不到明文。
用 teacher_id 直接指定老师必须带读卡器密钥,未配置一律 401,防公网伪造签到。