指南

如何搭建时间追踪应用:计时器、工时表与报表

时间追踪应用记录谁在做什么工作、做了多久,以及这些时间是否可以计费。要搭建这样的应用,你需要用于关联的客户和项目、即使浏览器标签页关闭也不会丢失的计时器、手动添加和修正记录的方式、每周工时表,以及能将原始记录汇总为总计的报表。AI 应用构建器只需一条清晰的提示词,就能生成一个可用的初始版本。真正重要的决定在于规则:取整方式、谁可以修改什么、何时锁定某一周的记录,以及什么算作可计费工时。

先明确你为什么要追踪时间

同一款应用,因用途不同,形态也会不同:

  • 向客户计费。 按客户统计工时,为每个人或项目设定费率,并能清晰地导出用于开具发票的数据。准确性和审计记录最为重要。
  • 为计时员工发放薪资。 上下班打卡、休息时间、加班规则,以及经理签核。需遵守当地的劳动法规,因此要确认你必须保存哪些记录。
  • 了解时间都花在了哪里。 个人或团队层面的洞察,对比预估与实际耗时。录入速度比审批流程更重要。

第一版请只选择一个主要用途。自由职业者的计费追踪工具与仓库的排班打卡器,共享的只有计时器,其余部分几乎没有交集。

应用需要什么

数据

数据表关键字段
客户名称、默认小时费率、是否启用
项目所属客户、名称、工时预算(可选)、默认是否可计费
任务或类别所属项目、名称(设计、会议、支持)——初期可选
时间记录人员、项目、任务、开始时间、结束时间、时长、备注、是否可计费、状态(草稿、已提交、已批准)、是否已开票
人员姓名、邮箱、角色、成本费率或计费费率

每条记录都应存储开始和结束时间,并由它们推算出时长。对于手动输入「2 小时 15 分钟」这类没有具体时间的记录,可以只存储时长,但仍需保留日期。

页面

  • 计时器与今日页面: 一个醒目的开始/停止按钮、项目选择器,以及下方的当日记录。
  • 周视图: 一个表格,项目在左侧纵向排列,日期在顶部横向排列,人们可以直接在格子里输入工时。许多人比起计时器更喜欢这种方式。
  • 报表: 按日期范围统计各客户、项目和人员的工时,区分可计费与不可计费工时,并支持 CSV 导出。
  • 管理后台: 管理客户、项目、人员和费率。

权限

在动手搭建之前,先写清楚谁可以做什么:

  • 人们只能查看和编辑自己的记录。
  • 经理可以查看团队的记录并批准每一周的工时。
  • 只有管理员可以修改费率,理想情况下,也只有管理员能看到费率。
  • 记录一旦被批准或开票,除非管理员重新开启,否则任何人都不能再编辑。

最后这条规则正是让报表值得信赖的关键。我们关于为应用添加登录的指南涵盖了登录方面的内容,而基于角色的访问控制则介绍了角色相关的内容。

决策与权衡

计时器、手动录入,还是两者都要

计时器只有在人们记得启动它时才准确,而这并不总是能做到。手动录入对于习惯在周五集中填写一周工时的人来说很快。大多数团队两者都需要,并且还需要一种在事后修改计时器记录的方式。如果只能做一个,就做周视图:它更简单,还能覆盖忘记启动计时器的情况。

运行中的计时器保存在哪里

只在浏览器中计数的计时器,在标签页关闭时会丢失所有数据。应在有人点击开始时,把开始时间保存到数据库,然后用当前时间减去它来显示已经过的时长。这样,计时器就能在刷新页面、更换笔记本电脑或手机之间持续运行。还需要决定一个人能否同时运行两个计时器。通常的答案是不能:启动新的计时器会自动停止旧的。

取整

常见的规则是将每条记录向上取整到最近的 6、15 或 30 分钟。在数据库中保留精确时间,只在报表和账单中应用取整。在报表中同时显示两个数值,避免让任何人感到意外。

锁定与审批

如果没有锁定机制,上个月已计费的工时可能会在发票发出之后被修改。一个简单的模型是:人们提交一周的工时,经理批准,批准后的记录变为只读。如果你直接在应用中开票,应将记录标记为已开票,以防止重复计费。

时区与午夜

以 UTC 存储时间,并以用户所在的时区显示。需要决定一条从 23:00 持续到次日 01:00 的记录属于哪一天。通常的答案是它开始的那一天。

一个行之有效的首个提示词

为一家六人设计工作室搭建一个时间追踪应用。数据包括:客户(名称、小时费率)、项目(所属客户、名称、预算工时),以及时间记录(人员、项目、开始时间、结束时间、备注、是否可计费、状态 草稿/已提交/已批准)。页面包括:「今日」页面,带有开始/停止计时器和项目选择器,开始时间会保存到数据库,以便计时器在刷新后依然保持运行;「周」页面,项目为行,周一至周日为列,人们可以直接输入工时;「报表」页面,按日期范围统计各客户、项目和人员的工时,区分可计费与不可计费,并支持 CSV 导出;以及「管理」页面,用于管理客户、项目和人员。每人同一时间只能运行一个计时器。已批准的记录不可编辑。以 UTC 存储时间,并以用户的时区显示。设计简洁、快速,并支持键盘操作。

这条提示词明确了数据表、页面、计时器行为和锁定规则,这些都是 AI 否则只能去猜的内容。

搭建步骤

  1. 先做项目和手动录入。 客户、项目、添加记录的表单和列表。确保总计能正确相加。
  2. 计时器。 启动、停止、每人只能运行一个计时器,并保存开始时间。测试方法:启动计时器,关闭标签页,然后重新打开。
  3. 周表格。 在单元格中输入工时即可创建或更新记录。
  4. 登录和角色。 在真正的用户使用之前加入,确保没有人会意外看到费率或他人的记录。
  5. 提交与审批。 每周提交、经理审批,审批后变为只读。
  6. 报表与导出。 日期范围、分组、可计费拆分、CSV。
  7. 费率与开票接口(如果你要向客户计费)。将开票流程放在单独的步骤或应用中;参见如何搭建开票应用。
  8. 测试边界情况。 跨午夜的记录、夏令时切换所在的那一周、从两台设备同时启动两个计时器、编辑已批准的记录。

常见错误

  • 只在浏览器中计算时间。 它在演示中能正常工作,但在真实使用中会丢失工时。
  • 对存储的数值取整。 你将永远无法还原精确的时间。
  • 已批准的周没有锁定。 报表将无法与发票对得上。
  • 所有人都能看到所有人的费率。 从第一天起就应按角色隐藏费率。
  • 必填字段过多。 如果记录工时要花费好几秒以上,人们就会停止记录,数据也就变成了虚构的内容。初期应将任务和备注设为可选。
  • 在追踪工具里做成完整的项目管理器。 应将项目保持为简单的标签。如果你需要任务、看板和截止日期,那就是另一个项目管理工具,需要单独开发。

什么时候现成的追踪工具是更好的选择

如果你的团队需要计时器、周视图和报表,专门的时间追踪产品已经做得很好。它们还自带一些需要花费大量工作才能开发的功能:桌面和手机应用、空闲检测、日历和工具集成,以及提醒填写工时表。对于按小时发放的薪资,专门为此设计的工具在处理休息、加班和记录保存方面,比第一版的定制应用更加安全可靠。

当你的规则与现有工具不匹配、你希望工时与你已有的数据(工单、工作订单、长期合同、发票)相连、大团队按席位计费的成本不断累积,或者时间追踪只是一个更大的内部工具中的一部分时,再考虑自建。我们关于自建还是购买软件的指南梳理了这种权衡;如果你的工时目前保存在一个共享表格中,可以参考如何把电子表格变成应用。

在 Mythex 上搭建

在 Mythex 中,你可以在对话里描述追踪工具,智能体会在实时预览中将其构建出来。当记录需要保存时,它会添加一个专用的 Postgres 数据库,你可以直接提出这个需求,也可以输入 /database。文档中的内部工具用例建议第一版选择一个最痛苦的环节,这一点在这里很适用:先从记录和周表格开始,然后再添加计时器和审批。

团队的登录功能需要你使用自己的认证方式来添加(参见添加登录教程)。Mythex 账户面向的是构建应用的人,而不是使用你应用的人。核心流程跑通之后,可以使用 /test,让智能体在预览中逐步操作(启动计时器、添加记录、生成报表),并报告哪里出现了问题。如果需要视觉上的起点,可以浏览应用模板。

常见问题

时间追踪应用需要哪些功能?

客户和项目列表、开始/停止计时器、手动添加或修正记录的方式、每周工时表视图,以及按项目和人员统计工时的报表。审批、计费费率和导出功能可以在之后添加。

如何防止浏览器关闭后计时器丢失时间?

计时器一启动就把开始时间保存到数据库,并根据这个已保存的时间计算运行时长。这样,关闭标签页、刷新页面或切换设备都不会丢失任何数据。

时间需要取整吗?

存储精确的开始和结束时间,只在报表和账单中应用取整规则。这样之后修改取整规则时,无需改写历史数据。

自己开发时间追踪工具值得吗?

通常只有在你的规则很特殊,或者你希望工时与你已有的其他数据(例如工单、客户或发票)相关联时才值得。如果只需要普通的计时器和报表,现有的追踪工具更便宜、更快。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)