工记 WorkLog

面向班组、包工头与个体用工的记工记账应用:按天、按时、计件记工,工资自动计算,借支与结算管理,考勤日历,一键生成工资条

v0.2.0

界面预览

工记工作台(v0.2.0)
工作台:本月汇总与未结算提醒(v0.2.0)
工记记工页(v0.2.0)
记工页:点工 / 点时 / 计件一次录入(v0.2.0)
工记考勤日历(v0.2.0)
考勤日历:整月出勤与工钱汇总(v0.2.0)
工记未结算汇总(v0.2.0)
未结算汇总:按人核对应发与借支抵扣(v0.2.0)
工记统计(v0.2.0)
统计:月度与自定义时间段查询(v0.2.0)
工记工作台深色主题(v0.2.0)
深色主题:工地夜间也能看清(v0.2.0)
工记手机端记工(v0.2.0)
手机端记工:30 秒录完一笔(v0.2.0)
工记手机端考勤(v0.2.0)
手机端考勤(v0.2.0)

功能特性

🗓️

三种记薪方式

点工(按天,支持半天)/ 点时(按小时)/ 计件(数量 × 单价),一个应用覆盖工地与工厂的常见算法

🧮

工资自动计算

单价自动带出工人默认日薪、时薪或计件项目默认单价,单条记录可临时覆盖;金额以整数「分」存储,避免浮点误差

⚡

日历式快速记工

移动端优先的日历记工页,30 秒完成一笔录入;支持休息标记、多天连记与「确认并再记一笔」

👷

角色与班组

老板 / 组长 / 员工三种角色:老板建班组,工人凭邀请码加入;组长可帮工人记工、记借支,员工只能给自己记工

✅

考勤日历

月历展示每个工人的出勤状态(1 个工 / 0.5 个工 / 小时 / 件 / 休),并汇总当月工钱,出勤与工资一目了然

💵

结算与工资条

未结算汇总按工人实时列出应发、借支与净应付;支持单人结算与一键月结,结算后记录锁定且可撤销重结;工资条含明细、借支抵扣、实发与签字栏,一键导出 PNG 或复制文字

🏗️

工地 / 项目维度

可选填工地或项目,统计可按工地筛选,未结工资支持按人结算或按项目(工地)结算

📤

借支管理

记录工人的预支款项(现金 / 微信 / 支付宝),结算时自动抵扣,净应付不会算错

📈

统计与导出

月度统计每人的出勤天数、工时、计件数量、应发工资、借支与净额;也可按人员 + 时间段自定义查询,明细与汇总均可导出 CSV

🔒

数据安全与隔离

数据全部保存在本地 SQLite(WAL 模式),不上传云端;数据按用户隔离,多用户互不可见;支持 CSV / JSON 导出与数据库快照备份

🐂

飞牛一键登录

支持飞牛 fnOS NAS 账号一键登录,自动绑定或注册应用账号,手机与电脑共用同一份数据

🌗

明暗双主题

深浅色主题自适应,工地现场光线再差也能看清记工明细

技术架构

后端技术栈

  • Go - 高性能编译型语言
  • Gin - 轻量级 HTTP 框架
  • GORM - ORM 框架
  • SQLite (WAL) - 单文件数据库

前端技术栈

  • Vue 3 - 现代前端框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Pinia - 状态管理
  • Tailwind CSS - 原子化样式

部署方式

  • 飞牛 NAS(fnOS)FPK 包(x86 / ARM)
  • Docker 多平台镜像
  • 二进制解压即用

工记基于 smallgo 应用框架实例化,模块化注册(server/worklog/),前后端产物可打包为单个可执行文件分发。

快速开始

飞牛 NAS 安装

  1. 下载对应架构的 techfunway-worklog 安装包(.fpk,支持 x86 / arm64,见下方「更新日志」的下载链接)
  2. 打开飞牛 NAS 桌面 → 应用中心
  3. 点击右上角 手动安装,选择下载的 .fpk 文件
  4. 在安装向导中设置应用端口(默认 8909),点击完成
  5. 安装完成后打开应用,首个注册用户自动成为管理员(老板);也可以直接使用飞牛 NAS 账号一键登录

Docker 运行

docker run -d \
  --name techfunway-worklog \
  -p 8909:8909 \
  -v worklog-data:/app/data \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  techfunways/worklog:v0.2.0

docker-compose.yaml

services:
  worklog:
    image: techfunways/worklog:v0.2.0
    container_name: techfunway-worklog
    restart: unless-stopped
    ports:
      - "8909:8909"
    volumes:
      - worklog-data:/app/data
    environment:
      - TZ=Asia/Shanghai

volumes:
  worklog-data:

数据库、上传文件与运行日志都存放在数据卷 worklog-data(容器内 /app/data),重建或升级容器不会丢失记工数据。

二进制直接运行

解压对应平台的发布压缩包后,按下面的命令启动:

# Linux / macOS
./worklog -data-dir ./data -port 8909

# 开发模式(构建前后端并模拟生产目录结构运行)
make dev

启动后浏览器访问 http://localhost:8909,首个注册用户自动成为管理员。记账数据存储于 data/db/worklog.db(SQLite,WAL 模式)。

💡 提示:员工角色的账号只能给自己记工,可查看自己的考勤、工资与结算单;组长可以帮本组工人记工和记借支。结算后的记录会锁定,如需修改要先撤销结算,避免工资条与账目对不上。

端口与仓库信息

默认端口 8909(HTTP,安装向导、-port 参数或 PORT 环境变量均可修改)
容器名 techfunway-worklog
数据卷 worklog-data → 容器内 /app/data(数据库、上传文件、日志)
Docker 镜像 techfunways/worklog(多平台,端口 8909)
fnOS 包名 techfunway-worklog(桌面显示名「工记」)
源码仓库 TechFunWay/worklog(Go + Gin + GORM + SQLite / Vue 3 + TypeScript)
运行数据 data/db/worklog.db(SQLite WAL),管理员可下载数据库快照备份
上游框架 smallgo,后端模块名为 smallgo/server

更新日志

v0.2.0 2026-09-28
  • 飞牛深度适配:从飞牛桌面图标、飞牛手机 App 与远程域名打开,登录态自动保持,不再「一刷新就掉回登录页」
  • 修复飞牛手机 App 远程打开报错断连的问题,主入口锁定在统一网关域
  • 首次安装改为手动选择「使用飞牛 NAS 登录」授权,确认弹窗内可直接换飞牛账号,主页面不跳走
  • 安装 / 升级向导默认端口由 8900 改为 8909,新装不再与其它应用撞端口
  • 应用图标焕新:3D 立体 + 玻璃光滑风格(3D 日历卡 + 釉面安全帽)
  • 全部下拉换成自定义组件:深色主题下不再出现白底蓝条,支持键盘选择、点外部关闭与自动向上翻
  • 数据备份页新增「恢复」:支持上传备份文件恢复,换机迁移不再发愁
  • 修复:计件记工未填单价时没有按计件项目默认单价带出
  • 修复:自定义时间段统计整页报 500
  • 本地存储键按应用隔离,多个应用同域打开时不再互相顶掉登录态
运行(x86 / ARM 架构通用):
docker run -d -p 8909:8909 -v worklog-data:/app/data -e TZ=Asia/Shanghai techfunways/worklog:v0.2.0
docker-compose.yaml:
services:
  worklog:
    image: techfunways/worklog:v0.2.0
    container_name: techfunway-worklog
    restart: unless-stopped
    ports:
      - "8909:8909"
    volumes:
      - worklog-data:/app/data
    environment:
      - TZ=Asia/Shanghai

volumes:
  worklog-data:
v0.1.0 2026-09-15
  • 首个公开发布版本:点工 / 点时 / 计件三种记薪方式,休息标记与多天连记
  • 老板 / 组长 / 员工三种角色,班组邀请码加入,权限分层
  • 考勤日历与月汇总,按人 / 按项目未结算汇总,一键月结与工资条导出 PNG
  • 借支登记并在结算时自动抵扣,结算单可撤销回滚
  • 月度统计、自定义时间段统计,CSV / JSON 导出与 SQLite 备份下载
  • 支持飞牛 fnOS 一键安装、Docker 部署与 linux / darwin / windows 裸二进制

常见问题

如何修改端口?

飞牛 NAS 安装时可在向导中设置端口(默认 8909)。Docker 方式通过 -p 参数映射端口。二进制方式通过 -port 参数指定端口。

工资是怎么算出来的?

点工按天(支持 0.5 天)、点时按小时、计件按「数量 × 单价」计算,单价自动带出工人的默认日薪 / 时薪或计件项目的默认单价,单条记录可以覆盖。金额在服务端以整数「分」存储,前端展示时再转成元,不会出现浮点误差。

员工能帮别人记工吗?

不能。员工角色的账号只能给自己记工,可以查看自己的考勤、工资与结算单;组长可以帮本组工人记工、记借支;老板负责建班组、管理与月结。工人凭邀请码加入班组。

工资条怎么发给工人?

结算页面一键生成工资条,含记工明细、借支抵扣、实发金额与签字栏,可导出为 PNG 图片(直接微信发给工人)或复制为文字,方便工人确认留档。

数据存在哪里,会上传吗?

所有数据都保存在本地 SQLite 数据库(data/db/worklog.db),不上传云端;数据按用户隔离,多用户互不可见。备份数据目录即可,管理员也可以在应用内下载数据库快照或导出 CSV / JSON。应用内置的匿名使用统计只上报版本与部署形态等设备信息,可在系统配置中关闭。