Hướng dẫn

Cách tạo ứng dụng theo dõi thời gian: bộ đếm giờ, bảng chấm công và báo cáo

Ứng dụng theo dõi thời gian ghi lại ai đã làm việc gì, trong bao lâu, và thời gian đó có thể tính phí hay không. Để tạo một ứng dụng như vậy, bạn cần khách hàng và dự án để gắn thời gian vào, một bộ đếm giờ vẫn hoạt động khi tab trình duyệt bị đóng, cách nhập và sửa mục thời gian bằng tay, một bảng chấm công theo tuần, và báo cáo biến các mục thô thành tổng số. Một công cụ tạo app bằng AI có thể tạo ra phiên bản đầu tiên chạy được từ một prompt rõ ràng. Các quyết định quan trọng là về quy tắc: làm tròn, ai được sửa gì, khi nào một tuần bị khóa, và thế nào là giờ tính phí.

Quyết định bạn theo dõi thời gian để làm gì

Cùng một ứng dụng sẽ khác đi tùy theo lý do đứng sau nó:

  • Tính phí khách hàng. Số giờ theo khách hàng, đơn giá theo người hoặc dự án, và một bản xuất sạch để lập hóa đơn. Độ chính xác và dấu vết kiểm toán là quan trọng nhất.
  • Bảng lương cho nhân viên theo giờ. Giờ vào và giờ ra, giờ nghỉ, quy tắc làm thêm giờ, và quản lý xác nhận. Luật lao động địa phương có hiệu lực, nên hãy kiểm tra những hồ sơ bạn bắt buộc phải lưu.
  • Hiểu thời gian đi đâu. Cho cá nhân hoặc đội: so sánh ước tính với thực tế. Tốc độ nhập quan trọng hơn quy trình phê duyệt.

Hãy chọn một mục tiêu chính cho phiên bản đầu. Bộ đếm cho freelancer tính phí và đồng hồ ca làm việc của một kho hàng có chung bộ đếm giờ và rất ít thứ khác.

Ứng dụng cần những gì

Dữ liệu

BảngTrường chính
Khách hàngTên, đơn giá theo giờ mặc định, đang hoạt động hay không
Dự ánKhách hàng, tên, ngân sách theo giờ (tùy chọn), mặc định có tính phí hay không
Tác vụ hoặc danh mụcDự án, tên (thiết kế, họp, hỗ trợ) — có thể bỏ qua lúc đầu
Mục thời gianNgười làm, dự án, tác vụ, thời điểm bắt đầu, thời điểm kết thúc, thời lượng, ghi chú, có tính phí hay không, trạng thái (nháp, đã gửi, đã duyệt), đã lập hóa đơn hay chưa
NgườiTên, email, vai trò, đơn giá chi phí hoặc đơn giá tính phí

Lưu thời điểm bắt đầu và kết thúc cho mọi mục và suy ra thời lượng từ đó. Mục nhập bằng tay kiểu “2 giờ 15 phút” không có giờ cụ thể thì có thể chỉ lưu thời lượng, nhưng vẫn phải giữ ngày.

Trang

  • Bộ đếm và hôm nay: một nút bắt đầu/dừng to, bộ chọn dự án, và các mục hôm nay bên dưới.
  • Chế độ xem tuần: lưới với các dự án ở cột bên trái và các ngày ở hàng ngang, nơi mọi người gõ số giờ trực tiếp. Nhiều người thích cách này hơn bộ đếm.
  • Báo cáo: số giờ theo khách hàng, dự án và người trong một khoảng thời gian, chia thành tính phí và không tính phí, kèm xuất CSV.
  • Quản trị: quản lý khách hàng, dự án, người và đơn giá.

Phân quyền

Hãy viết ra ai được làm gì trước khi xây:

  • Mọi người thấy và sửa mục của chính họ.
  • Quản lý xem mục của đội và phê duyệt tuần.
  • Chỉ quản trị viên được sửa đơn giá, và lý tưởng nhất là chỉ quản trị viên mới thấy chúng.
  • Không ai sửa mục đã được phê duyệt hoặc đã lập hóa đơn, trừ khi quản trị viên mở lại.

Quy tắc cuối cùng này là thứ làm cho báo cáo đáng tin cậy. Thêm đăng nhập cho app bao quát phần đăng nhập, và kiểm soát truy cập theo vai trò bao quát các vai trò.

Các quyết định và đánh đổi

Bộ đếm, nhập tay, hay cả hai

Bộ đếm chính xác khi mọi người nhớ bật nó, mà không phải lúc nào cũng vậy. Nhập tay nhanh với người điền tuần làm việc của mình vào thứ Sáu. Hầu hết đội cần cả hai, cùng cách sửa mục bộ đếm sau khi đã chạy. Nếu chỉ làm được một cái, hãy làm lưới theo tuần; nó đơn giản hơn và bao quát trường hợp quên bật bộ đếm.

Bộ đếm đang chạy nằm ở đâu

Bộ đếm chạy trong trình duyệt sẽ mất hết khi tab đóng. Hãy lưu thời điểm bắt đầu vào cơ sở dữ liệu khi người dùng nhấn bắt đầu, và hiển thị thời gian đã trôi bằng cách trừ thời điểm đó khỏi hiện tại. Khi đó bộ đếm vẫn chạy qua các lần tải lại, laptop và điện thoại. Hãy quyết định liệu một người có thể chạy hai bộ đếm cùng lúc không. Thường câu trả lời là không: bắt đầu một bộ mới sẽ dừng bộ cũ.

Làm tròn

Các quy tắc phổ biến là làm tròn mỗi mục lên đến 6, 15 hoặc 30 phút gần nhất. Giữ thời gian chính xác trong cơ sở dữ liệu và chỉ áp dụng làm tròn trong báo cáo và hóa đơn. Hiển thị cả hai con số trong báo cáo để không ai bất ngờ.

Khóa và phê duyệt

Không có khóa, số giờ đã tính phí của tháng trước có thể thay đổi sau khi hóa đơn đã gửi. Một mô hình đơn giản: mọi người gửi một tuần, quản lý phê duyệt, và các mục đã phê duyệt trở thành chỉ đọc. Nếu bạn lập hóa đơn từ app, hãy đánh dấu các mục đã lập hóa đơn để chúng không bị tính phí hai lần.

Múi giờ và nửa đêm

Lưu thời gian theo UTC và hiển thị theo múi giờ của người dùng. Hãy quyết định mục chạy từ 23:00 đến 01:00 thuộc về ngày nào. Câu trả lời thường gặp là ngày nó bắt đầu.

Prompt đầu tiên hiệu quả

Hãy tạo một ứng dụng theo dõi thời gian cho một studio thiết kế sáu người. Dữ liệu: khách hàng (tên, đơn giá theo giờ), dự án (khách hàng, tên, số giờ ngân sách), và mục thời gian (người, dự án, bắt đầu, kết thúc, ghi chú, tính phí có/không, trạng thái nháp/đã gửi/đã duyệt). Trang: trang Hôm nay với nút bắt đầu/dừng và bộ chọn dự án, lưu thời điểm bắt đầu vào cơ sở dữ liệu để bộ đếm còn chạy sau khi tải lại; trang Tuần với dự án là các hàng, từ thứ Hai đến Chủ nhật là các cột, nơi mọi người gõ số giờ trực tiếp; trang Báo cáo hiển thị số giờ theo khách hàng, dự án và người trong một khoảng ngày, chia thành tính phí và không tính phí, kèm xuất CSV; và trang Quản trị cho khách hàng, dự án và người. Mỗi người chỉ được chạy một bộ đếm. Mục đã phê duyệt không được sửa. Lưu thời gian theo UTC và hiển thị theo múi giờ người dùng. Thiết kế gọn, nhanh, dùng được bằng bàn phím.

Các bước xây dựng

  1. Dự án và nhập tay trước. Khách hàng, dự án, biểu mẫu thêm mục, và danh sách. Đảm bảo tổng cộng khớp nhau.
  2. Bộ đếm. Bắt đầu, dừng, một bộ đếm đang chạy cho mỗi người, thời điểm bắt đầu được lưu. Kiểm thử bằng cách bắt đầu bộ đếm, đóng tab rồi mở lại.
  3. Lưới tuần. Gõ số giờ vào một ô sẽ tạo hoặc cập nhật một mục.
  4. Đăng nhập và vai trò. Thêm trước khi người thật dùng, để không ai vô tình thấy đơn giá hay mục của người khác.
  5. Gửi và phê duyệt. Gửi theo tuần, quản lý phê duyệt, chỉ đọc sau khi được duyệt.
  6. Báo cáo và xuất dữ liệu. Khoảng ngày, nhóm, tách tính phí, CSV.
  7. Đơn giá và điểm kết nối lập hóa đơn nếu bạn tính phí khách hàng. Giữ việc tạo hóa đơn ở bước hoặc ứng dụng riêng; xem cách tạo ứng dụng lập hóa đơn.
  8. Kiểm thử các trường hợp biên. Mục vượt qua nửa đêm, tuần có chuyển giờ mùa hè, hai bộ đếm được bật từ hai thiết bị, sửa mục đã duyệt.

Lỗi thường gặp

  • Chỉ đếm thời gian trên trình duyệt. Nó chạy tốt trong bản demo nhưng làm mất giờ trong thực tế.
  • Làm tròn giá trị đã lưu. Bạn không bao giờ lấy lại được thời gian chính xác.
  • Không khóa tuần đã duyệt. Báo cáo sẽ không khớp với hóa đơn.
  • Mọi người thấy đơn giá của nhau. Ẩn đơn giá theo vai trò ngay từ đầu.
  • Quá nhiều trường bắt buộc. Nếu ghi thời gian mất hơn vài giây, mọi người sẽ ngừng làm, và dữ liệu thành hư cấu. Hãy để tác vụ và ghi chú là tùy chọn lúc đầu.
  • Xây một trình quản lý dự án đầy đủ bên trong công cụ theo dõi. Hãy giữ dự án như nhãn đơn giản. Nếu cần tác vụ, bảng và hạn chót, đó là một công cụ quản lý dự án, một việc xây dựng riêng.

Khi một công cụ theo dõi có sẵn là lựa chọn tốt hơn

Nếu đội bạn cần bộ đếm, chế độ xem tuần và báo cáo, các sản phẩm theo dõi thời gian chuyên dụng đã làm tốt việc này. Chúng còn đi kèm những thứ tốn công xây dựng thật sự: ứng dụng máy tính và điện thoại, phát hiện khi không hoạt động, tích hợp lịch và công cụ khác, và nhắc nhở điền bảng chấm công. Với bảng lương theo giờ, một công cụ được làm riêng cho mục đích đó sẽ xử lý giờ nghỉ, làm thêm giờ và lưu hồ sơ an toàn hơn một ứng dụng tự làm ở phiên bản đầu.

Hãy tự xây khi quy tắc của bạn không phù hợp, khi bạn muốn giờ được kết nối với dữ liệu bạn đã có (công việc, đơn công việc, hợp đồng duy trì, hóa đơn), khi giá theo ghế của một đội lớn cộng dồn, hoặc khi theo dõi thời gian chỉ là một phần của một công cụ nội bộ lớn hơn. Hướng dẫn xây hay mua phần mềm đi qua đánh đổi này, và nếu giờ làm việc của bạn hiện nằm trong một bảng tính chung, hãy xem cách biến bảng tính thành ứng dụng.

Xây dựng với Mythex

Trên Mythex, bạn mô tả công cụ trong chat và agent sẽ xây nó trong bản xem trước trực tiếp. Nó thêm một cơ sở dữ liệu Postgres riêng khi các mục cần được lưu, và bạn có thể yêu cầu trực tiếp hoặc gõ /database. Ca sử dụng công cụ nội bộ trong tài liệu gợi ý chọn một bước gây đau đầu nhất cho phiên bản đầu, điều này phù hợp ở đây: bắt đầu với các mục và lưới tuần, rồi thêm bộ đếm và phê duyệt.

Đăng nhập cho đội của bạn là thứ bạn thêm bằng cách tiếp cận xác thực riêng (công thức thêm đăng nhập). Tài khoản Mythex dành cho người xây dựng, không phải người dùng app của bạn. Khi luồng cốt lõi đã chạy, /test yêu cầu agent thao tác trên bản xem trước (bắt đầu bộ đếm, thêm một mục, chạy báo cáo) và báo cáo những gì bị lỗi. Để có điểm khởi đầu trực quan, xem các mẫu ứng dụng.

Câu hỏi thường gặp

Ứng dụng theo dõi thời gian cần những tính năng nào?

Danh sách khách hàng và dự án, bộ đếm giờ bắt đầu/dừng, cách nhập hoặc sửa mục thời gian bằng tay, chế độ xem bảng chấm công theo tuần, và báo cáo số giờ theo dự án và người. Phê duyệt, đơn giá tính phí và xuất dữ liệu là bước tiếp theo.

Làm sao để bộ đếm giờ không mất thời gian khi trình duyệt đóng?

Lưu thời điểm bắt đầu vào cơ sở dữ liệu ngay khi bộ đếm được bật, rồi tính thời lượng đang chạy dựa trên thời điểm đã lưu đó. Khi đó đóng tab, tải lại hoặc chuyển thiết bị đều không làm mất dữ liệu.

Có nên làm tròn thời gian không?

Hãy lưu thời điểm bắt đầu và kết thúc chính xác, và chỉ áp dụng làm tròn trong báo cáo và hóa đơn. Như vậy bạn có thể thay đổi quy tắc làm tròn sau này mà không phải viết lại lịch sử.

Có đáng để tự làm công cụ theo dõi thời gian không?

Thường chỉ khi quy tắc của bạn khác thường, hoặc bạn muốn gắn số giờ với dữ liệu khác bạn đã có, như công việc, khách hàng hay hóa đơn. Với bộ đếm và báo cáo đơn thuần, một công cụ có sẵn rẻ và nhanh hơn.

Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng 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 Українська اردو 简体中文 繁體中文(香港) 繁體中文(台灣)