{"id":151851,"date":"2025-06-17T15:25:04","date_gmt":"2025-06-17T08:25:04","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=151851"},"modified":"2026-04-10T09:44:56","modified_gmt":"2026-04-10T02:44:56","slug":"absen-kerja-proyek","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/","title":{"rendered":"Cara Membuat Absen Kerja Proyek Beserta Contohnya"},"content":{"rendered":"<p>Absensi proyek digunakan untuk mencatat kehadiran tenaga kerja selama pekerjaan berlangsung di lapangan. Dokumen ini biasanya disusun per hari agar data pekerja yang masuk, izin, sakit, atau lembur dapat dipantau dengan lebih teratur.<\/p>\n<p>Dalam praktiknya, format absensi proyek bisa dibuat sederhana, asalkan informasi yang dicatat memang sesuai kebutuhan. Mulai dari nama pekerja, tanggal, posisi, hingga jam kerja, semuanya perlu ditulis dengan jelas supaya administrasi proyek tetap rapi.<\/p>\n<p>Itulah sebabnya, memahami cara membuat absensi proyek menjadi hal yang penting bagi perusahaan. Dengan format yang tepat, pencatatan kehadiran bisa dilakukan lebih mudah dan tetap nyaman digunakan dalam aktivitas harian.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#a\">Absensi kerja proyek<\/a> adalah sistem yang mencatat mencatat waktu masuk, keluar, dan total jam kerja setiap pekerja yang berada di lokasi proyek.<\/li>\n<li aria-level=\"1\">Terdapat 3 <a href=\"#b\">jenis absen kerja proyek<\/a>, yaitu absen harian, absen mingguan, dan absen bulanan.<\/li>\n<li aria-level=\"1\"><a href=\"#c\">Sistem HR membantu<\/a> perusahaan menghadapi tantangan pengelolaan absensi karyawan secara efisien dan akurat.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n \r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2><b><span id=\"apa-itu-absen-kerja-proyek\">Apa itu Absen Kerja Proyek?<\/span><\/b><\/h2>\n<p><span id=\"a\">Absensi kerja proyek adalah sistem pencatatan kehadiran khusus untuk pekerja yang berada di lokasi proyek. Absensi pekerja proyek umumnya terdiri dari beberapa komponen Informasi seperti identitas pekerja, tanggal, waktu masuk dan keluar, total jam kerja, keterangan, dan tanda tangan.<\/span><\/p>\n<p>Sistem ini berfungsi mencatat waktu masuk, keluar, dan total jam kerja setiap pekerja. Tidak seperti<a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-absensi-karyawan\/\"> absensi karyawan<\/a> di kantor, absensi kerja proyek dirancang untuk menyesuaikan kondisi lapangan yang dinamis, seperti lokasi yang berpindah-pindah dan waktu kerja yang bervariasi.<\/p>\n<p>Metode yang digunakan untuk mencatat kehadiran pun juga bermacam-macam. Dapat dilakukan dengan metode pencatatan manual atau dengan penggunaan teknologi terkini seperti <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-absensi-karyawan\/\">aplikasi absensi berbasis GPS<\/a>, biometrik, atau kartu <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/rfid\/\">RFID<\/a>.<\/p>\n<h2><strong>Manfaat Absen Kerja Proyek<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-161179 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences.webp\" alt=\"absen kerja proyek\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/The-Importance-of-Project-Work-Absences-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Sebelum kami mulai melakukan pembahasan lebih dalam mengenai absen kerja proyek, mari kita membedah terlebih dahulu mengapa penggunaan absen ini sangat penting dalam aktivitas kerja proyek konstruksi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berikut adalah penjelasan fungsi dari absen kerja proyek:\u00a0<\/span><\/p>\n<h3><strong data-start=\"220\" data-end=\"256\">1. Mencatat kehadiran secara akurat<\/strong><\/h3>\n<p>Absen kerja proyek membantu memastikan pencatatan kehadiran pekerja berjalan dengan tepat, terutama pada proyek yang melibatkan banyak tenaga kerja di lapangan.<\/p>\n<h3 data-start=\"427\" data-end=\"619\"><strong data-start=\"427\" data-end=\"457\">2.Memantau produktivitas tim<\/strong><\/h3>\n<p data-start=\"427\" data-end=\"619\">Dengan data absensi yang rapi dan real-time, perusahaan dapat menilai tingkat kehadiran, disiplin kerja, dan produktivitas masing-masing anggota tim proyek.<\/p>\n<h3 data-start=\"624\" data-end=\"837\"><strong data-start=\"624\" data-end=\"656\">3. Menghitung direct labor cost<\/strong><\/h3>\n<p data-start=\"624\" data-end=\"837\">Pencatatan jam kerja harian yang detail memudahkan perusahaan dalam memperkirakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/biaya-tenaga-kerja-langsung\/\"><strong data-start=\"744\" data-end=\"765\">direct labor cost<\/strong><\/a>, sehingga pengelolaan anggaran proyek menjadi lebih efisien dan akurat.<\/p>\n<h3 data-start=\"842\" data-end=\"1032\"><strong data-start=\"842\" data-end=\"880\">4. Mendukung pembuatan laporan proyek<\/strong><\/h3>\n<p data-start=\"842\" data-end=\"1032\">Data absensi harian menjadi salah satu basis dalam menyusun laporan proyek secara menyeluruh, termasuk dalam mengevaluasi penggunaan tenaga kerja.<\/p>\n<h3 data-start=\"1037\" data-end=\"1240\"><strong data-start=\"1037\" data-end=\"1074\">5. Memenuhi regulasi ketenagakerjaan<\/strong><\/h3>\n<p data-start=\"1037\" data-end=\"1240\">Sistem absensi proyek membantu perusahaan memenuhi standar ketenagakerjaan terkait jam kerja dan kehadiran, serta menghindari potensi pelanggaran administratif.<\/p>\n<p>Untuk menjaga kepatuhan jam kerja serta audit trail absensi yang terpusat, gunakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-software-terbaik-di-indonesia\/\" target=\"_blank\" rel=\"noopener\">software HRIS digital <\/a>agar pencatatan sesuai regulasi dan terdokumentasi rapi.<\/p>\n<h3 data-start=\"1245\" data-end=\"1462\"><strong data-start=\"1245\" data-end=\"1282\">6. Evaluasi untuk proyek selanjutnya<\/strong><\/h3>\n<p data-start=\"1245\" data-end=\"1462\">Riwayat kehadiran juga dapat dijadikan acuan dalam mengevaluasi performa tim, sehingga membantu dalam penempatan personel dan perencanaan tenaga kerja untuk proyek mendatang.<\/p>\n<style>\r\n.cta-in-article-image .desktop-banner{\r\n    display: none;\r\n    text-align: center;\r\n}\r\n.cta-in-article-image .desktop-mobile{\r\n    display: block;\r\n    text-align: center;\r\n    width: 100%;\r\n}\r\n\t.cta-in-article a {\r\n\t\tfont-size: 0px !important;\r\n\t\tcolor: #fff; \r\n\t\tpadding: 0px !important; \r\n\t\tborder-radius: 0px !important; \r\n\t\tdisplay: block !important; \r\n\t\ttext-decoration: none; \r\n\t}\r\n\t\r\n\t.cta-in-article {\r\n\t\tmargin: 0px !important;\r\n\t\tpadding: 0px !important;\r\n\t\tbox-shadow: none !important;\r\n\t}\r\n\t\r\n@media (min-width: 650px) {\r\n    .cta-in-article-image .desktop-banner {\r\n        display: block!important;\r\n    }\r\n}\r\n@media (min-width: 650px) {\r\n   .cta-in-article-image .desktop-mobile {\r\n        display: none!important;\r\n    }\r\n}\r\n<\/style>\r\n<div class=\"cta-in-article-image\">\r\n\t<a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp?blog&utm_source=blog&medium=banner-article\" target=\"_blank\" rel=\"noopener\">\r\n\t\t<div id=\"desktop-banner-container\">\r\n\t\t\t<div class=\"desktop-banner\">\r\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.Skema-Harga-web-resized.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"mobile-banner-container\">\r\n\t\t\t<div class=\"desktop-mobile\">\r\n\t\t\t\t<img decoding=\"async\" width=\"372\" height=\"465\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.-Skema-Harga-Mobile-372px.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/a>\r\n<\/div>\n<h2><strong>Periode Pencatatan Absen Kerja Proyek<\/strong><\/h2>\n<p><span id=\"b\">Setiap proyek memiliki kebutuhan administrasi yang berbeda, sehingga periode pencatatan absensi dapat disesuaikan dengan pola kerja di lapangan. Umumnya, pencatatan ini dibagi menjadi absensi harian, rekap mingguan, dan rekap bulanan.<\/span><\/p>\n<h3><strong>1. Absen harian<\/strong><\/h3>\n<p>Absen harian adalah pencatatan kehadiran pekerja yang dilakukan setiap hari kerja. Format ini biasanya memuat nama pekerja, tanggal, status kehadiran, jam masuk, jam pulang, dan keterangan tambahan bila diperlukan.<\/p>\n<p>Jenis ini paling sering digunakan dalam proyek yang membutuhkan pencatatan rutin. Data yang dicatat biasanya diperbarui pada hari yang sama oleh admin, mandor, atau pengawas lapangan.<\/p>\n<h3><strong>2. Absen mingguan<\/strong><\/h3>\n<p>Absen mingguan adalah pencatatan kehadiran pekerja dalam periode satu minggu. Format ini berisi rangkuman data kehadiran dari hari pertama sampai hari terakhir kerja dalam satu pekan.<\/p>\n<p>Jenis absen ini biasanya disusun dalam bentuk tabel rekap. Isi datanya tetap mencakup identitas pekerja, hari kerja, dan status kehadiran selama satu minggu.<\/p>\n<h3><strong>3. Absen bulanan<\/strong><\/h3>\n<p>Absen bulanan adalah pencatatan kehadiran pekerja dalam satu bulan penuh. Format ini umumnya digunakan untuk merangkum data absensi dalam periode yang lebih panjang.<\/p>\n<p>Dokumen ini biasanya berisi nama pekerja, tanggal kehadiran, jumlah hadir, izin, sakit, alfa, dan total hari kerja. Penyusunannya dapat dibuat langsung per bulan atau berdasarkan rekap dari absensi harian.<\/p>\n<h2><b>Cara Membuat Absen Kerja Proyek yang Efektif<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-161180 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek.webp\" alt=\"absen harian proyek\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Cara-Membuat-Absen-Kerja-Proyek-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Mengelola absensi proyek bukanlah tugas mudah. Sistem yang tidak tertata dapat menyebabkan data kehadiran tidak akurat dan sulit ditelusuri. Namun, dengan pendekatan yang tepat, absensi proyek dapat dikelola secara efektif.<\/p>\n<p>Berikut beberapa tips yang dapat diterapkan:<\/p>\n<h3><strong>1. Tentukan periode absensi yang akan digunakan<\/strong><\/h3>\n<p>Langkah pertama adalah menentukan apakah absensi akan dibuat dalam format harian, mingguan, atau bulanan. Untuk proyek lapangan, format harian biasanya lebih sering digunakan karena pencatatan kehadiran dilakukan setiap hari kerja.<\/p>\n<p>Setelah itu, sesuaikan periode tersebut dengan pola kerja proyek. Jika pekerja datang setiap hari dan jam kerjanya berubah-ubah, absensi harian akan lebih mudah digunakan dibanding rekap mingguan atau bulanan.<\/p>\n<h3><strong>2. Tentukan data apa saja yang harus dicatat<\/strong><\/h3>\n<p>Sebelum membuat tabel absensi, tentukan dulu informasi yang memang dibutuhkan. Data utama biasanya meliputi nama pekerja, jabatan atau divisi, tanggal, jam masuk, jam pulang, dan status kehadiran.<\/p>\n<p>Bila diperlukan, tambahkan kolom keterangan untuk mencatat izin, sakit, lembur, atau ketidakhadiran tanpa keterangan. Hindari memasukkan kolom yang tidak relevan agar format tetap ringkas dan mudah diisi.<\/p>\n<h3><strong>3. Buat format tabel absensi secara jelas<\/strong><\/h3>\n<p>Setelah data ditentukan, susun tabel absensi dengan urutan kolom yang mudah dibaca. Contoh susunan yang umum digunakan adalah nomor, nama pekerja, posisi, tanggal, jam masuk, jam pulang, status, dan keterangan.<\/p>\n<p>Gunakan judul kolom yang langsung dipahami oleh admin proyek maupun pengawas lapangan. Format ini bisa dibuat di kertas, Excel, Google Sheets, atau sistem digital sesuai kebutuhan perusahaan.<\/p>\n<h3><strong>4. Tetapkan kode atau status kehadiran<\/strong><\/h3>\n<p>Agar pencatatan lebih konsisten, tentukan status kehadiran yang akan dipakai sejak awal. Misalnya, H untuk hadir, I untuk izin, S untuk sakit, A untuk alfa, dan L untuk lembur.<\/p>\n<p>Penetapan kode ini penting supaya semua pihak menggunakan istilah yang sama. Dengan begitu, data absensi tidak mudah membingungkan saat direkap di akhir periode.<\/p>\n<h3><strong>5. Tentukan siapa yang bertugas mengisi absensi<\/strong><\/h3>\n<p>Absen proyek harus memiliki penanggung jawab yang jelas. Pengisian bisa dilakukan oleh mandor, admin proyek, supervisor lapangan, atau pihak lain yang memang ditugaskan secara khusus.<\/p>\n<p>Jangan biarkan absensi diisi oleh banyak orang tanpa aturan yang sama. Hal ini sering membuat data tidak seragam dan sulit diperiksa kembali.<\/p>\n<h3><strong>6. Tetapkan waktu pengisian absensi<\/strong><\/h3>\n<p>Setelah penanggung jawab ditentukan, buat aturan kapan absensi harus diisi. Umumnya, pencatatan dilakukan saat pekerja datang, saat pergantian shift, atau setelah pekerjaan selesai pada hari yang sama.<\/p>\n<p>Waktu pengisian perlu ditetapkan sejak awal agar tidak ada data yang tertunda. Semakin lama pencatatan ditunda, semakin besar kemungkinan data kehadiran tidak sesuai kondisi sebenarnya.<\/p>\n<h3><strong>7. Periksa kembali data sebelum disimpan<\/strong><\/h3>\n<p>Setelah absensi diisi, lakukan pengecekan sederhana pada nama pekerja, tanggal, status kehadiran, dan jam kerja. Pemeriksaan ini penting untuk memastikan tidak ada kolom kosong, data ganda, atau kesalahan penulisan.<\/p>\n<p>Langkah ini sebaiknya dilakukan setiap hari, bukan menunggu sampai akhir minggu atau akhir bulan. Dengan begitu, koreksi dapat dilakukan lebih cepat saat data masih mudah dilacak.<\/p>\n<h3><strong>8. Simpan dan rekap absensi secara teratur<\/strong><\/h3>\n<p>Absensi yang sudah diisi perlu disimpan dengan susunan yang rapi agar mudah dicari kembali. Jika menggunakan format manual, dokumen dapat disusun berdasarkan tanggal atau nama proyek.<\/p>\n<p>Jika menggunakan format digital, file dapat dikelompokkan per minggu atau per bulan. Rekap ini akan memudahkan proses administrasi lanjutan tanpa perlu mencari data satu per satu.<\/p>\n<style>\r\n    * {\r\n        margin: 0;\r\n        padding: 0;\r\n        box-sizing: border-box;\r\n\/*         font-family: 'Roboto', sans-serif; *\/\r\n    }\r\n\t\r\n\t.hashy-content a {\r\n\t\t\tcolor: #b0e0e6  !important;\r\n\t\t\ttext-decoration: underline !important;\r\n\t}\r\n\t.hashy-content a:hover {\r\n\t\t\ttext-decoration: underline !important;\r\n\t}\r\n\t\r\n\t.hashy-content .hashy-cta {\r\n\t\ttext-decoration: none !important;\r\n\t}\r\n\t\r\n\t.hashy-content .hashy-cta:hover {\r\n\t\t\ttext-decoration: none !important;\r\n\t}\r\n\r\n    .hashylogo {\r\n        width: 280px !important;\r\n        height: 70px !important;\r\n    }\r\n\r\n    .hashyrobot {\r\n        position: absolute;\r\n        top: -30%;\r\n        left: 80%;\r\n\t\tz-index: 10;\r\n    }\r\n\r\n    .hashy {\r\n\t\tmargin: 80px 0px 30px 0px;\r\n        display: flex;\r\n        gap: 16px;\r\n        flex-direction: column;\r\n\t\tposition: relative;\r\n    }\r\n\r\n    .hashy-fact {\r\n        width: 200px;\r\n        height: 55px;\r\n        justify-content: center;\r\n        color: #FFF !important;\r\n        text-align: center;\r\n        font-family: Roboto;\r\n        font-size: 20px;\r\n        font-style: normal;\r\n        font-weight: 700;\r\n        line-height: normal;\r\n        display: flex;\r\n        padding: 12px 30px;\r\n        align-items: center;\r\n        gap: 8px;\r\n        border-radius: 48px;\r\n        background: linear-gradient(238deg, #7B00FF 2.44%, #FBB8FF 154.72%), #F3E3FF;\r\n        box-shadow: 0px 0px 12px 0px rgba(125, 2, 255, 0.30);\r\n    }\r\n\t\r\n\t.hashy-fact p {\r\n\t\tcolor: #FFF !important;align-content\r\n\t}\r\n\r\n    .hashy-fact-star {\r\n        position: absolute;\r\n        top: -2%;\r\n        left: 200px;\r\n        width: 50px;\r\n        height: 38px;\r\n    }\r\n\r\n    .hashy-content {\r\n        width: 100%;\r\n        height: auto;\r\n        justify-content: center;\r\n        border-radius: 12px;\r\n        padding: 24px;\r\n        display: flex;\r\n        flex-direction: column;\r\n        gap: 16px;\r\n        color: #fff !important;\r\n        background: linear-gradient(238deg, #7B00FF 2.44%, #FBB8FF 154.72%), #F3E3FF;\r\n        box-shadow: 0px 0px 12px 0px #7D02FF4D;\r\n        border: 1px solid #7D02FF;\r\n        position: relative;\r\n    }\r\n\r\n    .hashy-content h3 {\r\n        color: #FFF !important;\r\n        font-size: 22px;\r\n        font-style: normal;\r\n        font-weight: 800;\r\n        line-height: normal;\r\n        margin: 0px !important;\r\n    }\r\n    \r\n    .hashy-content p {\r\n        margin-bottom: 0px !important;\r\n\t\tcolor: #FFF !important;\r\n    }\r\n    \r\n    .hashy p {\r\n        margin-bottom: 0px !important;\r\n    }\r\n\r\n     .hashy-cta {\r\n        cursor: pointer;\r\n        justify-content: center;\r\n        align-items: center;\r\n        width: fit-content;\r\n        height: 45px;\r\n        border: 1px solid #7D02FF;\r\n        background: #F8EEFF;\r\n        box-shadow: 0px 4px 4px 0px #00000040, \r\n                   0px 0px 15.5px 0px #FFFFFF66;\r\n        padding: 12px 24px;\r\n        gap: 8px;\r\n        border-radius: 8px;\r\n        position: relative;\r\n        overflow: hidden;\r\n        transition: all 0.3s ease;\r\n        text-decoration: none;\r\n    }\r\n\r\n    .hashy-cta p {\r\n        color: #8627DE !important;\r\n        text-align: center;\r\n        font-weight: 800;\r\n        font-size: 16px;\r\n        line-height: 100%;\r\n    }\r\n\r\n    .hashy-cta img {\r\n        width: 25px;\r\n        height: 20px;\r\n        margin-bottom: 0px !important;\r\n    }\r\n\r\n    .hashy-cta::before {\r\n        content: '';\r\n        position: absolute;\r\n        top: 0;\r\n        left: -100%;\r\n        width: 60%;\r\n        height: 100%;\r\n        background: linear-gradient(\r\n            90deg,\r\n            transparent,\r\n            rgba(98, 0, 234, 0.4),\r\n            rgba(98, 0, 234, 0.6),\r\n            transparent\r\n        );\r\n        transform: skewX(-15deg);\r\n        animation: visible-shimmer 2.5s infinite;\r\n    }\r\n\r\n    @keyframes visible-shimmer {\r\n        100% {\r\n            left: 150%;\r\n        }\r\n    }\r\n\r\n    .hashy-cta:hover {\r\n        transform: translateY(-2px);\r\n        box-shadow: 0 6px 20px rgba(125, 2, 255, 0.4);\r\n    }\r\n\r\n    .hashy-cta:active {\r\n        transform: translateY(0);\r\n    }\r\n\r\n    @media screen and (max-width: 550px) {\r\n\t\t.hashy{\r\n\t\t\tmargin: 50px 0px 30px 0px;\r\n\t\t}\r\n        .hashy-fact {\r\n            display: flex;\r\n            padding: 8px 20px;\r\n            align-items: center;\r\n            gap: 8px;\r\n            border-radius: 48px;\r\n            background: linear-gradient(242deg, #B14CF1 2.92%, #7B00FF 104.91%), #F3E3FF;\r\n            box-shadow: 0px 0px 12px 0px rgba(125, 2, 255, 0.30);\r\n        }\r\n\r\n        .hashy-fact-star {\r\n            width: 36px;\r\n            height: 29px;\r\n\t\t\tleft:52%;\r\n        }\r\n\t\t\r\n\t\t.hashy-fact {\r\n    \t\twidth: fit-content;\r\n\t\t\theight: auto;align-content\r\n\t\t}\r\n\r\n        .hashy-fact p {\r\n            color: #FFF !important;\r\n            text-align: center;\r\n            font-size: 18px;\r\n            font-weight: 700;\r\n            line-height: normal;\r\n        }\r\n\r\n        .hashy-content {\r\n            display: flex;\r\n            width: 100%;\r\n            padding: 16px;\r\n            flex-direction: column;\r\n            align-items: flex-start;\r\n            border-radius: 8px;\r\n            border: 1px solid #7D02FF;\r\n            background: linear-gradient(238deg, #7B00FF 2.44%, #FBB8FF 154.72%), #F3E3FF;\r\n            box-shadow: 0px 0px 12px 0px rgba(125, 2, 255, 0.30);\r\n            gap: 12px;\r\n        }\r\n\r\n        .hashy-content h3 {\r\n            color: #FFF !important;\r\n            font-family: Roboto;\r\n            font-size: 16px;\r\n\t\t\tpadding: 0px !important;\r\n            font-style: normal;\r\n            font-weight: 800;\r\n            line-height: normal;\r\n        }\r\n\r\n        .hashy-content p {\r\n            color: #FFF !important;\r\n            font-size: 14px;\r\n            font-weight: 400;\r\n            line-height: 18px;\r\n        }\r\n\t\t\r\n        .hashy-cta {\r\n            display: flex;\r\n            padding: 12px 16px;\r\n            align-items: center;\r\n            gap: 8px;\r\n            width: fit-content;\r\n            border-radius: 8px;\r\n            border: 1px solid #7D02FF;\r\n            background: #F8EEFF;\r\n            box-shadow: 0px 0px 15.5px 0px rgba(255, 255, 255, 0.40), 0px 4px 4px 0px rgba(0, 0, 0, 0.25);\r\n        }\r\n\r\n        .hashy-cta p {\r\n            color: #8627DE !important;\r\n            text-align: center;\r\n            font-size: 14px;\r\n            font-weight: 800;\r\n            line-height: normal;\r\n        }\r\n\r\n        .hashyrobot {\r\n            top: -17%;\r\n            left: 75%;\r\n            width: 64px;\r\n            height: 110px;        \r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div>\r\n    <div class=\"hashy\">\r\n        <div class=\"hashy-fact\">\r\n            <p>Tahukah Anda?<\/p>\r\n\t\t\t<div  class=\"hashy-fact-star\">\r\n\t\t\t\t\t  <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"36\" height=\"28\" viewBox=\"0 0 36 28\" fill=\"none\">\r\n\t\t\t\t\t  <path d=\"M17.7875 22.5125C20.7747 23.1401 21.7146 24.0249 22.3263 26.9054C22.3463 26.9933 22.3964 27.0718 22.4684 27.1281C22.5404 27.1844 22.6299 27.215 22.7222 27.215C22.8145 27.215 22.904 27.1844 22.976 27.1281C23.048 27.0718 23.0981 26.9933 23.1181 26.9054C23.7619 23.9936 24.6697 23.0773 27.6248 22.5125C27.7148 22.493 27.7954 22.4441 27.8532 22.374C27.9109 22.3038 27.9424 22.2165 27.9424 22.1266C27.9424 22.0366 27.9109 21.9493 27.8532 21.8792C27.7954 21.809 27.7148 21.7601 27.6248 21.7406C24.6439 21.1131 23.704 20.2282 23.1181 17.3477C23.0981 17.2599 23.048 17.1813 22.976 17.1251C22.904 17.0688 22.8145 17.0381 22.7222 17.0381C22.6299 17.0381 22.5404 17.0688 22.4684 17.1251C22.3964 17.1813 22.3463 17.2599 22.3263 17.3477C21.6825 20.2533 20.7747 21.1695 17.8196 21.7406C17.7285 21.7563 17.6456 21.8018 17.5847 21.8697C17.5237 21.9376 17.4885 22.0238 17.4847 22.1139C17.481 22.2041 17.5089 22.2927 17.564 22.3652C17.6191 22.4378 17.6979 22.4897 17.7875 22.5125Z\" fill=\"#AF48F2\"\/>\r\n\t\t\t\t\t  <path d=\"M0.643802 13.5823C7.6355 14.8374 9.54115 16.7201 10.8288 23.5103C10.8288 23.6767 10.8966 23.8363 11.0173 23.954C11.1381 24.0717 11.3018 24.1378 11.4726 24.1378C11.6433 24.1378 11.8071 24.0717 11.9278 23.954C12.0485 23.8363 12.1164 23.6767 12.1164 23.5103C13.404 16.695 15.3354 14.8374 22.2949 13.5823C22.4656 13.5823 22.6294 13.5161 22.7501 13.3984C22.8709 13.2808 22.9387 13.1211 22.9387 12.9547C22.9387 12.7883 22.8709 12.6286 22.7501 12.5109C22.6294 12.3933 22.4656 12.3271 22.2949 12.3271C15.3032 11.072 13.404 9.22071 12.1164 2.40539C12.1164 2.23895 12.0485 2.07933 11.9278 1.96164C11.8071 1.84395 11.6433 1.77783 11.4726 1.77783C11.3018 1.77783 11.1381 1.84395 11.0173 1.96164C10.8966 2.07933 10.8288 2.23895 10.8288 2.40539C9.54115 9.22071 7.60975 11.072 0.643802 12.3271C0.473055 12.3271 0.309302 12.3933 0.188565 12.5109C0.067829 12.6286 0 12.7883 0 12.9547C0 13.1211 0.067829 13.2808 0.188565 13.3984C0.309302 13.5161 0.473055 13.5823 0.643802 13.5823Z\" fill=\"#AF48F2\"\/>\r\n\t\t\t\t\t  <path d=\"M22.8576 7.12452C27.2547 7.84621 28.2848 8.85659 29.0316 13.1428C29.0418 13.2081 29.0757 13.2677 29.1271 13.3107C29.1784 13.3538 29.2439 13.3774 29.3117 13.3774C29.3794 13.3774 29.445 13.3538 29.4963 13.3107C29.5477 13.2677 29.5816 13.2081 29.5917 13.1428C30.3643 8.85659 31.3751 7.85249 35.7723 7.12452C35.8371 7.11097 35.8952 7.07617 35.9368 7.02592C35.9785 6.97567 36.0012 6.91301 36.0012 6.84839C36.0012 6.78378 35.9785 6.72112 35.9368 6.67086C35.8952 6.62061 35.8371 6.58581 35.7723 6.57226C31.3751 5.84429 30.3643 4.8402 29.5917 0.553954C29.5816 0.488664 29.5477 0.429094 29.4963 0.38605C29.445 0.343005 29.3794 0.319336 29.3117 0.319336C29.2439 0.319336 29.1784 0.343005 29.1271 0.38605C29.0757 0.429094 29.0418 0.488664 29.0316 0.553954C28.2848 4.8402 27.2547 5.84429 22.8576 6.59737C22.8029 6.61786 22.7559 6.65402 22.7228 6.70107C22.6896 6.74812 22.6719 6.80386 22.6719 6.86094C22.6719 6.91802 22.6896 6.97376 22.7228 7.02082C22.7559 7.06787 22.8029 7.10403 22.8576 7.12452Z\" fill=\"#AF48F2\"\/>\r\n\t\t\t\t\t<\/svg>\r\n\t\t\t\t<\/div> \r\n        <\/div>\r\n\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Hashy-Desktop-1-1.webp\" width=\"96\" height=\"166\" alt=\"\" class=\"hashyrobot\">\r\n\r\n        <div class=\"hashy-content\">\r\n\t\t\t<p>Dengan <a href='https:\/\/www.hashmicro.com\/id\/ai-agent-untuk-hr\/'>software HR<\/a> HashMicro berbasis AI, Anda dapat mengecek dan menyetujui cuti hanya lewat chatbox, mengelola reimburse dengan mudah, dan membuat laporan cuti instan. Permudah pengelolaan karyawan dengan software HR HashMicro!<\/p>\r\n\r\n<a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/?medium=cta-button-fun-fact\" class=\"hashy-cta\" style=\"display: flex;\">\r\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"15\" viewBox=\"0 0 36 28\" fill=\"none\">\r\n  <path d=\"M17.7875 22.5125C20.7747 23.1401 21.7146 24.0249 22.3263 26.9054C22.3463 26.9933 22.3964 27.0718 22.4684 27.1281C22.5404 27.1844 22.6299 27.215 22.7222 27.215C22.8145 27.215 22.904 27.1844 22.976 27.1281C23.048 27.0718 23.0981 26.9933 23.1181 26.9054C23.7619 23.9936 24.6697 23.0773 27.6248 22.5125C27.7148 22.493 27.7954 22.4441 27.8532 22.374C27.9109 22.3038 27.9424 22.2165 27.9424 22.1266C27.9424 22.0366 27.9109 21.9493 27.8532 21.8792C27.7954 21.809 27.7148 21.7601 27.6248 21.7406C24.6439 21.1131 23.704 20.2282 23.1181 17.3477C23.0981 17.2599 23.048 17.1813 22.976 17.1251C22.904 17.0688 22.8145 17.0381 22.7222 17.0381C22.6299 17.0381 22.5404 17.0688 22.4684 17.1251C22.3964 17.1813 22.3463 17.2599 22.3263 17.3477C21.6825 20.2533 20.7747 21.1695 17.8196 21.7406C17.7285 21.7563 17.6456 21.8018 17.5847 21.8697C17.5237 21.9376 17.4885 22.0238 17.4847 22.1139C17.481 22.2041 17.5089 22.2927 17.564 22.3652C17.6191 22.4378 17.6979 22.4897 17.7875 22.5125Z\" fill=\"#AF48F2\"\/>\r\n  <path d=\"M0.643802 13.5823C7.6355 14.8374 9.54115 16.7201 10.8288 23.5103C10.8288 23.6767 10.8966 23.8363 11.0173 23.954C11.1381 24.0717 11.3018 24.1378 11.4726 24.1378C11.6433 24.1378 11.8071 24.0717 11.9278 23.954C12.0485 23.8363 12.1164 23.6767 12.1164 23.5103C13.404 16.695 15.3354 14.8374 22.2949 13.5823C22.4656 13.5823 22.6294 13.5161 22.7501 13.3984C22.8709 13.2808 22.9387 13.1211 22.9387 12.9547C22.9387 12.7883 22.8709 12.6286 22.7501 12.5109C22.6294 12.3933 22.4656 12.3271 22.2949 12.3271C15.3032 11.072 13.404 9.22071 12.1164 2.40539C12.1164 2.23895 12.0485 2.07933 11.9278 1.96164C11.8071 1.84395 11.6433 1.77783 11.4726 1.77783C11.3018 1.77783 11.1381 1.84395 11.0173 1.96164C10.8966 2.07933 10.8288 2.23895 10.8288 2.40539C9.54115 9.22071 7.60975 11.072 0.643802 12.3271C0.473055 12.3271 0.309302 12.3933 0.188565 12.5109C0.067829 12.6286 0 12.7883 0 12.9547C0 13.1211 0.067829 13.2808 0.188565 13.3984C0.309302 13.5161 0.473055 13.5823 0.643802 13.5823Z\" fill=\"#AF48F2\"\/>\r\n  <path d=\"M22.8576 7.12452C27.2547 7.84621 28.2848 8.85659 29.0316 13.1428C29.0418 13.2081 29.0757 13.2677 29.1271 13.3107C29.1784 13.3538 29.2439 13.3774 29.3117 13.3774C29.3794 13.3774 29.445 13.3538 29.4963 13.3107C29.5477 13.2677 29.5816 13.2081 29.5917 13.1428C30.3643 8.85659 31.3751 7.85249 35.7723 7.12452C35.8371 7.11097 35.8952 7.07617 35.9368 7.02592C35.9785 6.97567 36.0012 6.91301 36.0012 6.84839C36.0012 6.78378 35.9785 6.72112 35.9368 6.67086C35.8952 6.62061 35.8371 6.58581 35.7723 6.57226C31.3751 5.84429 30.3643 4.8402 29.5917 0.553954C29.5816 0.488664 29.5477 0.429094 29.4963 0.38605C29.445 0.343005 29.3794 0.319336 29.3117 0.319336C29.2439 0.319336 29.1784 0.343005 29.1271 0.38605C29.0757 0.429094 29.0418 0.488664 29.0316 0.553954C28.2848 4.8402 27.2547 5.84429 22.8576 6.59737C22.8029 6.61786 22.7559 6.65402 22.7228 6.70107C22.6896 6.74812 22.6719 6.80386 22.6719 6.86094C22.6719 6.91802 22.6896 6.97376 22.7228 7.02082C22.7559 7.06787 22.8029 7.10403 22.8576 7.12452Z\" fill=\"#AF48F2\"\/>\r\n<\/svg>\r\n                <p>Dapatkan demo gratis sekarang!<\/p>\r\n            <\/a>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\n<h2><strong style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 27px;\">Download Template Absen Kerja Proyek<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Berikut adalah template dari contoh absensi pekerja proyek yang bisa Anda unduh. Berikut di bawah ini adalah contohnya:\u00a0<\/span><\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">Template Absen Kerja Proyek<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Template-Absen-Kerja-Proyek.webp\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Template_Absen_Harian_Proyek-.xlsx\"\r\n\t\t\tdata-format=\"excel\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Sekarang<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/Template_Absen_Harian_Proyek-.pdf\"\r\n\t\t\tdata-format=\"pdf\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Sekarang<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\t<\/div>\r\n\t\r\n\t\t<div class=\"download-bottom\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Template-Absen-Kerja-Proyek.webp\" alt=\"Template Formulir Absen Kerja Proyek\">\r\n\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<h2><strong>Jenis Absensi Kerja Harian Proyek<\/strong><\/h2>\n<div style=\"width: 100%; max-width: 1000px; margin: 24px auto; font-family: Arial, sans-serif; background: #ffffff; border: 1px solid #e7def6; border-radius: 18px; overflow: hidden; box-shadow: 0 8px 24px rgba(80,35,137,0.08);\">\n<div style=\"background: linear-gradient(135deg, #502389 0%, #6b35a8 100%); padding: 28px 24px; text-align: center;\">\n<p style=\"margin: 10px auto 0; max-width: 760px; font-size: 15px; line-height: 1.7; color: #f3ebff;\">Absensi kerja harian proyek dapat dibedakan berdasarkan cara pencatatannya. Format yang digunakan biasanya menyesuaikan kondisi lapangan, jumlah pekerja, dan kebutuhan administrasi.<\/p>\n<\/div>\n<div style=\"padding: 24px; background: #faf7ff;\">\n<div style=\"display: flex; flex-wrap: wrap; gap: 18px; justify-content: center;\">\n<div style=\"flex: 1 1 280px; max-width: 300px; background: #ffffff; border: 1px solid #eadffd; border-radius: 16px; padding: 20px; box-sizing: border-box; box-shadow: 0 6px 18px rgba(80,35,137,0.06);\">\n<div style=\"width: 52px; height: 52px; border-radius: 14px; background: #f2eaff; display: flex; align-items: center; justify-content: center; font-size: 26px; margin-bottom: 14px;\">&#x1f4dd;<\/div>\n<h3 style=\"margin: 0 0 10px; font-size: 20px; line-height: 1.4; color: #502389; font-weight: bold;\">1. Absensi Manual<\/h3>\n<p style=\"margin: 0 0 14px; font-size: 14px; line-height: 1.7; color: #444444;\">Absensi manual adalah pencatatan kehadiran menggunakan buku, formulir, atau lembar kertas yang diisi langsung di lapangan.<\/p>\n<div style=\"margin-bottom: 10px;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Isi yang biasa dicatat<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Nama pekerja, tanggal, jam masuk, jam pulang, tanda tangan, dan keterangan.<\/div>\n<\/div>\n<div>\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Umumnya digunakan pada<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Proyek skala kecil atau lokasi kerja yang belum memakai sistem digital.<\/div>\n<\/div>\n<\/div>\n<div style=\"flex: 1 1 280px; max-width: 300px; background: #ffffff; border: 1px solid #eadffd; border-radius: 16px; padding: 20px; box-sizing: border-box; box-shadow: 0 6px 18px rgba(80,35,137,0.06);\">\n<div style=\"width: 52px; height: 52px; border-radius: 14px; background: #f2eaff; display: flex; align-items: center; justify-content: center; font-size: 26px; margin-bottom: 14px;\">&#x1f4ca;<\/div>\n<h3 style=\"margin: 0 0 10px; font-size: 20px; line-height: 1.4; color: #502389; font-weight: bold;\">2. Absensi Berbasis Excel<\/h3>\n<p style=\"margin: 0 0 14px; font-size: 14px; line-height: 1.7; color: #444444;\">Absensi berbasis Excel menggunakan spreadsheet untuk mencatat dan merapikan data kehadiran dalam bentuk tabel digital.<\/p>\n<div style=\"margin-bottom: 10px;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Isi yang biasa dicatat<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Nama pekerja, tanggal, status hadir, jam kerja, lembur, dan rekap total kehadiran.<\/div>\n<\/div>\n<div>\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Umumnya digunakan pada<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Proyek yang membutuhkan dokumen lebih rapi, mudah disimpan, dan lebih mudah direkap.<\/div>\n<\/div>\n<\/div>\n<div style=\"flex: 1 1 280px; max-width: 300px; background: #ffffff; border: 1px solid #eadffd; border-radius: 16px; padding: 20px; box-sizing: border-box; box-shadow: 0 6px 18px rgba(80,35,137,0.06);\">\n<div style=\"width: 52px; height: 52px; border-radius: 14px; background: #f2eaff; display: flex; align-items: center; justify-content: center; font-size: 26px; margin-bottom: 14px;\">&#x1f4f1;<\/div>\n<h3 style=\"margin: 0 0 10px; font-size: 20px; line-height: 1.4; color: #502389; font-weight: bold;\">3. Absensi Digital \/ Aplikasi<\/h3>\n<p style=\"margin: 0 0 14px; font-size: 14px; line-height: 1.7; color: #444444;\">Absensi digital adalah pencatatan kehadiran melalui aplikasi atau perangkat elektronik dengan data yang tersimpan otomatis dalam sistem.<\/p>\n<div style=\"margin-bottom: 10px;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Isi yang biasa dicatat<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Waktu check-in, check-out, lokasi, identitas pekerja, dan dokumentasi pendukung sesuai kebijakan perusahaan.<\/div>\n<\/div>\n<div>\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Umumnya digunakan pada<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Proyek yang memerlukan pencatatan cepat, terpusat, dan mudah diperiksa kembali.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div style=\"padding: 0 24px 24px; background: #faf7ff;\">\n<div style=\"background: #ffffff; border: 1px solid #eadffd; border-radius: 16px; padding: 18px 20px;\">\n<div style=\"font-size: 16px; font-weight: bold; color: #502389; margin-bottom: 12px; text-align: center;\">Perbedaan Singkat<\/div>\n<div style=\"display: flex; flex-wrap: wrap; gap: 12px;\">\n<div style=\"flex: 1 1 220px; background: #f8f3ff; border-radius: 12px; padding: 14px; box-sizing: border-box;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Media pencatatan<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Manual memakai kertas, Excel memakai spreadsheet, sedangkan digital memakai aplikasi atau perangkat elektronik.<\/div>\n<\/div>\n<div style=\"flex: 1 1 220px; background: #f8f3ff; border-radius: 12px; padding: 14px; box-sizing: border-box;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Cara pengisian<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Manual diisi langsung di lembar absensi, Excel diinput ke file, sedangkan digital dicatat langsung dalam sistem.<\/div>\n<\/div>\n<div style=\"flex: 1 1 220px; background: #f8f3ff; border-radius: 12px; padding: 14px; box-sizing: border-box;\">\n<div style=\"font-size: 13px; font-weight: bold; color: #502389; margin-bottom: 6px;\">Bentuk penyimpanan<\/div>\n<div style=\"font-size: 14px; line-height: 1.7; color: #444444;\">Manual disimpan sebagai dokumen fisik, Excel sebagai file, dan digital tersimpan otomatis pada sistem.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><span id=\"c\">Absensi kerja harian proyek dapat dibedakan berdasarkan cara pencatatannya. Dalam praktiknya, perusahaan biasanya menggunakan format manual, spreadsheet, atau aplikasi digital sesuai kebutuhan di lapangan.<\/span><\/p>\n<h3><strong>1. Absensi manual<\/strong><\/h3>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/absensi-manual\/\">Absensi manual adalah <\/a>pencatatan kehadiran pekerja menggunakan buku, formulir, atau lembar kertas. Data yang dicatat biasanya meliputi nama pekerja, tanggal, jam masuk, jam pulang, tanda tangan, dan keterangan kehadiran.<\/p>\n<p>Format ini masih sering digunakan pada proyek skala kecil atau lokasi kerja yang belum memiliki fasilitas digital. Pengisiannya biasanya dilakukan langsung oleh mandor, admin lapangan, atau penanggung jawab proyek pada hari kerja yang sama.<\/p>\n<h3><strong>2. Absensi berbasis Excel<\/strong><\/h3>\n<p>Absensi berbasis Excel adalah pencatatan kehadiran yang dibuat dalam bentuk tabel digital menggunakan spreadsheet. Format ini umumnya memuat kolom nama pekerja, tanggal, status hadir, jam kerja, lembur, serta rekap total kehadiran.<\/p>\n<p>Jenis ini banyak dipakai karena lebih rapi dan mudah disusun dibanding format kertas. Selain itu, file absensi dapat disimpan per hari, per minggu, atau per bulan sesuai kebutuhan administrasi proyek.<\/p>\n<h3><strong>3. Absensi digital atau aplikasi<\/strong><\/h3>\n<p>Absensi digital adalah <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-attendance-management\/\">sistem pencatatan kehadiran<\/a> yang dilakukan melalui aplikasi atau perangkat elektronik. Penggunaannya biasanya dilengkapi fitur seperti check-in, check-out, lokasi, waktu absensi, hingga dokumentasi pendukung sesuai kebijakan perusahaan.<\/p>\n<p>Format ini umumnya dipakai pada proyek yang membutuhkan pencatatan lebih cepat dan terpusat. Data absensi tersimpan secara otomatis dalam sistem sehingga lebih mudah diperiksa kembali saat dibutuhkan.<\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p>Absensi kerja proyek berperan penting dalam mencatat kehadiran tenaga kerja secara teratur selama pekerjaan berlangsung. Dengan format yang jelas dan pencatatan yang konsisten, perusahaan dapat menjaga administrasi proyek tetap rapi dan mudah ditelusuri.<\/p>\n<p>Karena itu, cara membuat absensi proyek tidak cukup hanya menyiapkan tabel kehadiran, tetapi juga perlu menyesuaikan format dengan kebutuhan lapangan. Pemilihan metode pencatatan yang tepat akan membantu proses absensi berjalan lebih tertib dari hari ke hari.<\/p>\n<p>Untuk memahami solusi yang sesuai dengan kebutuhan proyek, Anda juga dapat memanfaatkan layanan <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis<\/a> sebelum menentukan sistem yang akan digunakan.<\/p>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n<h2><strong>Pertanyaan Seputar Absen Kerja Proyek<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa itu absen karyawan?<\/strong><\/summary>\n<p>Absen karyawan adalah sistem pencatatan kehadiran untuk memantau jam masuk, keluar, dan kehadiran karyawan dalam suatu periode. Sistem ini membantu perusahaan memastikan disiplin waktu dan mengelola data kehadiran untuk penggajian dan evaluasi kinerja.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang terjadi jika proyek tidak menggunakan absen kerja?<\/strong><\/summary>\n<p>Jika proyek tidak menggunakan sistem absen kerja, akan sulit memantau kehadiran karyawan, sehingga berpotensi menyebabkan keterlambatan pekerjaan. Selain itu, ketidakhadiran tidak terkontrol bisa memengaruhi produktivitas tim dan perhitungan upah menjadi tidak akurat, yang berdampak pada biaya proyek.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa itu absensi harian karyawan?<\/strong><\/summary>\n<p>Absensi harian karyawan adalah pencatatan kehadiran karyawan setiap hari untuk memantau jam masuk, jam keluar, dan durasi kerja. Data ini digunakan untuk mengevaluasi disiplin, menghitung gaji, dan mengelola produktivitas karyawan.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Apa itu absen karyawan?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Absen karyawan adalah sistem pencatatan kehadiran untuk memantau jam masuk, keluar, dan kehadiran karyawan dalam suatu periode. Sistem ini membantu perusahaan memastikan disiplin waktu dan mengelola data kehadiran untuk penggajian dan evaluasi kinerja.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa yang terjadi jika proyek tidak menggunakan absen kerja?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Jika proyek tidak menggunakan sistem absen kerja, akan sulit memantau kehadiran karyawan, sehingga berpotensi menyebabkan keterlambatan pekerjaan. Selain itu, ketidakhadiran tidak terkontrol bisa memengaruhi produktivitas tim dan perhitungan upah menjadi tidak akurat, yang berdampak pada biaya proyek.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa itu absensi harian karyawan?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Absensi harian karyawan adalah pencatatan kehadiran karyawan setiap hari untuk memantau jam masuk, jam keluar, dan durasi kerja. Data ini digunakan untuk mengevaluasi disiplin, menghitung gaji, dan mengelola produktivitas karyawan.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Absensi proyek digunakan untuk mencatat kehadiran tenaga kerja selama pekerjaan berlangsung di lapangan. Dokumen ini biasanya disusun per hari agar data pekerja yang masuk, izin, sakit, atau lembur dapat dipantau dengan lebih teratur. Dalam praktiknya, format absensi proyek bisa dibuat sederhana, asalkan informasi yang dicatat memang sesuai kebutuhan. Mulai dari nama pekerja, tanggal, posisi, hingga [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":166238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-151851","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Cara Membuat Absen Kerja Proyek Beserta Contohnya<\/title>\n<meta name=\"description\" content=\"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cara Membuat Absen Kerja Proyek Beserta Contohnya\" \/>\n<meta property=\"og:description\" content=\"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-17T08:25:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-10T02:44:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"696\" \/>\n\t<meta property=\"og:image:height\" content=\"385\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Cara Membuat Absen Kerja Proyek Beserta Contohnya\",\"datePublished\":\"2025-06-17T08:25:04+00:00\",\"dateModified\":\"2026-04-10T02:44:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/\"},\"wordCount\":2003,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/\",\"name\":\"Cara Membuat Absen Kerja Proyek Beserta Contohnya\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp\",\"datePublished\":\"2025-06-17T08:25:04+00:00\",\"dateModified\":\"2026-04-10T02:44:56+00:00\",\"description\":\"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp\",\"width\":696,\"height\":385,\"caption\":\"Absen kerja proyek\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/absen-kerja-proyek\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cara Membuat Absen Kerja Proyek Beserta Contohnya\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/william-w-88353a262\\\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/reno-wicaksana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cara Membuat Absen Kerja Proyek Beserta Contohnya","description":"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/","og_locale":"id_ID","og_type":"article","og_title":"Cara Membuat Absen Kerja Proyek Beserta Contohnya","og_description":"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-06-17T08:25:04+00:00","article_modified_time":"2026-04-10T02:44:56+00:00","og_image":[{"width":696,"height":385,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Cara Membuat Absen Kerja Proyek Beserta Contohnya","datePublished":"2025-06-17T08:25:04+00:00","dateModified":"2026-04-10T02:44:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/"},"wordCount":2003,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp","articleSection":["HRM"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/","name":"Cara Membuat Absen Kerja Proyek Beserta Contohnya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp","datePublished":"2025-06-17T08:25:04+00:00","dateModified":"2026-04-10T02:44:56+00:00","description":"Absen kerja proyek adalah metode untuk mencatat kehadiran dan jam kerja karyawan yang terlibat dalam proyek secara akurat dan terorganisir.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/06\/Penjelasan-Lengkap-Absen-Kerja-Proyek-dan-Contoh-Lengkap.webp","width":696,"height":385,"caption":"Absen kerja proyek"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/absen-kerja-proyek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Cara Membuat Absen Kerja Proyek Beserta Contohnya"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"Absen kerja proyek","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/151851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=151851"}],"version-history":[{"count":35,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/151851\/revisions"}],"predecessor-version":[{"id":192135,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/151851\/revisions\/192135"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/166238"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=151851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=151851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=151851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}