{"id":48038,"date":"2024-02-18T09:40:56","date_gmt":"2024-02-18T02:40:56","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=48038"},"modified":"2025-12-16T10:48:49","modified_gmt":"2025-12-16T03:48:49","slug":"8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/","title":{"rendered":"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Dalam perkembangannya, industri konstruksi telah melalui masa yang sangat baik dalam sejarahnya, terus berkembang walaupun juga harus berurusan dengan banyak masalah yang bersamaan. Permasalahan itu biasanya banyak terjadi dalam industri itu sendiri, seperti salah satunya mengenai pembangunan proyek. Namun, terdapat beberapa pendekatan untuk masalah dalam konstruksi ini.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Biasanya tantangan yang besar itu bisa terlihat dari lambatnya teknologi yang industri itu pakai, termasuk masalah komunikasi, masalah penjadwalan, masalah dokumentasi, dan sebagainya.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Oleh karena itu, sangat penting bagi Anda untuk menggunakan sebuah <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-untuk-kontraktor\/\">aplikasi kontraktor<\/a> \u00a0seperti <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Construction Suite Software<\/span><\/a><span style=\"font-weight: 400;\"> HashMicro untuk memudahkan pembangunan proyek agar lebih optimal dan efisien.\u00a0<\/span><\/p>\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><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\n<p><span style=\"font-weight: 400;\">Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan. Mulai dengan masalah kepatuhan dan peraturan yang terus berubah serta masalah lain yang akan kami sebutkan di bawah ini:<\/span><\/p>\n<h2 id=\"1\"><strong>Mengikuti Peraturan Kepatuhan<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-48040 size-full aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y.jpg\" alt=\" Proyek Pembangunan\" width=\"1280\" height=\"658\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y.jpg 1280w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-300x154.jpg 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-1024x526.jpg 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-768x395.jpg 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-150x77.jpg 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-696x358.jpg 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-1068x549.jpg 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2022\/11\/photo_6278417970099237819_y-817x420.jpg 817w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Seiring dengan berkembangnya zaman, kebijakan serta aturan pun juga semakin banyak sesuai dengan kondisi yang ada saat ini. Hal itu menjadi semakin penting ketika kita harus mematuhi peraturan-peraturan tersebut agar terhindar dari masalah-masalah.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Karena saat ini sudah banyak <\/span><span style=\"font-weight: 400;\">bisnis <\/span><span style=\"font-weight: 400;\">yang berkembang, maka peraturan pun semakin banyak sehingga sulit untuk menyeimbangi atau mengikuti peraturan itu. Hal itu meliputi dalam peraturan masyarakat maupun undang-undang dari negara ataupun peraturan daerah setempat.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tidak jarang peraturan tersebut disepelekan oleh masyarakat dan tidak diperhatikan keberadaannya mengenai kebijakan suatu pekerjaan. Oleh karena perusahaan yang tidak memperhatikan bahkan tidak mematuhi peraturan tersebut, maka akan berdampak buruk ataupun menjadi bencana bagi sebagian besar perusahaan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ini menjadi topik yang sangat baik untuk dibahas mengenai perbaruan peraturan sesuai dengan lokasi atau tempat yang perusahaan Anda kelola. Salah satu contohnya terdapat pada perusahaan tambang harus patuh mengenai peraturan atau kebijakan pertambangan di negara itu atau daerah tersebut.\u00a0<\/span><\/p>\n<h2 id=\"2\"><strong>Bekerja Sesuai Jadwal<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Saat mengelola jadwal secara manual masih banyak kesalahan yang bisa terjadi, bahkan seorang profesional pun masih bisa melakukan kesalahan. Dengan berbagai sistem otomatis, maka dengan menggunakan sistem manajemen proyek ataupun <\/span><span style=\"font-weight: 400;\">hamboard <\/span><span style=\"font-weight: 400;\">menjadi solusi untuk masalah penjadwalan. Salah satu masalah yang bisa ditangani oleh manfaat teknologi modern ini adalah penjadwalan kerja.\u00a0<\/span><\/p>\n<h2 id=\"3\"><strong>Kecepatan Adopsi Teknologi Yang Lambat<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Mayoritas industri konstruksi mengadopsi teknologi dengan kecepatan yang kurang maksimal dan memiliki masalah yang sama selama beberapa tahun terakhir. Meskipun banyak pebisnis yang mengakui banyaknya manfaat yang didapat dari teknologi modern, tetapi masih banyak perusahaan yang tidak menggunakan teknologi tersebut karena memiliki anggaran relatif kecil.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Beberapa perusahaan lain jarang menggunakan teknologi modern seperti Internet of Things (IoT), pengawasan drone, VR\/AR, <\/span><span style=\"font-weight: 400;\">wearables<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">robot<\/span><span style=\"font-weight: 400;\">, dan lainnya. Padahal teknologi tersebut sangat berguna untuk mengatasi masalah yang ada pada industri konstruksi.\u00a0<\/span><\/p>\n<h2 id=\"4\"><strong>Masalah Komunikasi<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Sebagian besar masalah dalam <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/tips-sukses-proyek-konstruksi\/\">proyek konstruksi<\/a> terkait langsung dengan kurangnya komunikasi antara tim dan departemen yang berbeda. Hal Ini merupakan suatu masalah yang dapat dengan mudah teratasi oleh teknologi modern.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Misalnya, karyawan Anda dapat menggunakan <\/span><span style=\"font-weight: 400;\">smartphone<\/span><span style=\"font-weight: 400;\"> untuk mempercepat proses komunikasi baik melalui <\/span><span style=\"font-weight: 400;\">email<\/span><span style=\"font-weight: 400;\">, pesan biasa, atau menggunakan berbagai aplikasi terkait konstruksi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dengan menggunakan teknologi modern, Anda dapat dengan mudah mencegah sebagian besar masalah besar maupun kecil dalam sebuah proyek. Masalah komunikasi ini adalah contoh lain dari teknologi dengan potensi manfaat yang sangat besar bagi perusahaan konstruksi.\u00a0<\/span><\/p>\n<h2 id=\"5\"><strong>Mengelola Dokumentasi Anda<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Tidak mengherankan bahwa konstruksi umumnya memiliki banyak dokumen untuk ditangani. Baik itu kontrak, tanda terima, sertifikat <\/span><span style=\"font-weight: 400;\">asuransi<\/span><span style=\"font-weight: 400;\">, pesanan material, dan sebagainya. <\/span><span style=\"font-weight: 400;\">Melakukan semuanya secara manual membuat seluruh proses manajemen dokumen lebih lambat dan lebih rentan terjadi <\/span><span style=\"font-weight: 400;\">human error<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Melihat masalah ini seharusnya perusahaan sudah tidak menggunakan secara manual untuk mengerjakan bisnis. Ada banyak sistem yang bisa menjadi solusi dalam membantu bisnis Anda saat terkendala masalah manajemen dokumen.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Masalah tersebut meliputi kategorisasi, tanggal jatuh tempo, tenggat waktu proyek, dan lain-lain. Meskipun demikian, tidak semua masalah industri konstruksi bisa diatasi oleh adanya teknologi.\u00a0<\/span><\/p>\n<h2 id=\"6\"><strong>Harapan Yang Tidak Realistis\/Perkiraan Buruk<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Beberapa klien dan pemangku kepentingan memiliki keinginan tersendiri dalam membangun sebuah konstruksi. <\/span><span style=\"font-weight: 400;\">Ketika menyelesaikan proyek, para petinggi ingin proyek selesai dalam waktu cepat, tetapi sebenarnya proyek tersebut membutuhkan waktu dan anggaran yang lebih dari perencanaan<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Banyak manajer perusahaan konstruksi yang merupakan seorang profesional serta masing-masing memiliki standar sendiri dalam menjalankan sebuah tugas.<\/span><span style=\"font-weight: 400;\"> Bekerja dengan tujuan yang tidak dapat dicapai sebenarnya dapat menghambat produktivitas.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Rencana yang ada di setiap perusahaan, seperti manajemen risiko, harus bisa memperkirakan berapa lama rencana itu bisa tercapai. Kemudian, komunikasikan masalah tersebut dengan atasan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Saat berdiskusi itu berikan rencana alternatif sehingga seluruh tim bisa memperkirakan berapa lama waktu untuk menyelesaikan proyek serta anggaran yang harus dikeluarkan. Dengan mengelola rencana proyek dengan baik, Anda dapat mengatur proyek dari awal hingga akhir secara matang.\u00a0<\/span><\/p>\n<p>Bisnis konstruksi kerap menghadapi masalah anggaran akibat estimasi biaya yang kurang akurat, sehingga <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/7-software-rab-kontraktor-terbaik-untuk-manajemen-prakonstruksi\/\">aplikasi RAB otomatis untuk proyek<\/a> diperlukan untuk membantu menyusun dan mengontrol anggaran secara lebih presisi.<\/p>\n<h2 id=\"7\"><strong>Masalah Dengan Arus Kas<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Sebagai perusahaan konstruksi, Anda harus memiliki anggaran untuk membayar beberapa hal, seperti pembayaran sub kontraktor, vendor, pemasok, gaji karyawan, dan sebagainya. Namun, saat terlaksananya proyek itu kemungkinan besar karyawan Anda akan mendapatkan bayaran hanya sekali setelah proyek itu selesai.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hal itu menjadi salah satu masalah bagi manajemen keuangan dan masih ada juga masalah tak terduga lainnya. Satu solusi yang layak untuk masalah tak terduga ini, selain mengelola arus kas stabil, adalah dengan memiliki batas kredit bisnis yaitu \u201cskenario terburuk\u201d.<\/span><\/p>\n<p>Selain itu, penggunaan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/sistem-informasi-akuntansi-perusahaan-jasa-konstruksi\/\">sistem akuntansi kontraktor<\/a> juga dapat membantu memantau pengeluaran proyek secara lebih rinci, sehingga perusahaan Anda tidak terlewat periode tagihan jatuh tempo dan dapat menghindari burn money.<\/p>\n<h2 id=\"8\"><b>Masalah \u201cPointing Fingers\u201d<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Secara statistik, tidak mungkin proyek konstruksi selalu berjalan lancar dan tanpa masalah apapun. Masalah yang dapat terjadi adalah tudingan dari pihak satu ke pihak lainnya, misalnya kontraktor menuding subkontraktor, klien menyalahkan kontraktor, dan kena tegur oleh manajer proyek.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tudingan semacam ini sama sekali tidak ada gunanya dan hanya memperpanjang waktu masalah hingga proyek itu selesai. Inilah sebabnya mengapa ada kebijakan khusus yang dapat membantu mengatasi masalah seperti itu, yaitu dengan kebijakan risiko pembangunan.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kebijakan risiko pembangunan adalah jenis asuransi properti yang mencakup sebagian besar kemungkinan masalah yang mungkin atau mungkin tidak terjadi selama proses konstruksi. Mulai dari vandalisme atau pencurian hingga bencana alam atau kondisi cuaca ekstrem.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kebijakan ini juga dapat menutupi beberapa tindakan yang lebih banyak pertanyaan. Seperti klien mengeklaim bahwa mereka tidak menyukai hasil proyek setelah selesai dan mengutip pelanggaran kontrak.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><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><\/span><\/p>\n<h2 id=\"9\"><strong>Kurangnya Pekerja Terampil<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Ini menjadi salah satu masalah terbesar industri konstruksi hingga saat ini dan yang satu ini juga semakin buruk setiap tahun. Dengan semakin sedikit anak muda yang tertarik untuk bekerja di industri konstruksi dan karyawan yang lebih tua semakin dekat dengan masa pensiun mereka itu menjadi masalah dalam industri konstruksi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Permintaan yang terus meningkat menjadi masalah yang cukup besar pada industri konstruksi. <\/span><span style=\"font-weight: 400;\">Sementara ini, banyak profesional industri konstruksi yang melakukan beberapa inisiatif untuk memperbaiki masalah.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Begitu juga, para pekerja industri konstruksi sudah mencoba dan mengupayakan untuk mengurangi efek yang terjadi dari masalah kurangnya SDM yang terampil.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dua pendekatan potensial terbesar untuk ini adalah lembaga pendampingan dan kepegawaian konstruksi. Dengan bimbingan bekerja yang baik, maka akan membantu karyawan yang tidak berpengalaman dan <\/span><span style=\"font-weight: 400;\">fresh graduate <\/span><span style=\"font-weight: 400;\">untuk bisa bekerja secara terampil.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Di sisi lain, terdapat agen kepegawaian yang bertugas untuk mencakup sebagian besar perekrutan dan pra-penyaringan, menawarkan tenaga kerja tepat saat perusahaan Anda membutuhkannya. Ada juga masalah konstruksi lain yang sebagian besar terkait dengan orang-orang pada umumnya tidak peduli apakah mereka bagian dari perusahaan Anda atau bukan.<\/span><\/p>\n<h2 id=\"10\"><strong>Pemeliharaan Peralatan Yang Tidak Teratur<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Satu hal yang cenderung diabaikan oleh banyak perusahaan adalah biaya peralatan konstruksi atau biaya pemeliharaan\/penggantian. Ini juga salah satu alasan terbesar mengapa proyek mahal, karena mengganti peralatan selama konstruksi berarti Anda mengeluarkan biaya tambahan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Biaya tambahan dapat dengan mudah berubah menjadi mengurangi anggaran proyek, dan peralatan konstruksi cenderung menghabiskan banyak uang. Beberapa hal yang harus dicoba untuk memperbaikinya antara lain memperhatikan peralatan yang mulai menunjukkan tanda-tanda kerusakan atau kegagalan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Jika peralatan Anda gagal selama konstruksi, maka ganti sesegera mungkin, baik melalui pinjaman peralatan atau menggunakan dana Anda.<\/span><\/p>\n<style>\r\n\t.td-fix-index{-webkit-transform:unset !important;transform:unset !important}\r\n.article-post-column .td-pb-row{position:unset !important}\r\n    .article-a-form{padding:20px;color:#ffffff;border-radius:15px;background-color:#191f25}\r\n  .article-a-form h3,.article-a-form p{color:#ffffff !important}\r\n\t.article-a-form h3{font-size:23px;font-weight:bold;margin-top:0px;padding:5px;line-height:36px}\r\n  \/* .article-a-form::before{content:\"\"; border:3px solid #F4C82D;padding:10px;border-radius:20px;z-index:-1; position:absolute;transform:rotate(-4deg);left: 0px;top: -10px;width: 83%;height: 100%;} *\/\r\n  .article-a-form img{max-width:100%;left:0;height:auto; z-index:-1;}\r\n  @media only screen and (max-width: 600px) {\r\n  \/*   .article-a-form img {\r\n      position:unset\r\n    } *\/\r\n    .article-a-form h3 {\r\n\t\tmargin-top: 0;\r\n\t\tfont-size: 20px !important;\r\n\t\tline-height: 30px !important;\r\n\t\tmargin-bottom: 10px;\r\n\t}\r\n\t  .article-a-form .popup h3{\r\n\t\t  margin-top:0px;\r\n\t\t  line-height:25px;\r\n\t\t  font-size:20px;\r\n\t  }\r\n    .article-a-form{padding-top:15px;}\r\n\t  .thanks-popup .row{\r\n\t\tdisplay:block;\r\n\t\ttext-align:center;\r\n\t  }\r\n\t  .overlay .popup{\r\n\t\t  max-width:100%\r\n\t  }\r\n\t  .overlay .popup .row img{\r\n\t\tdisplay: none;\r\n\t  }\r\n\t  .article-a-form .overlay.thanks-popup h3{\r\n\t\t  margin-top:0;\r\n\t  }\r\n  }\r\n  .article-a-form select {color:grey}\r\n  .article-a-form textarea{min-height:0 !important; height:80px}\r\n  .article-a-form .form-control{border-radius:6px;\r\n      width: 100%;\r\n      padding: 5px;\r\n      border: 1px solid lightgray;\r\n      background: #f5f8fa;font-size:13px;\r\n  }\r\n  .article-a-form .row{display:flex;flex-wrap:no-wrap;}\r\n  .article-a-form .row .col-lg-6{flex: 1 1 200px;}\r\n  .article-a-form .col-lg-12{width:100%;}\r\n  .article-a-form .form-group{margin:5px;}\r\n  .article-a-form .btn {\r\n    background: #ee9305;\r\n    padding: 8px 40px;\r\n    margin: 10px 5px 25px;\r\n    color: #fff;\r\n    border: 0px;\r\n    border-radius: 10px;\r\n    width: calc(100%  - 8px);\r\n}\r\n\t.article-a-form .btn:hover{opacity:0.9}\r\n  .mb2{margin-bottom:10px;}\r\n  .article-a-form .form-control:not(select) {\r\n      padding-left: 8px;\r\n  }\r\n<\/style>\r\n<style>\r\n\t.form-step.overlay {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t.form-step.active {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t.overlay {\r\n\t\tposition: fixed;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\tdisplay: none;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t}\r\n\t.overlay.thanks-popup.active{\r\n\t\tdisplay: block;\r\n\t}\r\n\t.article-a-form .overlay h3 {\r\n    \tfont-size: 30px;\r\n    \tfont-weight: 800;\r\n    \tmargin: 36px 0 5px;\r\n\t}\r\n\/*         .overlay.active {\r\n            display: flex;\r\n\t} *\/\r\n.overlay.active .popup {\r\n    background-color: #fff;\r\n    padding: 42px;\r\n    border-radius: 15px;\r\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\r\n    text-align: left;\r\n    margin-top: 120px;\r\n    width: 760px;\r\n\tposition:relative;\r\n}\r\n\t.error {\r\n\t\tborder: 1px solid red;\r\n\t}\r\n\r\n\t.error-message {\r\n\t\tcolor: red;\r\n\t\tfont-size: 14px;\r\n\t\tmargin-top: 5px;\r\n\t}\r\n\tp.error-message {\r\n\t\tmargin-bottom: 0px;\r\n\t\tmargin-top: 0px;\r\n\t}\r\n\t.closeoverlay:hover{opacity:0.9}\r\n\t.closeoverlay {\r\n\t\tcursor: pointer;\r\n\t\tborder: none;\r\n\t\toutline: none;\r\n\t\tbackground-color: #97333c;\r\n\t\tcolor: #fff;\r\n\t\tpadding: 7px 20px;\r\n\t\tborder-radius: 7px;\r\n\t\ttransition:ease all 0.3s\r\n\t}\r\n\t.closeoverlay:hover{background-color:#222222}\r\n\t\r\n.closeoverlay2 {\r\n    color: black;\r\n    font-size: 24px;\r\n    position: absolute;\r\n    font-weight: 600;\r\n    top: 18px;\r\n    right: 31px;\r\n}\r\n\tdiv#form-popup {\r\n    padding: 25vh 0% 0;\r\n\tz-index:999;\r\n}\r\n\t.wrapper {\r\n    max-width: 550px;\r\n    width: 100%;\r\n    margin: auto;\r\n    background: #191f25;\r\n    padding: 20px 30px;\r\n    border-radius: 15px;\r\n}\r\n\r\n.close-step {\r\n    color: #ee9305!important;\r\n    text-align: center;\r\n    display: block;\r\n    margin-top: -20px;\r\n    margin-bottom: 0 !important;\r\n}\r\n\t\r\n\t.title-style {\r\n\t\tfont-size: 28px!important;\r\n\t\tmargin-top: 0px !important;\r\n\t}\r\n\t\r\n\t.input-style{\r\n\t\theight:40px!important;\r\n\t}\r\n\t.space{\r\n\t\tmargin-bottom:10px;\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\tdiv#form-popup {\r\n    padding: 25% 0%;\r\n\t}\r\n\t\t\r\n\t.title-style{\r\n\t line-height:48px!important;\r\n\t}\r\n}\r\n\t\r\n    <\/style>\r\n<div class=\"article-a-form\">\r\n    \r\n      <form id=\"webform-article\" method=\"post\" class=\"hm-contact-form-article\">\r\n        <div class=\"form-step active\">\r\n\t\t\t\r\n\t\t\t\t<h3>Hitung Estimasi Biaya &amp; Timeline Implementasi ERP Anda<\/h3>\r\n\t\t\t\r\n            <div class=\"row\">\r\n                <div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                        <input type=\"text\" name=\"companyname\" class=\"form-control\" placeholder=\"Nama Perusahaan\" >\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                        <select name=\"industry\" class=\"form-control\" required>\r\n                            <option value=\"\" disabled=\"\" selected=\"\">Pilih Industri<\/option>\r\n                            <option value=\"32\">Retail<\/option>\r\n                            <option value=\"33\">Trading, Wholesale, Distribution<\/option>\r\n                            <option value=\"35\">Produksi &amp; Manufaktur<\/option>\r\n                            <option value=\"36\">Edukasi<\/option>\r\n                            <option value=\"37\">Konstruksi &amp; Infrastuktur<\/option>\r\n                            <option value=\"49\">Penerbangan<\/option>\r\n                            <option value=\"41\">Pemerintahan<\/option>\r\n                            <option value=\"63\">Perhotelan<\/option>\r\n                            <option value=\"47\">Rumah Sakit<\/option>63\r\n                            <option value=\"51\">Pertambangan<\/option>\r\n                            <option value=\"42\">Logistik<\/option>\r\n                            <option value=\"54\">Perkebunan &amp; Peternakan<\/option>\r\n                            <option value=\"40\">F&amp;B (Restaurant, Catering, Fast Food, Etc)<\/option>\r\n                            <option value=\"62\">Lainnya<\/option>\r\n                        <\/select>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"row\">\r\n                <div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                        <select class=\"form-control\" name=\"scale\">\r\n                            <option value=\"\" disabled=\"\" selected=\"\">Pilih Jumlah Karyawan<\/option>\r\n                            <option value=\"3\" style=\"\">1 - 25<\/option>\r\n                            <option value=\"6\" style=\"\">26 - 50<\/option>\r\n                            <option value=\"9\" style=\"\">51 - 100<\/option>\r\n                            <option value=\"small\" style=\"\">101 - 300<\/option>\r\n                            <option value=\"medium\" style=\"\">301 - 500<\/option>\r\n                            <option value=\"large\" style=\"\">500+<\/option>\r\n                        <\/select>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                    <select  required=\"required\" name=\"solution\" class=\"form-control\">\r\n                    <option value=\"\" disabled=\"\" selected=\"\">Pilih Solusi<\/option>\r\n                    <option value=\"1\">Software ERP (Hash Core ERP)<\/option>\r\n                    <option value=\"4\">Software Akuntansi Online<\/option>\r\n                    <option value=\"2\">Sistem Manajemen Inventaris<\/option>\r\n                    <option value=\"39\">IT Inventory DJBC - Kawasan Berikat<\/option>\r\n                    <option value=\"27\">Sistem Manajemen Aset<\/option>\r\n                    <option value=\"3\">CRM - Prospek &amp; Penjualan<\/option>\r\n                    <option value=\"16\">Software Manajemen Manufaktur (MRP)<\/option>\r\n                    <option value=\"45\">Sistem Manajemen Pengadaan (Procurement)<\/option>\r\n                    <option value=\"14\">Sistem Manajemen Gudang<\/option>\r\n                    <option value=\"42\">Point of Sales (POS) untuk Retail &amp; Supermarket<\/option>\r\n                    <option value=\"53\">Point of Sales (POS) untuk F&amp;B<\/option>\r\n                    <option value=\"54\">Recruitment System (EVA - Recruite)<\/option>\r\n                    <option value=\"5\">HRM - Absensi, Payroll &amp; Pajak<\/option>\r\n                    <option value=\"55\">Talent Management System (EVA - Talent)<\/option>\r\n                    <option value=\"34\">Transportation Management System<\/option>\r\n                    <option value=\"7\">Solusi Management Sekolah<\/option>\r\n                    <option value=\"43\">Solusi Manajemen Konstruksi<\/option>\r\n                    <option value=\"56\">Sistem Manajemen Perhotelan<\/option>\r\n                    <option value=\"57\">Software Manajemen Bisnis Agrikultur<\/option>\r\n                    <option value=\"34\">Manajemen Transportasi &amp; Logistik<\/option>\r\n                    <option value=\"17\">Sistem Manajemen Fasilitas<\/option>\r\n                    <option value=\"30\">Manajemen Bangunan, Properti &amp; Real-Estate<\/option>\r\n                    <option value=\"18\">Sistem Manajemen Pengunjung<\/option>\r\n                    <option value=\"52\">Lainnya<\/option>\r\n                    <\/select>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <button type=\"button\" onclick=\"nextStep()\" class=\"btn btn-warning my-3 my-md-0\">Dapatkan Estimasi<\/button>\r\n            <p id=\"step1ErrorMessage\" class=\"error-message \"><\/p>\r\n        <\/div>\r\n        <div class=\"form-step overlay\" id=\"form-popup\">\r\n\t\t<div class=\"wrapper\">\r\n\t\t\t<h3 class=\"title-style\" style=\"text-align:center;\">Masukan Info Kontak Anda untuk Mendapatkan Estimasi Biaya<\/h3>\r\n            <div class=\"row space\">\r\n\t\t\t\t<div class=\"col-lg-6\">\r\n\t\t\t\t\t<div class=\"form-group mb-3\">\r\n                        <input type=\"text\" name=\"fullname\" class=\"form-control input-style\" placeholder=\"Nama Lengkap\">\r\n                \t<\/div>\r\n\t\t\t\t<\/div>\r\n            <\/div>\r\n            <div class=\"row space\">\r\n\t\t\t\t<div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                        <input type=\"email\" name=\"email\" class=\"form-control inputemail input-style\" required placeholder=\"Email\">\r\n                    <\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"col-lg-6\">\r\n                    <div class=\"form-group mb-3\">\r\n                        <input type=\"tel\" name=\"phonenumber\" class=\"form-control inputtel input-style\" required placeholder=\"Phone\/Whatsapp\">\r\n                    <\/div>\r\n\t\t\t\t<\/div>\r\n            <\/div>\r\n            <input type=\"hidden\" class=\"campaigndata\" name=\"campaigndata\" value=\"\">\r\n            <input type=\"hidden\" class=\"team\" name=\"team\" value=\"6\">\r\n            <input type=\"hidden\" class=\"sources\" name=\"source\" value=\"16\">\r\n            <input type=\"hidden\" class=\"gclid\" name=\"gclid\" value=\"\">\r\n            <input type=\"hidden\" class=\"medium\" name=\"medium\" value=\"118\">\r\n            <input type=\"hidden\" class='fvis' name=\"fvis\" value=\"disabled by browser\">\r\n            <input type=\"hidden\" class='lvis' name=\"lvis\" value=\"disabled by browser\">\r\n            <input type=\"hidden\" class='country' name=\"country\" value=\"100\">\r\n\t\t\t<button type=\"submit\" onclick=\"submitForm()\" id='submit-button' class=\"submit-button btn btn-warning my-3 my-md-0\">Kirim<\/button>\r\n\t\t\t<p class='close-step'><span onclick='closeOverlay()'>Tutup<\/span><\/p>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n        <p id=\"step2ErrorMessage\" class=\"error-message\"><\/p>\r\n    <p style='margin:15px 0;padding-left:5px;line-height:20px'>Butuh respon lebih cepat? Hubungi kami lewat <a href='https:\/\/wa.me\/+6287888000015' style=\"color:#ee9305;font-weight: 600;\"> Whatsapp<\/a><\/p>\r\n        <div class=\"text-center text-md-right mt-0 submitbutton\">\r\n            \r\n        <\/div>\r\n    <\/form>\r\n\r\n    <div class=\"overlay thanks-popup\">\r\n        <div class=\"popup\">\r\n\t\t\t<button class=\"closeoverlay2\" onclick=\"if (!window.__cfRLUnblockHandlers) return false; closeOverlay()\">X<\/button>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-lg-5\">\r\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/06\/popup-thankyou.webp\" style='max-width:100%'>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"col-lg-7\" style = \"padding-left:56px\">\r\n\t\t\t\t\t<h3 style='color:#333'>Terima Kasih, Tim kami akan menghubungi Anda melalui email!<\/h3>\r\n\t\t\t\t\t<p  style='color:#333'>Pastikan anda cek kembali email inbox untuk terhubung dengan tim professional HashMicro<\/p>\r\n\t\t\t\t\t<p style=\"margin-bottom: 0px;\">\r\n\t\t\t\t\t\t<button class=\"closeoverlay\" onclick=\"if (!window.__cfRLUnblockHandlers) return false; closeOverlay()\">Tutup<\/button>\r\n\t\t\t\t\t<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n        const form = document.getElementById('webform-article');\r\n        const formSteps = form.getElementsByClassName('form-step');\r\n        const overlay = document.querySelector('.overlay.thanks-popup');\r\n        const overlaystep = document.querySelector('.form-step.overlay');\r\n\r\n        let currentStep = 0;\r\n\r\n        function showStep(step) {\r\n            formSteps[currentStep].classList.remove('active');\r\n            formSteps[step].classList.add('active');\r\n            currentStep = step;\r\n        }\r\n\r\n        function nextStep() {\r\n\t\t    if (validateStep(currentStep)) {\r\n\t\t        if (currentStep === formSteps.length - 1) {\r\n\t\t            submitForm();\r\n\t\t        } else {\r\n\t\t            showStep(currentStep + 1);\r\n\t\t        }\r\n\t\t    }\r\n\t\t    removeErrorBorder(); \/\/ Tambahkan fungsi ini pada setiap pemanggilan nextStep()\r\n\t\t}\r\n\r\n        function validateStep(step) {\r\n            const fields = formSteps[step].querySelectorAll('#webform-article input, #webform-article select');\r\n            let isValid = true;\r\n\r\n            for (let i = 0; i < fields.length; i++) {\r\n                const field = fields[i];\r\n                field.classList.remove('error');\r\n            }\r\n\r\n            const errorMessage = document.getElementById(`step${step + 1}ErrorMessage`);\r\n            errorMessage.textContent = '';\r\n\r\n            for (let i = 0; i < fields.length; i++) {\r\n                const field = fields[i];\r\n                if (!field.checkValidity()) {\r\n                    field.classList.add('error');\r\n                    isValid = false;\r\n                }\r\n            }\r\n\r\n            if (!isValid) {\r\n                errorMessage.textContent = 'Mohon lengkapi form.';\r\n            }\r\n\r\n            return isValid;\r\n        }\r\n\r\n\r\n\t\t\r\n\r\n\t\tfunction submitForm() {\r\n\t\t    if (validateStep(currentStep)) {\r\n\t\t\t\t\r\n\t\t        showOverlay();\r\n\t\t    }\r\n\t\t    removeErrorBorder(); \/\/ Tambahkan fungsi ini pada setiap pemanggilan submitForm()\r\n\t\t}\r\n\t  function closeOverlay() {\r\n            overlay.classList.remove('active');\r\n            overlaystep.classList.remove('active');\r\n\t\t  currentStep = 0;\r\n\t  }\r\n        function showOverlay() {\r\n            overlay.classList.add('active');\r\n            overlaystep.classList.remove('active');\r\n\t\t\tjQuery(document).ready(function() {\r\n\t\t\t\t\tvar apiUrl = \"https:\/\/website-api.hashmicro.com\/api\/xdt\/hxmcr\";\r\n\t\t\t\t\tjQuery.ajax({\r\n\t\t\t\t\t\turl: apiUrl,\r\n\t\t\t\t\t\tmethod: \"GET\",\r\n\t\t\t\t\t\tsuccess: function(response) {\r\n\t\t\t\t\t\tconsole.log(response);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n        }\r\n\r\n        function removeErrorBorder() {\r\n\t\t    const errorFields = document.querySelectorAll('.error');\r\n\t\t    for (let i = 0; i < errorFields.length; i++) {\r\n\t\t        errorFields[i].addEventListener('input', function () {\r\n\t\t            this.classList.remove('error');\r\n\t\t            const errorMessage = document.getElementById(`step${currentStep + 1}ErrorMessage`);\r\n\t\t            errorMessage.textContent = '';\r\n\t\t        });\r\n\t\t    }\r\n\t\t}\r\n\t  \r\n\t  \r\n   jQuery('.hm-contact-form-article').submit(function(event) {\r\n            event.preventDefault(); \/\/ Prevent direct form submission\r\n            jQuery('.submit-button').prepend(`<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/assets\/loading.gif\" style=\"opacity: 0.5; margin-right:7px; margin-top:-2px\" width=\"20px\" height=\"20px\">`)\r\n\r\n            \/\/ jQuery('#alert').text('Processing...').fadeIn(0); \/\/ Display \"Processing\" to let the user know that the form is being \r\n\/\/submitted\r\n            \/\/ grecaptcha.ready(function () {\r\n            \/\/     grecaptcha.execute('6LefSbsaAAAAAFaLzARjVcIhXRPsAwsu1a6mCOyW', { action: '\/actionform' }).then(function (token) {\r\n                    \/\/ var recaptchaResponse = document.getElementById('recaptchaResponse');\r\n                    \/\/ recaptchaResponse.value = token;\r\n                    \/\/ Make the Ajax call here\r\n                    jQuery.ajax({\r\n                        url: 'https:\/\/website-api.hashmicro.com\/api\/add',\r\n                        type: 'POST',\r\n                        data: jQuery(this).serialize() + morestuff,\r\n                        dataType: 'json',\r\n                        tryCount : 0,\r\n                        retryLimit : 1,\r\n                        beforeSend: function() {    \r\n                          \/\/   jQuery('.alert-msg').html( \"<p>Processing input:<\/p>\" );\r\n                            jQuery('.submit-button').prop('disabled', true);\r\n                        },\r\n                        success: function( _response ){\r\n                            \/\/ The Ajax request is a success. _response is a JSON object\r\n                            var error = _response.errors;\r\n                            var success = _response.status;\r\n                            console.log(_response);\r\n                            console.log(success);\r\n                            if(success != \"200\") {\r\n                                jQuery('.alert-msg').html('<p>'+error.message+'<\/p>');\r\n                                jQuery('.submit-button').prop('disabled', false);\r\n                            } else {\r\n\r\n                                overlay.classList.add('active');\r\n                                \/\/ current domain\r\n                                var currentDomain = window.location.hostname;\r\n                                \/\/ Get the current URL\r\n                                var currentURL = window.location.href;\r\n                                if (currentDomain.indexOf(\"www.hashmicro.com\") !== -1) {\r\n                                  if (currentURL.indexOf(\"www.hashmicro.com\/id\/\") !== -1) {\r\n                                    \/\/ window.location.href =\"https:\/\/www.hashmicro.com\/id\/terimakasih\"\r\n                                  } else {\r\n                                    \/\/ window.location.href =\"https:\/\/www.hashmicro.com\/thankyou\"\r\n                                  }\r\n                                }if (currentDomain.indexOf(\"www.koneksi.co\") !== -1) {\r\n                                    \/\/ window.location.href =\"https:\/\/www.koneksi.co\/terima-kasih\"\r\n                                }\r\n                                \/\/ else{\r\n                                \/\/   if (currentURL.indexOf(\".com\/id\") !== -1) {\r\n                                \/\/     window.location.href =\"https:\/\/\"+currentDomain+\"\/id\/terima-kasih\"\r\n                                \/\/   } else {\r\n                                \/\/     window.location.href =\"https:\/\/\"+currentDomain+\"\/thank-you\"\r\n                                \/\/   }\r\n                                \/\/ }\r\n                            }\r\n                        },\r\n                        error: function(jqXhr, json, errorThrown){\r\n                            var error = jqXhr.responseJSON;\r\n                            console.log(json)\r\n                          if (json == 'error') {\r\n                              this.url = \"https:\/\/website-api.hashmicro.com\/api\/add\/2\";\r\n                              this.type = \"POST\";\r\n                              this.tryCount++;\r\n                              if (this.tryCount <= this.retryLimit) {\r\n                                  \/\/try again\r\n                                  jQuery.ajax(this);\r\n                                  return;\r\n                              }            \r\n                              return;\r\n                          }\r\n                          if (jqXhr.status == 500) {\r\n                              \/\/   console.log(error.errors)\r\n                              \/\/ jQuery('.alert-msg').html( \"<p>gagal:<\/p>\" );\r\n                              for(var key in error.errors) {\r\n                                  for (var key1 in error.errors[key]) {\r\n                                      jQuery('.alert-msg').html('<span>'+error.errors[key][key1]['id']+'<\/span>');\r\n                                  }\r\n                              }\r\n                          } else {\r\n                              \/\/handle error\r\n                          }\r\n\r\n                          jQuery('.submit-button').prop('disabled', false);\r\n                        }\r\n                \/\/     });\r\n                \/\/ });\r\n            });\r\n        });\r\n    <\/script>\r\n\r\n<script>\r\n\/\/ Force team ID to always be 6 when submitting the form\r\njQuery(document).ready(function($) {\r\n    $('.hm-contact-form').on('submit', function() {\r\n        \/\/ Ensure team value is set to 6 before submission\r\n        $(this).find('.team').val('6');\r\n    });\r\n    \r\n    \/\/ Additional check to ensure team ID is correctly set\r\n    $(document).ajaxSend(function(event, jqxhr, settings) {\r\n        if (settings.url.includes('website-api.hashmicro.com\/api\/add')) {\r\n            \/\/ Make sure team=6 is in the data being sent\r\n            if (!settings.data.includes('team=6')) {\r\n                settings.data = settings.data.replace(\/team=\\d+\/, 'team=6');\r\n                \/\/ If team parameter doesn't exist, add it\r\n                if (!settings.data.includes('team=')) {\r\n                    settings.data += '&team=6';\r\n                }\r\n            }\r\n        }\r\n    });\r\n});\r\n<\/script>\n<h2 id=\"11\"><strong>Kurangnya Subkontraktor Yang Handal<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Masalah konstruksi ini adalah salah satu yang paling bergantung pada jaringan dan rekomendasi. Secara umum, ada begitu banyak subkontraktor di pasar sehingga sulit untuk memilih satu untuk melakukan pekerjaan berdasarkan penampilan mereka.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cara yang baik untuk menghindari memilih kontraktor yang tidak dapat diandalkan adalah dengan meminta saran dari pemasok material Anda. Bertanya kepada sub kontraktor yang bekerja dengan Anda juga dapat membantu dalam menemukan komunikasi yang andal.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Juga disarankan untuk memeriksa lisensi subkontraktor, asuransi kewajiban umum, dan mendaftarkan diri Anda sebagai tertanggung tambahan di bawah asuransi mereka sebelum menyelesaikan proses rekrutmen.<\/span><\/p>\n<h2 id=\"12\"><b>Hash Construction Suite Software Hadir sebagai Solusi Manajemen Proyek Pembangunan Gedung Anda<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Dari masalah yang terjadi pada industri konstruksi tersebut HashMicro menghadirkan <a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\">Construction Suite Software<\/a> sebagai solusi manajemen proyek pembangunan gedung Anda. <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-penting-untuk-perusahaan-konstruksi\/\"><span style=\"font-weight: 400;\">Software<\/span><\/a><span style=\"font-weight: 400;\"> konstruksi adalah solusi yang mendukung berbagai aktivitas perusahaan konstruksi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Menggunakan <\/span><span style=\"font-weight: 400;\">software<\/span><span style=\"font-weight: 400;\"> manajemen konstruksi dapat menyederhanakan pekerjaan proyek konstruksi, mengoptimalkan manajemen persediaan, dan menyederhanakan manajemen personalia.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dengan begitu, maka industri konstruksi Anda akan terorganisir dengan baik dalam manajemen proyek pembangunan gedung. Dapatkan kemudahan ini dengan sistem Hash Construction Suite.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Selain itu, <\/span><span style=\"font-weight: 400;\">sistem <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-penting-untuk-perusahaan-konstruksi\/\">software konstruksi<\/a> HashMicro<\/span><span style=\"font-weight: 400;\"> juga dapat dipersonalisasi sesuai dengan skala bisnis Anda dan dapat disesuaikan dengan kebutuhan perusahaan Anda. Perangkat lunak manajemen konstruksi HashMicro cocok untuk industri konstruksi karena tidak ada batasan pengguna.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Jadi, pemilik bisnis tak perlu mengeluarkan biaya tambahan agar karyawannya bisa menggunakan Software Manajemen Konstruksi HashMicro. Maka dari itu, Hash Construction Suite merupakan solusi terbaik untuk bisnis Anda.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\">Hash Construction Suite<\/a> merupakan <\/span><span style=\"font-weight: 400;\">software<\/span><span style=\"font-weight: 400;\"> yang sesuai dengan kebutuhan perusahaan, dapat diakses dengan mudah, aman digunakan, dan bisa menyelesaikan permasalahan yang perusahaan miliki serta memiliki paket harga yang sesuai dengan <\/span><span style=\"font-weight: 400;\">budget<\/span><span style=\"font-weight: 400;\"> perusahaan.<\/span><\/p>\n<h2 id=\"13\"><b>Kesimpulan\u00a0<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Bagi Anda yang menjalankan bisnis konstruksi dalam manajemen proyek pembangunan gedung, kami menyarankan aplikasi <\/span><span style=\"font-weight: 400;\">Hash Construction Suite. Melihat saat ini sudah banyak sekali perusahaan yang menggunakan digital dalam berbisnis, maka menggunakan software akan sangat membantu perusahaan Anda dalam mengelola proyek pembangunan gedung. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sangat penting bagi Anda untuk memperhitungkan biaya secara lebih rinci sehingga membuat pengeluaran tidak membengkak. Dengan aplikasi untuk kontraktor<\/span><span style=\"font-weight: 400;\">, Anda bisa memantau kinerja pegawai dan aset yang Anda punya. Sehingga Anda bisa meminimalkan kesalahan yang akan terjadi saat proses proyek tersebut. <\/span><span style=\"font-weight: 400;\">Dapatkan kemudahan dengan sistem <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Hash Construction Suite<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Download<\/span><a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\"> skema harga<\/span><\/a><span style=\"font-weight: 400;\"> Hash Construction Suite untuk biaya lebih rinci. Segera jadwalkan<\/span> <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">demo gratisnya<\/span><\/a><span style=\"font-weight: 400;\">!<\/span><\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Mobile.webp\" alt=\"HashConstructionSuite\" class=\"responsive-image-banner\"><\/a>\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","protected":false},"excerpt":{"rendered":"<p>Dalam perkembangannya, industri konstruksi telah melalui masa yang sangat baik dalam sejarahnya, terus berkembang walaupun juga harus berurusan dengan banyak masalah yang bersamaan. Permasalahan itu biasanya banyak terjadi dalam industri itu sendiri, seperti salah satunya mengenai pembangunan proyek. Namun, terdapat beberapa pendekatan untuk masalah dalam konstruksi ini.\u00a0 Biasanya tantangan yang besar itu bisa terlihat dari [&hellip;]<\/p>\n","protected":false},"author":165,"featured_media":140169,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-48038","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Permasalahan Konstruksi dalam Proyek Infrastruktur<\/title>\n<meta name=\"description\" content=\"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance\" \/>\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\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur\" \/>\n<meta property=\"og:description\" content=\"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\" \/>\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=\"2024-02-18T02:40:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-16T03:48:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Novi Herawati\" \/>\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=\"Novi Herawati\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 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\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\"},\"author\":{\"name\":\"Novi Herawati\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/685b29538f3b84216a3584178a792653\"},\"headline\":\"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur\",\"datePublished\":\"2024-02-18T02:40:56+00:00\",\"dateModified\":\"2025-12-16T03:48:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\"},\"wordCount\":1668,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png\",\"articleSection\":[\"Construction Suite\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\",\"name\":\"Permasalahan Konstruksi dalam Proyek Infrastruktur\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png\",\"datePublished\":\"2024-02-18T02:40:56+00:00\",\"dateModified\":\"2025-12-16T03:48:49+00:00\",\"description\":\"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png\",\"width\":1200,\"height\":650,\"caption\":\"Permasalah Konstruksi Dalam Infrastruktur\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur\"}]},{\"@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\/685b29538f3b84216a3584178a792653\",\"name\":\"Novi Herawati\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Novi-1-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Novi-1-96x96.webp\",\"caption\":\"Novi Herawati\"},\"description\":\"Novi adalah Content Writer yang sudah berpengalaman selama 4 tahun yang aktif dalam menulis artikel untuk topik bisnis dan manajemen, integrasi sistem digital untuk otomatisasi bisnis, dan manajemen keuangan perusahaan. Melalui tulisannya, Ia mendorong inovasi dan efisien perusahaan untuk meningkatkan profitabilitas bisnis.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"manajemen bisnis\",\"B2B\",\"inovasi bisnis\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/novi-herawati\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Permasalahan Konstruksi dalam Proyek Infrastruktur","description":"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance","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\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/","og_locale":"id_ID","og_type":"article","og_title":"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur","og_description":"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2024-02-18T02:40:56+00:00","article_modified_time":"2025-12-16T03:48:49+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png","type":"image\/png"}],"author":"Novi Herawati","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Novi Herawati","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/"},"author":{"name":"Novi Herawati","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/685b29538f3b84216a3584178a792653"},"headline":"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur","datePublished":"2024-02-18T02:40:56+00:00","dateModified":"2025-12-16T03:48:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/"},"wordCount":1668,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png","articleSection":["Construction Suite"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/","name":"Permasalahan Konstruksi dalam Proyek Infrastruktur","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png","datePublished":"2024-02-18T02:40:56+00:00","dateModified":"2025-12-16T03:48:49+00:00","description":"Berikut kami paparkan beberapa masalah yang signifikan pada industri konstruksi dalam proyek pembangunan: 1) Keeping Up with Compliance","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/02\/Mining-2.png","width":1200,"height":650,"caption":"Permasalah Konstruksi Dalam Infrastruktur"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/8-permasalahan-konstruksi-dalam-proyek-pembangunan-infrastruktur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"12 Permasalahan Konstruksi dalam Proyek Pembangunan Infrastruktur"}]},{"@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\/685b29538f3b84216a3584178a792653","name":"Novi Herawati","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Novi-1-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Novi-1-96x96.webp","caption":"Novi Herawati"},"description":"Novi adalah Content Writer yang sudah berpengalaman selama 4 tahun yang aktif dalam menulis artikel untuk topik bisnis dan manajemen, integrasi sistem digital untuk otomatisasi bisnis, dan manajemen keuangan perusahaan. Melalui tulisannya, Ia mendorong inovasi dan efisien perusahaan untuk meningkatkan profitabilitas bisnis.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["manajemen bisnis","B2B","inovasi bisnis"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/novi-herawati\/"}]}},"focus_keyword":"proyek pembangunan","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/48038","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\/165"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=48038"}],"version-history":[{"count":11,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/48038\/revisions"}],"predecessor-version":[{"id":180751,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/48038\/revisions\/180751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/140169"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=48038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=48038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=48038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}