如何搭建时间追踪应用:计时器、工时表与报表
时间追踪应用记录谁在做什么工作、做了多久,以及这些时间是否可以计费。要搭建这样的应用,你需要用于关联的客户和项目、即使浏览器标签页关闭也不会丢失的计时器、手动添加和修正记录的方式、每周工时表,以及能将原始记录汇总为总计的报表。AI 应用构建器只需一条清晰的提示词,就能生成一个可用的初始版本。真正重要的决定在于规则:取整方式、谁可以修改什么、何时锁定某一周的记录,以及什么算作可计费工时。
先明确你为什么要追踪时间
同一款应用,因用途不同,形态也会不同:
- 向客户计费。 按客户统计工时,为每个人或项目设定费率,并能清晰地导出用于开具发票的数据。准确性和审计记录最为重要。
- 为计时员工发放薪资。 上下班打卡、休息时间、加班规则,以及经理签核。需遵守当地的劳动法规,因此要确认你必须保存哪些记录。
- 了解时间都花在了哪里。 个人或团队层面的洞察,对比预估与实际耗时。录入速度比审批流程更重要。
第一版请只选择一个主要用途。自由职业者的计费追踪工具与仓库的排班打卡器,共享的只有计时器,其余部分几乎没有交集。
应用需要什么
数据
| 数据表 | 关键字段 |
|---|---|
| 客户 | 名称、默认小时费率、是否启用 |
| 项目 | 所属客户、名称、工时预算(可选)、默认是否可计费 |
| 任务或类别 | 所属项目、名称(设计、会议、支持)——初期可选 |
| 时间记录 | 人员、项目、任务、开始时间、结束时间、时长、备注、是否可计费、状态(草稿、已提交、已批准)、是否已开票 |
| 人员 | 姓名、邮箱、角色、成本费率或计费费率 |
每条记录都应存储开始和结束时间,并由它们推算出时长。对于手动输入「2 小时 15 分钟」这类没有具体时间的记录,可以只存储时长,但仍需保留日期。
页面
- 计时器与今日页面: 一个醒目的开始/停止按钮、项目选择器,以及下方的当日记录。
- 周视图: 一个表格,项目在左侧纵向排列,日期在顶部横向排列,人们可以直接在格子里输入工时。许多人比起计时器更喜欢这种方式。
- 报表: 按日期范围统计各客户、项目和人员的工时,区分可计费与不可计费工时,并支持 CSV 导出。
- 管理后台: 管理客户、项目、人员和费率。
权限
在动手搭建之前,先写清楚谁可以做什么:
- 人们只能查看和编辑自己的记录。
- 经理可以查看团队的记录并批准每一周的工时。
- 只有管理员可以修改费率,理想情况下,也只有管理员能看到费率。
- 记录一旦被批准或开票,除非管理员重新开启,否则任何人都不能再编辑。
最后这条规则正是让报表值得信赖的关键。我们关于为应用添加登录的指南涵盖了登录方面的内容,而基于角色的访问控制则介绍了角色相关的内容。
决策与权衡
计时器、手动录入,还是两者都要
计时器只有在人们记得启动它时才准确,而这并不总是能做到。手动录入对于习惯在周五集中填写一周工时的人来说很快。大多数团队两者都需要,并且还需要一种在事后修改计时器记录的方式。如果只能做一个,就做周视图:它更简单,还能覆盖忘记启动计时器的情况。
运行中的计时器保存在哪里
只在浏览器中计数的计时器,在标签页关闭时会丢失所有数据。应在有人点击开始时,把开始时间保存到数据库,然后用当前时间减去它来显示已经过的时长。这样,计时器就能在刷新页面、更换笔记本电脑或手机之间持续运行。还需要决定一个人能否同时运行两个计时器。通常的答案是不能:启动新的计时器会自动停止旧的。
取整
常见的规则是将每条记录向上取整到最近的 6、15 或 30 分钟。在数据库中保留精确时间,只在报表和账单中应用取整。在报表中同时显示两个数值,避免让任何人感到意外。
锁定与审批
如果没有锁定机制,上个月已计费的工时可能会在发票发出之后被修改。一个简单的模型是:人们提交一周的工时,经理批准,批准后的记录变为只读。如果你直接在应用中开票,应将记录标记为已开票,以防止重复计费。
时区与午夜
以 UTC 存储时间,并以用户所在的时区显示。需要决定一条从 23:00 持续到次日 01:00 的记录属于哪一天。通常的答案是它开始的那一天。
一个行之有效的首个提示词
为一家六人设计工作室搭建一个时间追踪应用。数据包括:客户(名称、小时费率)、项目(所属客户、名称、预算工时),以及时间记录(人员、项目、开始时间、结束时间、备注、是否可计费、状态 草稿/已提交/已批准)。页面包括:「今日」页面,带有开始/停止计时器和项目选择器,开始时间会保存到数据库,以便计时器在刷新后依然保持运行;「周」页面,项目为行,周一至周日为列,人们可以直接输入工时;「报表」页面,按日期范围统计各客户、项目和人员的工时,区分可计费与不可计费,并支持 CSV 导出;以及「管理」页面,用于管理客户、项目和人员。每人同一时间只能运行一个计时器。已批准的记录不可编辑。以 UTC 存储时间,并以用户的时区显示。设计简洁、快速,并支持键盘操作。
这条提示词明确了数据表、页面、计时器行为和锁定规则,这些都是 AI 否则只能去猜的内容。
搭建步骤
- 先做项目和手动录入。 客户、项目、添加记录的表单和列表。确保总计能正确相加。
- 计时器。 启动、停止、每人只能运行一个计时器,并保存开始时间。测试方法:启动计时器,关闭标签页,然后重新打开。
- 周表格。 在单元格中输入工时即可创建或更新记录。
- 登录和角色。 在真正的用户使用之前加入,确保没有人会意外看到费率或他人的记录。
- 提交与审批。 每周提交、经理审批,审批后变为只读。
- 报表与导出。 日期范围、分组、可计费拆分、CSV。
- 费率与开票接口(如果你要向客户计费)。将开票流程放在单独的步骤或应用中;参见如何搭建开票应用。
- 测试边界情况。 跨午夜的记录、夏令时切换所在的那一周、从两台设备同时启动两个计时器、编辑已批准的记录。
常见错误
- 只在浏览器中计算时间。 它在演示中能正常工作,但在真实使用中会丢失工时。
- 对存储的数值取整。 你将永远无法还原精确的时间。
- 已批准的周没有锁定。 报表将无法与发票对得上。
- 所有人都能看到所有人的费率。 从第一天起就应按角色隐藏费率。
- 必填字段过多。 如果记录工时要花费好几秒以上,人们就会停止记录,数据也就变成了虚构的内容。初期应将任务和备注设为可选。
- 在追踪工具里做成完整的项目管理器。 应将项目保持为简单的标签。如果你需要任务、看板和截止日期,那就是另一个项目管理工具,需要单独开发。
什么时候现成的追踪工具是更好的选择
如果你的团队需要计时器、周视图和报表,专门的时间追踪产品已经做得很好。它们还自带一些需要花费大量工作才能开发的功能:桌面和手机应用、空闲检测、日历和工具集成,以及提醒填写工时表。对于按小时发放的薪资,专门为此设计的工具在处理休息、加班和记录保存方面,比第一版的定制应用更加安全可靠。
当你的规则与现有工具不匹配、你希望工时与你已有的数据(工单、工作订单、长期合同、发票)相连、大团队按席位计费的成本不断累积,或者时间追踪只是一个更大的内部工具中的一部分时,再考虑自建。我们关于自建还是购买软件的指南梳理了这种权衡;如果你的工时目前保存在一个共享表格中,可以参考如何把电子表格变成应用。
在 Mythex 上搭建
在 Mythex 中,你可以在对话里描述追踪工具,智能体会在实时预览中将其构建出来。当记录需要保存时,它会添加一个专用的 Postgres 数据库,你可以直接提出这个需求,也可以输入 /database。文档中的内部工具用例建议第一版选择一个最痛苦的环节,这一点在这里很适用:先从记录和周表格开始,然后再添加计时器和审批。
团队的登录功能需要你使用自己的认证方式来添加(参见添加登录教程)。Mythex 账户面向的是构建应用的人,而不是使用你应用的人。核心流程跑通之后,可以使用 /test,让智能体在预览中逐步操作(启动计时器、添加记录、生成报表),并报告哪里出现了问题。如果需要视觉上的起点,可以浏览应用模板。
常见问题
时间追踪应用需要哪些功能?
客户和项目列表、开始/停止计时器、手动添加或修正记录的方式、每周工时表视图,以及按项目和人员统计工时的报表。审批、计费费率和导出功能可以在之后添加。
如何防止浏览器关闭后计时器丢失时间?
计时器一启动就把开始时间保存到数据库,并根据这个已保存的时间计算运行时长。这样,关闭标签页、刷新页面或切换设备都不会丢失任何数据。
时间需要取整吗?
存储精确的开始和结束时间,只在报表和账单中应用取整规则。这样之后修改取整规则时,无需改写历史数据。
自己开发时间追踪工具值得吗?
通常只有在你的规则很特殊,或者你希望工时与你已有的其他数据(例如工单、客户或发票)相关联时才值得。如果只需要普通的计时器和报表,现有的追踪工具更便宜、更快。