校园局域网原生 私有化部署 单文件 SQLite

让签到碰一下就好
三餐自动归位,手机免登录

面向学校的 NFC 教师考勤系统:老师碰一下餐厅门口的贴纸、或扫一眼大屏二维码,签到 / 签退一次完成。系统按时间窗自动归早餐 / 午餐 / 晚餐,手机绑定后免输密码,值班大屏实时显示谁到岗。数据全留本校,一键导出 Excel。

≈0
公网依赖 · 校内即可跑
5 端
手机 / 网页 / 大屏 / 后台 / 读卡器
15 分钟
可改的最小打卡间隔
Why NFC

换掉点名与群接龙,把签到交给贴纸

把“谁到岗了没”这件事,做得快、防作弊、可回溯,而且不烧老师的时间。

传统做法

逐班点名 / 签到表老师跑楼层、人工记录,易漏、易代签,统计还要再抄一遍。
微信群接龙触达慢、无法防转发,截图发群里谁都能“云打卡”。
中心化考勤机一台机器排队刷,断网即瘫;数据常落在厂商云。

我们的做法

碰贴纸即打卡手机碰一下餐厅 NFC 贴纸,限时链接自动跳转,签到完成。
限时签名防转发HMAC 签名只对当前时段有效,截图过期即失效,杜绝远程代打。
本地 SQLite账号、记录、日志全留本校服务器,断网照常;备份就是复制一个文件。
Core Capabilities

核心能力

从“打得上卡”到“算得清、管得住、可导出”,一整套都齐了。

NFC 碰一下打卡

贴纸写死永久链接,碰一下服务器 302 跳到当期限时链接,安卓零点击自动完成,iPhone 点通知即可。

扫码打卡 · 防转发

打卡点 / 临时码带 HMAC 签名,每天 10:00 / 15:00 / 24:00 换一批,90 秒宽限;过期旧链接当场失效。

自动

三餐自动归餐次

不用选餐次,按刷卡时刻落在哪一档自动归:00–10 早餐、10–15 午餐、15–24 晚餐,时段边界与换码点同源。

手机绑定免登录

首次登录即绑定这台手机,一台手机只绑一位老师;之后碰贴纸 / 扫码不再输密码,直接完成打卡。

值班大屏 /screen

挂餐厅门口:今日值班按楼层列出,已到岗自动变绿显时间,当前可扫二维码按剩余时间自动刷新。

一键导出 Excel / CSV

5 个工作表:原始记录、每日汇总、配对明细、三餐汇总、值班到位; UTF-8 BOM,双击不乱码。

多轮签到签退

一天可打很多轮:签到→签退→签到→签退,每轮至少隔最小间隔(默认 15 分,可按秒改),导出按轮配对算工时。

默认开

超时未签退 = 未打卡

签到后超过 90 分钟还没签退,这一轮按没打卡处理,避免虚增工时;时长后台可调,填 0 即关。

无排班替班说明

今天没排班却来打卡,老师端弹卡问“替谁值班”,填完进备注、按正常出勤计,导出多一列出勤说明。

打卡问候语

每次签到 / 签退成功随机抽一句用餐关心话,只在真打上卡时回;内置 30 句,后台可整批替换或关掉。

幂等防重复

双击 / 刷新 / 浏览器预取都幂等返回上一次结果,绝不重复计数;并发写入走事务,10 个请求也只落 1 条。

USB 读卡器接入

后台“录入 UID”绑卡号;POST /api/tap 支持 uid 字段,用 teacher_id 指定需带读卡器密钥,杜绝公网伪造。

Everywhere

五个入口,一个系统

手机 NFC、扫码、网页老师端、管理后台、值班大屏——同一套账号、同一套规则。

手机 NFC

碰贴纸零点击打卡

扫码

大屏 / 临时码即扫即打

网页老师端

/login · 我的打卡

管理后台

/admin · 名单 / 导出

值班大屏

/screen · 实时到岗

同一套服务端,老师在校内校外都能打卡;二维码由浏览器本地画,弱网也出得图。

Use Cases

这些场景,它都能接

餐厅值班、三餐打卡、临时替班、外勤补录、统计报表——同一套系统应付。

餐厅值班签到

按楼层排班,老师碰贴纸即到岗,大屏实时显绿,超时未签退自动标“未到岗”。

三餐打卡

不选手动选餐次,系统按时间窗自动归早 / 午 / 晚,导出多一份三餐汇总。

临时替班

没排班来打卡,弹卡选“替谁值班”,记备注、按正常出勤,被代格显“X 代”。

手工补录

忘了打或设备异常,管理员在刷卡记录页补录,不受间隔限制、按时间自动归餐次。

统计报表

每人每日汇总 + 配对明细 + 三餐汇总,一键 Excel / CSV,迟到早退线可配。

读卡器 / 弱网

无 NFC 手机用扫码兜底;USB 读卡器走 /api/tap,校园网内断网也能照常。

Private Deployment

私有化部署,数据自主可控

服务器部署在校园内网,账号、记录、日志全部留在本地,备份就是复制一个文件。

需求确认

确认打卡点数量、楼层结构、网络与服务器环境。

服务端部署

部署 Flask + SQLite 服务端,导入老师名单与值班表。

写标签 / 贴纸

生成 NFC 贴纸链接与二维码,贴到各楼层打卡点。

培训与运维

老师上手培训,设置项后台即时生效,全年答疑支持。

私有化部署

单校区 · 一台校内服务器 · 按规模评估
  • 中心服务端私有化部署到校
  • 网页老师端 + 管理后台 + 大屏
  • 管理员 / 老师上手培训
  • 一键导出 Excel / CSV
  • 一年内升级与答疑支持
获取报价
最受欢迎

多校区统一管控

集团校 · 多校区 / 多学段 · 按需报价
  • 多校区集中看板
  • 分级授权(总校 / 校区 / 年级)
  • 跨校区中继打通
  • 内网镜像同步加速
  • 专属运维支持
预约演示

定制与集成

对接既有平台 / 特殊硬件 · 按需报价
  • 对接校园统一身份认证
  • 对接既有教务 / 资源平台
  • 定制打卡规则与报表
  • 品牌与界面定制
  • 长期技术支持(另议)
聊聊需求
Roles

四类角色,权限清晰

谁能管什么、谁只能管自己那一片,系统里划得明明白白。

角色登录入口权限范围
超级管理员admin 后台全部页面:老师 / 值班表 / 打卡点 / 手机绑定 / 导出 / 设置
年级管理员后台受限菜单今日概览、临时打卡码、刷卡记录、统计导出;越界直接 403
老师/login 老师端我的打卡、改密码;碰贴纸 / 扫码完成签到签退
打卡点贴纸 / 临时码碰一下或扫一下即打卡,无需登录(登录态由手机绑定认人)
FAQ

常见问题

关于部署、打卡、设备与数据的那些疑问。

需要公网服务器吗?+
不需要。私有化部署把服务端放在校园内网即可,默认打卡全程在校内网完成,公网流量≈0。老师在校外想打卡时,也可将服务映射到公网(建议加 HTTPS)。
贴纸链接会被截图转发代打卡吗?+
不会。贴纸里写的是永久链接,碰一下后服务器 302 跳到当期限时链接,签名只对当前时间窗口有效,默认每天 10:00 / 15:00 / 24:00 换一批,转发出去的旧链接过点即失效。跨档有 90 秒宽限,不会误伤。
iPhone 碰标签没反应?+
iOS 限制:锁屏碰标签后顶部出现通知,点一下通知才打开网页,属正常现象。任何没 NFC 的手机可用打卡点二维码兜底,二维码由浏览器本地画,弱网也出图。
今天没排班,老师来打卡会怎样?+
能打卡、不算异常。老师端会问一句“替谁值班”,填完进后台替班记录并写进备注,本次按正常出勤计;不想问可在设置里关掉该提问,后台仍可代录。
签到后很久没签退怎么算?+
默认开启“超时未签退 = 未打卡”:签到后超过 90 分钟还没签退,这一轮按没打卡处理,避免虚增工时。时长在设置里按分钟改,填 0 关闭。
数据和记录存在哪里?+
账号、打卡记录、日志全部保存在本校服务器的单文件 SQLite(data/attendance.db),备份就是复制一个文件。导出 Excel / CSV 随时可拿走,不被平台锁死。
Architecture

技术架构

轻量、可控,为校园网络环境而生。

后端Flask 应用工厂
数据库SQLite(WAL)
识别NFC 贴纸 + 扫码
防转发HMAC 限时签名
餐次时间窗自动归位
绑定手机一键免登
导出openpyxl / CSV
部署systemd + nginx
角色超管 / 年级 admin / 老师 / 打卡点

原生 Jinja2 模板,无前端构建;数据与代码分离部署,升级不打断正常使用。

Security

数据留在本校,权限划得清楚

私有化部署的意义不只是省带宽,更是把数据的归属权交回学校自己手里。

本地数据库

账号、记录、日志全落本校服务器,不经过第三方云,备份复制一个文件即可。

角色隔离

四类角色分级授权,年级管理员越界访问直接返回 403,不只是藏起菜单。

操作可审计

登录、下发、改密、补录等关键操作留痕,可回溯到具体的人与时间。

限时签名防转发

打卡链接 HMAC 签名只对当前时段有效,截图过期即失效,杜绝远程代打。

防爆破

同账号 + 同 IP 连错 5 次锁 5 分钟;密码 PBKDF2 哈希存储,后台看不到明文。

读卡器鉴权

用 teacher_id 直接指定老师必须带读卡器密钥,未配置一律 401,防公网伪造签到。

准备好让签到碰一下就完了吗?

预约演示或获取报价,我们会先了解你学校的打卡点规模与网络环境,再给出部署方案。