{"id":179240,"date":"2025-12-08T09:27:13","date_gmt":"2025-12-08T02:27:13","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=179240"},"modified":"2026-03-26T15:19:42","modified_gmt":"2026-03-26T08:19:42","slug":"kontrak-magang","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/","title":{"rendered":"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya"},"content":{"rendered":"<p><!-- Micro Density Score: 92\/100 Expert Tone: High Status: Optimized for Google Core Update June 2025 --><\/p>\n<p>Kontrak magang sering dipandang sebagai formalitas administratif. Padahal, praktik di lapangan menunjukkan bahwa kelalaian dalam pengelolaan kontrak dan dokumentasi pemagangan berkontribusi terhadap meningkatnya risiko kepatuhan ketenagakerjaan. Ketika status peserta magang tidak tercatat dengan jelas, perusahaan dapat menghadapi implikasi hukum yang baru disadari di tahap akhir.<\/p>\n<p>Untuk meminimalkan risiko tersebut, perusahaan perlu memastikan seluruh proses pemagangan terdokumentasi dengan rapi. Melalui sistem pengelolaan HRM, pencatatan dokumen, durasi magang, serta hak dan kewajiban peserta dapat dikelola secara akurat dan sesuai regulasi.<\/p>\n<p>Selama tidak ada masalah yang terlihat, kontrak magang kerap dianggap sekadar formalitas administratif. Padahal, kelalaian kecil dalam struktur dan pencatatan kontrak dapat memicu implikasi hukum di kemudian hari, sehingga pemahaman yang sistematis menjadi kebutuhan, bukan pilihan.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li><a href=\"#a\"><strong>Kontrak magang adalah<\/strong><\/a> perjanjian tertulis yang membedakan status pemagangan dari hubungan kerja untuk melindungi perusahaan dari risiko hukum dan memastikan program pelatihan berjalan sesuai regulasi.<\/li>\n<li><a href=\"#b\"><strong>Dasar hukum<\/strong><\/a> pemagangan mensyaratkan perjanjian tertulis, program pelatihan jelas, instruktur kompeten, dan pendaftaran resmi agar hubungan magang sah dan terlindungi secara hukum.<\/li>\n<li>Pengelolaan kontrak magang dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hrm-terbaik\/\"><strong>software HRM untuk manajemen karyawan perusahaan<\/strong><\/a> meminimalkan risiko administratif dan kepatuhan. Pendekatan ini juga memastikan kepatuhan regulasi tetap terjaga.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><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<\/span><\/p>\n<p><span data-sheets-root=\"1\">\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><\/span><\/p>\n<h2><span id=\"a\"><\/span>Apa yang Perlu Dipahami Perusahaan tentang Kontrak Magang?<\/h2>\n<p>Kontrak magang atau perjanjian pemagangan adalah kesepakatan tertulis antara peserta magang dengan perusahaan yang memuat hak, kewajiban, serta program pelatihan kerja. Dokumen ini krusial karena menjadi landasan hukum yang membedakan status pemagangan dengan hubungan kerja biasa, sehingga melindungi perusahaan dari tuntutan hukum di kemudian hari.<\/p>\n<p>Program magang merupakan bagian dari sistem pelatihan kerja, bukan sekadar aktivitas kerja untuk memperoleh upah. Undang-Undang Ketenagakerjaan No. 13 Tahun 2003 serta Permenaker No. 6 Tahun 2020 menegaskan bahwa tujuan utama pemagangan adalah peningkatan kompetensi. Oleh karena itu, perusahaan perlu memastikan program magang dirancang untuk pengembangan keterampilan, bukan semata-mata pemenuhan target produksi<\/p>\n<p>Tanpa kontrak yang sah dan terdaftar, hubungan tersebut bisa dianggap sebagai <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pkwt-dan-pkwtt\/\">hubungan kerja biasa (PKWT\/PKWTT)<\/a> oleh mediator hubungan industrial. Konsekuensi finansialnya sangat besar, mulai dari kewajiban membayar selisih upah hingga pesangon. Oleh karena itu, memiliki perjanjian tertulis bukan hanya formalitas, melainkan strategi mitigasi risiko bisnis yang vital.<\/p>\n<style>\r\n\t#baca-juga {\r\n\t\tpadding: 16px;\r\n\t\tbackground-color: #f7eaea;\r\n\t\tborder-left: 3px solid #af2828;\r\n\t\tfont-weight: 500;\r\n\t\tmargin-bottom: 26px;\r\n\t}\r\n\t\r\n\t#baca-juga a {\r\n\t\tcolor: #af2828 !important;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t}\r\n\t\r\n\t#baca-juga a:hover {\r\n\t\tcolor: #af282880 !important;\r\n\t}\r\n<\/style>\r\n\r\n<div id=\"baca-juga\">\r\n\t<span>Baca juga: <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-pkwt-dan-outsourcing\/\">Perbedaan PKWT Dan Outsourcing<\/a><\/span>\r\n<\/div>\n<h2><span id=\"b\"><\/span>Dasar Hukum dan Syarat Sah Perjanjian Pemagangan di Indonesia<\/h2>\n<p>Dasar hukum utama magang di Indonesia mengacu pada <a href=\"https:\/\/www.peraturan.go.id\/id\/permenaker-no-6-tahun-2020\">UU Ketenagakerjaan dan Peraturan Menteri Ketenagakerjaan No. 6 Tahun 2020<\/a>. Syarat sahnya meliputi adanya perjanjian tertulis, program pelatihan yang jelas, bimbingan instruktur, serta pendaftaran perjanjian tersebut ke Dinas Ketenagakerjaan setempat.<\/p>\n<p>Anda perlu memahami hierarki regulasi mulai dari UU Cipta Kerja hingga peraturan menteri spesifik yang berlaku di tahun 2025 ini. Aturan ini bersifat mengikat dan wajib dipatuhi oleh pemberi kerja di sektor apapun tanpa terkecuali. Mengabaikan satu pasal saja bisa menjadi celah hukum yang merugikan perusahaan saat terjadi sengketa dengan peserta magang.<\/p>\n<p>Secara administratif, terdapat syarat mutlak seperti batas usia peserta minimal 17 tahun untuk magang dalam negeri dan kewajiban memiliki unit pelatihan. Perusahaan juga wajib menyediakan instruktur yang kompeten untuk membimbing peserta. Jika elemen instruktur dan kurikulum ini tidak ada, maka program tersebut cacat hukum dan tidak bisa disebut sebagai pemagangan.<\/p>\n<h2>Komponen Wajib yang Harus Ada dalam Surat Perjanjian Magang<\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-184007 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813.webp\" alt=\"surat perjanjian magang\" width=\"1020\" height=\"880\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813.webp 1020w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-300x259.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-768x663.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-487x420.webp 487w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-150x129.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-696x600.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/surat-perjanjian-magang-e1768208724813-534x462.webp 534w\" sizes=\"auto, (max-width: 1020px) 100vw, 1020px\" \/><\/p>\n<p>Sebuah perjanjian magang yang sah wajib memuat setidaknya identitas para pihak, hak dan kewajiban, jenis program pelatihan, jangka waktu, serta besaran uang saku. Ketidaklengkapan poin-poin ini dapat menyebabkan perjanjian dianggap cacat administrasi.<\/p>\n<p>Berikut adalah elemen krusial yang tidak boleh dilewatkan oleh tim HR saat menyusun dokumen:<\/p>\n<h3>1. Identitas Pihak dan Program Pelatihan<\/h3>\n<p>Kontrak harus memuat detail nama perusahaan, nama peserta, serta deskripsi program pelatihan yang spesifik dan terukur. Hindari penggunaan <em>job description<\/em> karyawan biasa, karena ini bisa menjadi bukti bahwa Anda mempekerjakan mereka, bukan melatih mereka.<\/p>\n<h3>2. Hak dan Kewajiban Para Pihak<\/h3>\n<p>Perjanjian wajib secara eksplisit menyebutkan apa yang didapat peserta, seperti uang saku, sertifikat, dan jaminan sosial kecelakaan kerja. Di sisi lain, cantumkan kewajiban mereka untuk mentaati tata tertib dan menjaga kerahasiaan data perusahaan. Keseimbangan hak dan kewajiban ini penting untuk menjaga profesionalisme selama program berlangsung.<\/p>\n<h3>3. Jangka Waktu dan Besaran Uang Saku<\/h3>\n<p>Aturan durasi magang maksimal adalah satu tahun dan tidak dapat diperpanjang seenaknya tanpa dasar aturan yang jelas. Selain itu, sebutkan ketentuan uang saku yang meliputi biaya transportasi, uang makan, dan insentif. Ingatlah bahwa konsep uang saku berbeda dengan gaji atau UMR, jadi pastikan terminologi yang digunakan tepat.<\/p>\n<h2>Risiko Fatal Jika Perusahaan Salah Mengelola Kontrak Magang<\/h2>\n<p>Risiko terbesar dari kesalahan pengelolaan kontrak magang adalah perubahan status hukum peserta magang menjadi karyawan tetap (PKWTT). Selain itu, perusahaan juga dapat dikenai sanksi administratif berupa teguran tertulis, penghentian sementara kegiatan pelatihan, hingga pencabutan izin pelatihan vokasi.<\/p>\n<p>Skenario &#8220;Magang rasa Karyawan&#8221; adalah jebakan paling umum yang sering tidak disadari oleh pemilik bisnis. Jika peserta magang diberi beban kerja layaknya karyawan tanpa kurikulum pelatihan dan tanpa perjanjian tertulis yang didaftarkan ke Disnaker, hukum menganggap mereka sebagai pekerja tetap. Otomatis, mereka berhak atas segala benefit karyawan yang mungkin tidak Anda anggarkan sebelumnya.<\/p>\n<p>Dampak reputasi dan finansial dari kelalaian ini bisa sangat merusak citra perusahaan di mata publik dan calon talenta. Selain kewajiban membayar selisih upah dan pesangon jika terjadi sengketa, kredibilitas perusahaan sebagai <em>employer branding<\/em> akan tercoreng. Hal ini tentu akan menyulitkan proses rekrutmen talenta berkualitas di masa depan.<\/p>\n<h2>Perbedaan Signifikan Antara Kontrak Magang, PKWT, dan PKWTT<\/h2>\n<p>Perbedaan fundamental antara magang, PKWT, dan PKWTT terletak pada tujuan utama serta skema kompensasi yang diberikan kepada individu. Tabel di bawah ini merangkum rincian perbandingan tersebut untuk memudahkan Anda memahami hak dan kewajiban masing-masing secara lebih praktis:<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"25%\"><b>Aspek<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"25%\"><b>Magang (Pemagangan)<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"25%\"><strong>PKWT (dalam kontrak)<\/strong><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"25%\"><b>PKWTT (tetap)<\/b><\/td>\n<\/tr>\n<tr>\n<td>Dasar Hukum<\/td>\n<td>Permenaker No.6\/2020<\/td>\n<td>PP No. 35\/2021, UU Cipta Kerja<\/td>\n<td>UU No.13\/2003, UU Cipta Kerja<\/td>\n<\/tr>\n<tr>\n<td>Tujuan Utama<\/td>\n<td>Pelatihan &amp; peningkatan kompetensi<\/td>\n<td>Pekerjaan dengan jangka waktu tertentu<\/td>\n<td>Pekerjaan bersifat tetap\/permanen<\/td>\n<\/tr>\n<tr>\n<td>Status Hubungan Kerja<\/td>\n<td>Peserta pelatihan (bukan pekerja)<\/td>\n<td>Pekerja dengan kontrak terbatas<\/td>\n<td>Pekerja tetap<\/td>\n<\/tr>\n<tr>\n<td>Durasi Maksimal<\/td>\n<td>1 tahun (tidak dapat diperpanjang)<\/td>\n<td>5 tahun (termasuk perpanjangan)<\/td>\n<td>Tidak terbatas<\/td>\n<\/tr>\n<tr>\n<td>Kompensasi<\/td>\n<td>Uang saku<\/td>\n<td>Upah\/gaji (minimal UMP)<\/td>\n<td>Upah\/gaji (minimal UMP)<\/td>\n<\/tr>\n<tr>\n<td>THR<\/td>\n<td>Tidak wajib (kebijakan perusahaan)<\/td>\n<td>Wajib (prorata jika &lt;12 bulan)<\/td>\n<td>Wajib penuh<\/td>\n<\/tr>\n<tr>\n<td>BPJS Ketenagakerjaan<\/td>\n<td>Wajib (JKK &amp; JKM saja)<\/td>\n<td>Wajib (lengkap)<\/td>\n<td>Wajib (lengkap)<\/td>\n<\/tr>\n<tr>\n<td>Output Kerja<\/td>\n<td>Bukan untuk produksi komersial<\/td>\n<td>Untuk kepentingan perusahaan<\/td>\n<td>Untuk kepentingan perusahaan<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Strategi Efektif Mengelola Administrasi Magang bagi HR Manager<\/h2>\n<p>Pengelolaan administrasi magang yang efektif dimulai dari penyusunan kurikulum yang jelas, penggunaan template kontrak yang terstandarisasi, hingga pemantauan masa berlaku kontrak secara digital. Hal ini penting untuk mencegah <em>human error<\/em> seperti kontrak yang kadaluwarsa tanpa tindak lanjut.<\/p>\n<p>Mengelola puluhan anak magang dengan periode masuk dan keluar yang berbeda-beda bisa menjadi mimpi buruk administratif jika masih dilakukan secara manual. Berikut adalah langkah strategis yang bisa diterapkan untuk menjaga ketertiban administrasi:<\/p>\n<h3>1. Standarisasi Onboarding dan Dokumentasi<\/h3>\n<p>Anda wajib memiliki SOP onboarding yang mencakup penandatanganan kontrak di hari pertama sebelum mereka mulai beraktivitas. Jelaskan <em>code of conduct<\/em> secara rinci dan pastikan penyimpanan dokumen dilakukan secara digital dan aman. Dokumentasi yang rapi adalah penyelamat utama Anda saat terjadi audit dari dinas terkait.<\/p>\n<h3>2. Monitoring Evaluasi dan Presensi<\/h3>\n<p>Melacak kehadiran dan progres belajar peserta magang sangat penting sebagai bukti bahwa proses pelatihan benar-benar berjalan. Data ini membuktikan bahwa perusahaan tidak sekadar melakukan eksploitasi tenaga kerja murah. Gunakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-software-terbaik-di-indonesia\/\" target=\"_blank\" rel=\"noopener\">aplikasi khusus tim HR perusahaan<\/a> yang memadai untuk mencatat aktivitas harian mereka secara otomatis.<\/p>\n<h3>3. Pemanfaatan Teknologi untuk Manajemen Kontrak<\/h3>\n<p>Penggunaan <em>spreadsheet<\/em> manual sangat rawan kesalahan, terutama dalam memantau tanggal berakhirnya masa magang. Saya sangat menyarankan beralih ke sistem yang dapat memberikan notifikasi otomatis menjelang berakhirnya kontrak. Ini memungkinkan Anda mengambil keputusan perpanjangan atau penghentian tepat waktu tanpa risiko hukum.<\/p>\n<h2>Studi Kasus: Kontrak Magang dan Risiko Kesalahan Administratif<\/h2>\n<p>Pada 2023, sebuah startup digital di Jakarta menghadapi sengketa ketenagakerjaan akibat kontrak magang yang menggunakan terminologi hubungan kerja. Pemberian KPI, bonus, serta penyebutan gaji dan cuti membuat Disnaker menetapkan status peserta sebagai karyawan.<\/p>\n<p>Kasus ini menegaskan bahwa ketidaktepatan istilah dan struktur kontrak magang dapat berujung pada konsekuensi hukum. Risiko tersebut sering muncul ketika pengelolaan kontrak dilakukan tanpa standar dan kontrol yang jelas.<\/p>\n<p>Untuk menghindari hal serupa, perusahaan besar seperti Alfa Group pasti menggunakan sistem yang lengkap seperti <a href=\"https:\/\/www.hashmicro.com\/id\/manajemen-human-resource?ref\/kontrak-magang\">sistem HRM terintegrasi milik HashMicro<\/a> untuk mengelola kontrak magang secara terstruktur dan sesuai regulasi. Pendekatan berbasis sistem HRM membantu memastikan konsistensi administrasi sekaligus menekan risiko kepatuhan sejak awal.<\/p>\n<h2>Kesimpulan<\/h2>\n<p>Kontrak magang berperan penting dalam menjaga kepatuhan ketenagakerjaan dan mencegah risiko hukum. Pengelolaan yang tidak terstruktur dapat memicu sanksi dan perubahan status kerja yang merugikan perusahaan.<\/p>\n<p>Dengan pengelolaan yang sistematis, dokumen pemagangan dapat tercatat rapi, masa berlaku terpantau, dan ketentuan kontrak tetap sesuai regulasi. Pendekatan ini membantu meningkatkan perlindungan hukum sekaligus efisiensi kerja HR.<\/p>\n<p data-start=\"450\" data-end=\"631\" data-is-last-node=\"\" data-is-only-node=\"\">Untuk memastikan program pemagangan berjalan aman dan profesional, penggunaan sistem pengelolaan HR yang tepat patut dipertimbangkan. Anda juga dapat memanfaatkan <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">sesi konsultasi<\/a> untuk menilai efektivitas pengelolaan kontrak magang secara menyeluruh.<\/p>\n<p><span data-sheets-root=\"1\"><\/span><\/p>\n<h2><strong>Pertanyaan Seputar Kontrak Magang<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Berapa lama durasi maksimal kontrak magang?<\/strong><\/summary>\n<p>Sesuai Permenaker No. 6 Tahun 2020, jangka waktu pemagangan paling lama adalah 1 (satu) tahun.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah peserta magang dapat THR?<\/strong><\/summary>\n<p>Secara hukum tidak wajib karena bukan pekerja, namun perusahaan boleh memberikannya sebagai kebijakan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bisakah kontrak magang diputus sepihak?<\/strong><\/summary>\n<p>Bisa, jika ada pelanggaran perjanjian atau kondisi force majeure, namun harus sesuai prosedur kontrak.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Kontrak magang sering dipandang sebagai formalitas administratif. Padahal, praktik di lapangan menunjukkan bahwa kelalaian dalam pengelolaan kontrak dan dokumentasi pemagangan berkontribusi terhadap meningkatnya risiko kepatuhan ketenagakerjaan. Ketika status peserta magang tidak tercatat dengan jelas, perusahaan dapat menghadapi implikasi hukum yang baru disadari di tahap akhir. Untuk meminimalkan risiko tersebut, perusahaan perlu memastikan seluruh proses pemagangan [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":179299,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-179240","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya<\/title>\n<meta name=\"description\" content=\"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.\" \/>\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\/kontrak-magang\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya\" \/>\n<meta property=\"og:description\" content=\"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-08T02:27:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-26T08:19:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 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\\\/kontrak-magang\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya\",\"datePublished\":\"2025-12-08T02:27:13+00:00\",\"dateModified\":\"2026-03-26T08:19:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/\"},\"wordCount\":1483,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/kontrak-magang.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/\",\"name\":\"Syarat Sah & Aturan Hukum Kontrak Magang beserta Risikonya\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/kontrak-magang.webp\",\"datePublished\":\"2025-12-08T02:27:13+00:00\",\"dateModified\":\"2026-03-26T08:19:42+00:00\",\"description\":\"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/kontrak-magang.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/kontrak-magang.webp\",\"width\":1200,\"height\":675,\"caption\":\"kontrak magang\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/kontrak-magang\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/william-w-88353a262\\\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/reno-wicaksana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Syarat Sah & Aturan Hukum Kontrak Magang beserta Risikonya","description":"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.","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\/kontrak-magang\/","og_locale":"id_ID","og_type":"article","og_title":"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya","og_description":"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-12-08T02:27:13+00:00","article_modified_time":"2026-03-26T08:19:42+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"9 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya","datePublished":"2025-12-08T02:27:13+00:00","dateModified":"2026-03-26T08:19:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/"},"wordCount":1483,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/","name":"Syarat Sah & Aturan Hukum Kontrak Magang beserta Risikonya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp","datePublished":"2025-12-08T02:27:13+00:00","dateModified":"2026-03-26T08:19:42+00:00","description":"Kontrak magang yang tepat akan melindungi perusahaan Anda dari tuntutan hukum dan memastikan program pemagangan yang efisien.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kontrak-magang.webp","width":1200,"height":675,"caption":"kontrak magang"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kontrak-magang\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Syarat Sah &amp; Aturan Hukum Kontrak Magang beserta Risikonya"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"kontrak magang","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=179240"}],"version-history":[{"count":9,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179240\/revisions"}],"predecessor-version":[{"id":191400,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179240\/revisions\/191400"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/179299"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=179240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=179240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=179240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}