Як створити застосунок для обліку часу: таймери, табелі та звіти
Застосунок для обліку часу фіксує, хто над чим працював, скільки часу це зайняло і чи можна виставити цей час до оплати. Щоб його створити, потрібні клієнти та проєкти, для яких ведеться облік, таймер, який переживає закриття браузера, спосіб додати й виправити записи вручну, тижневий табель і звіти, що перетворюють сирі записи на підсумки. Конструктор застосунків на основі ШІ може створити робочу першу версію з одного чіткого промпту. Рішення, які мають значення, стосуються правил: округлення, хто що може редагувати, коли тиждень блокується і що є оплачуваним.
Визначте, для чого ви ведете облік часу
Один і той самий застосунок виглядає по-різному залежно від причини:
- Виставлення рахунків клієнтам. Години за клієнтом, ставка для людини чи проєкту та чистий експорт для рахунків. Найважливіші точність і журнал аудиту.
- Зарплата погодинних працівників. Відмітка приходу й відходу, перерви, правила понаднормових і погодження керівником. Діють місцеві трудові правила, тож перевірте, які записи ви зобов’язані вести.
- Розуміння, куди йде час. Особиста чи командна аналітика, оцінки проти фактичних витрат. Швидкість введення важливіша за процеси погодження.
Для першої версії оберіть одну головну задачу. Облік для фрилансера і зміна-годинник на складі мають спільний таймер і майже більше нічого.
Що потрібно застосунку
Дані
| Таблиця | Ключові поля |
|---|---|
| Клієнти | Назва, типова погодинна ставка, активний так/ні |
| Проєкти | Клієнт, назва, бюджет у годинах (необов’язково), оплачуваний за замовчуванням так/ні |
| Завдання або категорії | Проєкт, назва (дизайн, зустрічі, підтримка) — спочатку необов’язково |
| Записи часу | Людина, проєкт, завдання, час початку, час завершення, тривалість, примітка, оплачуваний так/ні, статус (чернетка, подано, затверджено), виставлено в рахунок так/ні |
| Люди | Ім’я, електронна пошта, роль, вартість або ставка для оплати |
Зберігайте час початку й завершення в кожному записі та виводьте з них тривалість. Записи, введені як «2 год 15 хв» без часу, можуть зберігати лише тривалість, але з датою.
Сторінки
- Таймер і сьогодні: велика кнопка старту та зупинки, вибір проєкту і сьогоднішні записи під ними.
- Вигляд тижня: сітка, де проєкти розташовані вертикально, а дні горизонтально, і люди вводять години прямо в клітинки. Багато людей вважають це зручнішим за таймери.
- Звіти: години за клієнтом, проєктом і людиною за діапазон дат з розподілом на оплачувані та неоплачувані та експортом у CSV.
- Адмін-панель: керування клієнтами, проєктами, людьми та ставками.
Права доступу
Запишіть, хто що може робити, перш ніж будувати:
- Люди бачать і редагують свої записи.
- Керівники бачать записи команди та затверджують тижні.
- Лише адміністратори змінюють ставки, і бажано, щоб лише адміністратори взагалі їх бачили.
- Ніхто не редагує запис після затвердження чи виставлення в рахунок, якщо адміністратор не відкрив його знову.
Останнє правило робить звіти надійними. Наш гайд про додавання входу до застосунку розповідає про частину з входом, а рольовий контроль доступу — про ролі.
Рішення та компроміси
Таймер, ручний ввід чи обидва варіанти
Таймери точні, якщо люди пам’ятають їх запускати, а це не завжди так. Ручний ввід швидкий для людей, які заповнюють свій тиждень у п’ятницю. Більшості команд потрібні обидва варіанти, а також спосіб відредагувати запис таймера пізніше. Якщо будувати лише один, будуйте сітку тижня: вона простіша й покриває випадок, коли забули запустити таймер.
Де живе запущений таймер
Таймер, що відлічує час у браузері, втрачає все, коли вкладку закрито. Зберігайте час початку в базі даних, коли людина натискає старт, і показуйте минулий час як різницю між поточним часом і збереженим. Таймер тоді працюватиме між оновленнями сторінки, ноутбуками й телефонами. Вирішіть, чи може одна людина вести два таймери одночасно. Зазвичай відповідь «ні»: запуск нового зупиняє старий.
Округлення
Поширені правила — округлювати кожен запис угору до 6, 15 або 30 хвилин. Зберігайте точний час у базі даних, а округлення застосовуйте лише у звітах і рахунках. Показуйте обидва числа у звітах, щоб ніхто не був здивований.
Блокування та погодження
Без блокування години минулого місяця можуть змінитися вже після того, як рахунок відправлено. Проста модель: люди подають тиждень, керівник його затверджує, а затверджені записи стають доступними лише для читання. Якщо ви виставляєте рахунки з застосунку, позначайте записи як виставлені, щоб їх не можна було оплатити двічі.
Часові пояси та північ
Зберігайте час у UTC і показуйте його в часовому поясі людини. Вирішіть, до якого дня належить запис, що триває з 23:00 до 01:00. Зазвичай відповідь така: до дня, коли він почався.
Перший промпт, який працює
Створи застосунок для обліку часу для дизайн-студії з шести людей. Дані: клієнти (назва, погодинна ставка), проєкти (клієнт, назва, бюджетні години) і записи часу (людина, проєкт, початок, кінець, примітка, оплачуваний так/ні, статус чернетка/подано/затверджено). Сторінки: сторінка «Сьогодні» з таймером старт/стоп і вибором проєкту, що зберігає час початку в базі даних, щоб таймер переживав оновлення сторінки; сторінка «Тиждень», де проєкти — це рядки, а понеділок–неділя — стовпці, і люди можуть вводити години прямо в клітинки; сторінка «Звіти» з годинами за клієнтом, проєктом і людиною за діапазон дат із розподілом на оплачувані й неоплачувані та експортом у CSV; сторінка адміністратора для клієнтів, проєктів і людей. Одночасно може працювати лише один таймер на людину. Затверджені записи не можна редагувати. Зберігай час у UTC і показуй його в часовому поясі користувача. Чистий, швидкий дизайн, зручний для клавіатури.
Кроки побудови
- Спочатку проєкти та ручні записи. Клієнти, проєкти, форма для додавання запису і список. Переконайтеся, що суми збігаються.
- Таймер. Старт, зупинка, один запущений таймер на людину, збережений час початку. Перевірте так: запустіть таймер, закрийте вкладку й відкрийте її знову.
- Сітка тижня. Введення годин у клітинку створює або оновлює запис.
- Вхід і ролі. Додайте їх до того, як користуватися застосунком справжнім людям, щоб ніхто випадково не побачив ставки чи чужі записи.
- Подання й погодження. Тижневе подання, затвердження керівником, доступність лише для читання після затвердження.
- Звіти й експорт. Діапазон дат, групування, розподіл на оплачувані, CSV.
- Ставки та інтеграція з рахунками, якщо ви виставляєте рахунки клієнтам. Створення рахунків тримайте окремим кроком або в окремому застосунку; див. як створити застосунок для виставлення рахунків.
- Перевірте крайні випадки. Запис через північ, тиждень зі зміною часу на літній, два таймери, запущені з двох пристроїв, редагування затвердженого запису.
Типові помилки
- Лічильник часу лише в браузері. Це працює в демо, але втрачає години в реальному використанні.
- Округлення збережених значень. Точний час ніколи не відновити.
- Немає блокування затверджених тижнів. Звіти перестають збігатися з рахунками.
- Усі бачать чужі ставки. Приховуйте ставки за роллю з першого дня.
- Надто багато обов’язкових полів. Якщо внесення часу займає більше кількох секунд, люди перестають це робити, і дані стають вигадкою. Спочатку зробіть завдання та примітку необов’язковими.
- Побудова повноцінного менеджера проєктів усередині трекера. Залиште проєкти простими мітками. Якщо потрібні завдання, дошки й дедлайни, це інструмент керування проєктами — окрема розробка.
Коли краще готовий трекер
Якщо команді потрібні таймер, тижневий вигляд і звіти, спеціалізовані продукти для обліку часу вже добре це роблять. До того ж вони дають речі, які потребують серйозної роботи: настільні та мобільні застосунки, виявлення бездіяльності, інтеграції з календарями та інструментами, нагадування заповнити табель. Для погодинної зарплати інструмент, створений для цього, безпечніше обробить перерви, понаднормові та ведення записів, ніж власний застосунок першої версії.
Створюйте власний застосунок, коли ваші правила не підходять до готових, коли хочете пов’язати години з даними, які вже ведете (роботи, наряди, абонементи, рахунки), коли оплата за місце у великій команді стає значною сумою або коли облік часу — лише частина ширшого внутрішнього інструменту. Наш гайд про створення чи купівлю програмного забезпечення пояснює цей вибір, а якщо ваші години зараз зберігаються в спільній таблиці, див. як перетворити електронну таблицю на застосунок.
Створення з Mythex
У Mythex ви описуєте трекер у чаті, а агент будує його в живому попередньому перегляді. Він додає окрему базу даних Postgres, коли потрібно зберігати записи, і ви можете попросити про це напряму або ввести /database. Сценарій внутрішнього інструмента у документації пропонує вибрати один болючий крок для першої версії, що тут підходить: почніть із записів і сітки тижня, а потім додайте таймери та погодження.
Вхід для вашої команди — це те, що ви додаєте власним підходом до автентифікації (рецепт додавання входу). Облікові записи Mythex призначені для людей, які створюють застосунок, а не для тих, хто ним користуватиметься. Коли основний сценарій працює, /test дає агентові змогу пройти по попередньому перегляду (запустити таймер, додати запис, сформувати звіт) і повідомити, що ламається. Для візуальної відправної точки перегляньте шаблони застосунків.
Запитання
Які функції потрібні застосунку для обліку часу?
Список клієнтів і проєктів, таймер старт/стоп, спосіб додати чи виправити записи вручну, тижневий вигляд табеля та звіт про години за проєктом і людиною. Погодження, ставки для оплати та експорт — наступні кроки.
Як не дати таймеру втратити час, коли браузер закривається?
Зберігайте час початку в базі даних щойно таймер запущено і розраховуйте поточну тривалість від цього збереженого часу. Тоді закриття вкладки, оновлення сторінки чи перехід на інший пристрій не призводять до втрат.
Чи варто округлювати час?
Зберігайте точні час початку й завершення, а правило округлення застосовуйте лише у звітах і рахунках. Так можна змінити правило округлення пізніше, не переписуючи історію.
Чи варто створювати власний трекер часу?
Зазвичай лише тоді, коли ваші правила незвичайні або ви хочете прив’язати години до інших даних, які вже ведете, наприклад до робіт, клієнтів чи рахунків. Для простих таймерів і звітів наявний трекер дешевший і швидший.