指南

如何打造時間追蹤應用程式:計時器、工時表與報表

時間追蹤應用程式記錄誰在什麼工作上花了多少時間,以及這些時間能不能計費。要打造一個,你需要用來追蹤的客戶與專案、在瀏覽器分頁關閉後仍能保留的計時器、手動新增與修正紀錄的方式、每週工時表,以及把原始紀錄整理成總計的報表。AI 應用程式建構工具可以根據一份清楚的提示產生可運作的第一版。真正重要的決定都與規則有關:捨入、誰可以編輯什麼、何時鎖定某一週,以及什麼算是可計費的時數。

先決定你追蹤時間的目的

同樣的應用程式,會因為背後的目的不同而有不同的樣子:

  • 向客戶計費。 每個客戶的時數、每位員工或每個專案的費率,以及方便製作發票的乾淨匯出。準確性與稽核紀錄最重要。
  • 時薪員工的薪資計算。 上下班打卡、休息時間、加班規則,以及主管簽核。適用當地的勞動法規,所以要確認你必須保存哪些紀錄。
  • 了解時間都花在哪裡。 個人或團隊的洞察,預估與實際的對照。輸入的速度比核准流程更重要。

第一版要挑一個主要用途。自由接案者的計費追蹤器,和倉庫的輪班打卡機,可能共用計時器的概念,但其他地方幾乎沒有相同之處。

應用程式需要什麼

資料

資料表主要欄位
客戶名稱、預設時薪、是否啟用
專案所屬客戶、名稱、預算時數(可選)、預設是否可計費
任務或類別所屬專案、名稱(設計、會議、客服)——第一版可以先不做
時間紀錄人員、專案、任務、開始時間、結束時間、時長、備註、是否可計費、狀態(草稿、已提交、已核准)、是否已開立發票
人員姓名、電子郵件、角色、成本費率或計費費率

每一筆紀錄都要儲存開始與結束時間,並從中推算時長。以「2 小時 15 分鐘」這種方式手動輸入、沒有時間點的紀錄,可以只儲存時長,但仍要保存日期。

頁面

  • 計時與今日: 一個大的開始/停止按鈕,一個專案選擇器,下方列出今天的紀錄。
  • 週檢視: 左側是專案、上方是星期一到星期日的表格,人們可以直接在格子中輸入時數。許多人比起計時器更喜歡這種方式。
  • 報表: 依日期範圍,依客戶、專案與人員統計時數,並區分可計費與不可計費的部分,附 CSV 匯出。
  • 管理後台: 管理客戶、專案、人員與費率。

權限

動手建置之前,先寫下誰可以做什麼:

  • 人們只能看到與編輯自己的紀錄。
  • 主管可以看到團隊的紀錄,並核准每週工時。
  • 只有管理員可以更改費率,而且最好只有管理員能看到費率。
  • 紀錄一旦被核准或已開立發票,除非管理員重新開啟,否則沒有人可以編輯。

最後這條規則,正是讓報表值得信任的關鍵。我們的為應用程式加入登入功能指南涵蓋登入的部分,而角色型存取控制則涵蓋角色。

決定與取捨

計時器、手動輸入,還是兩者都要

計時器的準確度取決於人們是否記得按下開始,這並不總是做得到。手動輸入對於會在週五才補填整週的人來說很快。大多數團隊兩者都需要,也需要能在事後編輯計時紀錄的方式。如果只能做一種,就做週格線;它比較簡單,也能涵蓋忘了開始計時的情況。

進行中的計時器存在哪裡

在瀏覽器中計時的計時器,在分頁關閉時會把一切都弄丟。當有人按下開始時,就把開始時間存進資料庫,然後用現在的時間減去它,來顯示經過的時間。這樣計時器就能跨越重新整理、筆電與手機持續運作。另外要決定一個人能不能同時執行兩個計時器。通常的答案是不行:開始新的計時器會停止舊的那一個。

捨入

常見的規則是把每筆紀錄無條件進位到最接近的 6、15 或 30 分鐘。在資料庫中保留精確時間,只在報表與發票中套用捨入。在報表中同時顯示兩個數字,讓人不會感到意外。

鎖定與核准

如果沒有鎖定,上個月已計費的時數可能會在發票寄出後被更動。一個簡單的模式:人們提交一週的紀錄,主管核准,核准後的紀錄變成唯讀。如果你是從應用程式開立發票,就把紀錄標記為已開立發票,避免重複計費。

時區與午夜

以 UTC 儲存時間,並以使用者的時區顯示。要決定從 23:00 到 01:00 的紀錄屬於哪一天。通常的答案是它開始的那一天。

一個有效的首次提示

為一間六人的設計工作室打造一個時間追蹤應用程式。資料:客戶(名稱、時薪)、專案(所屬客戶、名稱、預算時數),以及時間紀錄(人員、專案、開始、結束、備註、是否可計費、狀態草稿/已提交/已核准)。頁面包括:「今日」頁面,有一個開始/停止計時器與專案選擇器,計時開始時就把開始時間存進資料庫,因此重新整理後計時器仍會持續;「週」頁面,專案為列、星期一到星期日為欄,人們可以直接輸入時數;「報表」頁面,依日期範圍顯示每位客戶、專案與人員的時數,並區分可計費與不可計費,附 CSV 匯出;以及「管理」頁面,管理客戶、專案與人員。每位使用者同時只能執行一個計時器。已核准的紀錄不能編輯。以 UTC 儲存時間,並以使用者的時區顯示。設計要簡潔、快速,並且適合用鍵盤操作。

建置步驟

  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 简体中文 繁體中文(香港)