{"id":193,"date":"2026-11-13T20:54:53","date_gmt":"2026-11-13T20:54:53","guid":{"rendered":"https:\/\/mettatech-engineering.co.uk\/?page_id=193"},"modified":"2026-11-15T06:30:02","modified_gmt":"2026-11-15T06:30:02","slug":"client-portal","status":"publish","type":"page","link":"https:\/\/mettatech-engineering.co.uk\/?page_id=193","title":{"rendered":"Client portal"},"content":{"rendered":"\n<div id=\"metta-client-v14\" dir=\"rtl\" lang=\"ar\">\n<style>\n#metta-client-v14{--navy:#12263d;--blue:#1764ad;--light:#f4f7fb;--line:#dce4ed;--green:#16825d;--amber:#a66a0a;--red:#bb4545;font-family:Arial,Tahoma,sans-serif;color:#203145;background:#f4f7fb;line-height:1.7}\n#metta-client-v14 *{box-sizing:border-box}\n#metta-client-v14 button,#metta-client-v14 input,#metta-client-v14 select,#metta-client-v14 textarea{font:inherit}\n#metta-client-v14 button{cursor:pointer}\n#metta-client-v14 .shell{display:grid;grid-template-columns:245px minmax(0,1fr);min-height:760px}\n#metta-client-v14 .sidebar{background:var(--navy);color:#fff;padding:24px 14px}\n#metta-client-v14 .brand{font-size:23px;font-weight:800;margin:0 10px 6px}\n#metta-client-v14 .brand-sub{font-size:12px;color:#bed0e3;margin:0 10px 25px}\n#metta-client-v14 .navbtn{display:block;width:100%;text-align:right;border:0;background:transparent;color:#e4ecf5;padding:11px 13px;border-radius:9px;margin:3px 0}\n#metta-client-v14 .navbtn.active,#metta-client-v14 .navbtn:hover{background:#27435f;color:#fff}\n#metta-client-v14 .main{padding:26px;min-width:0}\n#metta-client-v14 .top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}\n#metta-client-v14 h2{font-size:25px;color:var(--navy);margin:0}\n#metta-client-v14 h3{font-size:18px;color:var(--navy);margin:0 0 12px}\n#metta-client-v14 p{margin:7px 0 13px}\n#metta-client-v14 .muted{color:#687a8d;font-size:13px}\n#metta-client-v14 .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n#metta-client-v14 .grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n#metta-client-v14 .card{background:white;border:1px solid var(--line);border-radius:13px;padding:18px;margin-bottom:15px;min-width:0}\n#metta-client-v14 .stat{font-size:29px;font-weight:800;color:var(--blue)}\n#metta-client-v14 .btn{border:0;border-radius:8px;padding:10px 15px;background:var(--blue);color:#fff;font-weight:700}\n#metta-client-v14 .btn.secondary{background:#e8eef5;color:#173b60}\n#metta-client-v14 .btn.outline{background:white;color:var(--blue);border:1px solid var(--blue)}\n#metta-client-v14 .btn.small{font-size:12px;padding:6px 10px}\n#metta-client-v14 .btn:disabled{opacity:.45;cursor:not-allowed}\n#metta-client-v14 .actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}\n#metta-client-v14 .field{display:flex;flex-direction:column;gap:5px;margin-bottom:13px}\n#metta-client-v14 .field label{font-weight:700;font-size:13px}\n#metta-client-v14 input,#metta-client-v14 select,#metta-client-v14 textarea{width:100%;border:1px solid #cad6e2;border-radius:8px;background:#fff;padding:10px;color:#1a3047}\n#metta-client-v14 textarea{min-height:92px;resize:vertical}\n#metta-client-v14 .pill{display:inline-block;background:#e7eff8;color:#24517c;border-radius:30px;padding:3px 10px;font-size:12px}\n#metta-client-v14 .pill.green{background:#e4f5ee;color:#116647}\n#metta-client-v14 .pill.amber{background:#fff2d9;color:#895608}\n#metta-client-v14 .pill.red{background:#fbe8e8;color:#a43131}\n#metta-client-v14 .tablewrap{overflow-x:auto}\n#metta-client-v14 table{width:100%;border-collapse:collapse;min-width:620px;font-size:13px}\n#metta-client-v14 th,#metta-client-v14 td{padding:10px;text-align:right;border-bottom:1px solid var(--line);vertical-align:top}\n#metta-client-v14 th{background:#eef3f8;color:#28455e}\n#metta-client-v14 .notice{background:#fff8e9;border-right:4px solid #d7a13e;padding:12px 15px;border-radius:7px;font-size:13px;margin:12px 0}\n#metta-client-v14 .success{background:#e8f6ee;border-right:4px solid #269369;padding:12px 15px;border-radius:7px;margin:12px 0}\n#metta-client-v14 .empty{padding:25px;text-align:center;color:#718093}\n#metta-client-v14 .service{border:1px solid var(--line);padding:13px;border-radius:10px;background:#fff}\n#metta-client-v14 .service label{display:flex;gap:9px;align-items:start;cursor:pointer}\n#metta-client-v14 .service input{width:auto;margin-top:7px}\n#metta-client-v14 .service strong{display:block}\n#metta-client-v14 .service small{color:#718093}\n#metta-client-v14 .panel{display:none}\n#metta-client-v14 .panel.active{display:block}\n#metta-client-v14 .stepbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}\n#metta-client-v14 .step{padding:7px 12px;background:#e7edf4;border-radius:7px;font-size:12px}\n#metta-client-v14 .step.active{background:var(--blue);color:#fff}\n#metta-client-v14 .divider{border:0;border-top:1px solid var(--line);margin:18px 0}\n#metta-client-v14 .help-float{position:fixed;bottom:22px;left:22px;border-radius:40px;z-index:100;background:var(--blue);color:#fff;border:0;padding:12px 18px;box-shadow:0 5px 20px #0002}\n#metta-client-v14 .helpbox{position:fixed;bottom:78px;left:22px;width:min(350px,calc(100vw - 35px));background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px;box-shadow:0 10px 40px #0003;z-index:101;display:none}\n#metta-client-v14 .helpbox.open{display:block}\n#metta-client-v14 .help-answer{background:#eef4fa;padding:12px;border-radius:9px;min-height:70px;margin:10px 0}\n@media(max-width:950px){#metta-client-v14 .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media(max-width:700px){#metta-client-v14 .shell{display:block}#metta-client-v14 .sidebar{padding:14px}#metta-client-v14 .sidebar nav{display:flex;overflow-x:auto;gap:5px}#metta-client-v14 .navbtn{width:auto;white-space:nowrap}#metta-client-v14 .main{padding:14px}#metta-client-v14 .grid,#metta-client-v14 .grid.two{grid-template-columns:1fr}}\n<\/style>\n\n<div id=\"hermes-h04-always-visible-entry\" role=\"region\" aria-label=\"\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629\" style=\"background:#ffffff;border:2px solid #1764ad;border-radius:12px;padding:15px 18px;margin:12px 12px 18px;color:#17304c;font-family:Tahoma,Arial,sans-serif\"><strong style=\"display:block;font-size:20px;margin-bottom:6px\">\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u2014 \u0623\u0633\u0626\u0644\u0629 \u0645\u0634\u0631\u0648\u0639\u0643<\/strong><span style=\"display:block;margin-bottom:12px\">\u0647\u0630\u0627 \u0627\u0644\u0642\u0633\u0645 \u0645\u062e\u0635\u0635 \u0644\u0639\u0631\u0636 \u0623\u0633\u0626\u0644\u0629 Hermes \u0648\u0627\u0644\u0631\u062f \u0639\u0644\u064a\u0647\u0627 \u062f\u0627\u062e\u0644 \u0627\u0644\u0645\u0648\u0642\u0639\u060c \u0628\u0639\u062f \u062f\u062e\u0648\u0644 Google \u0648\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639.<\/span><a href=\"#hermes-h04-panel\" style=\"display:inline-block;background:#1764ad;color:white;text-decoration:none;padding:9px 14px;border-radius:8px;margin-left:10px\">\u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0645\u0628\u0627\u0634\u0631\u0629 \u0625\u0644\u0649 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u0623\u0633\u0626\u0644\u0629<\/a><a href=\"\/?page_id=227\" style=\"display:inline-block;color:#1764ad;text-decoration:underline;padding:9px 8px\">\u0641\u062a\u062d \u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0628\u0635\u0641\u062d\u0629 \u0645\u0633\u062a\u0642\u0644\u0629<\/a><\/div>\n\n<div class=\"shell\">\n<aside class=\"sidebar\">\n  <div class=\"brand\">MettaTech<\/div>\n  <div class=\"brand-sub\">Engineering Client Portal \u00b7 V14<\/div>\n  <nav id=\"mnav\">\n    <button class=\"navbtn\" data-page=\"dashboard\">\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645<\/button>\n    <button class=\"navbtn\" data-page=\"projects\">\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639<\/button>\n    <button class=\"navbtn\" data-page=\"newproject\">\u0625\u0646\u0634\u0627\u0621 \u0645\u0634\u0631\u0648\u0639<\/button>\n    <button class=\"navbtn\" data-page=\"catalog\">\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/button>\n    <button class=\"navbtn\" data-page=\"documents\">\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/button>\n    <button class=\"navbtn\" data-page=\"tasks\">\u0627\u0644\u0645\u0647\u0627\u0645<\/button>\n    <button class=\"navbtn\" data-page=\"outputs\">\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a<\/button>\n    <button class=\"navbtn\" data-page=\"issues\">\u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/button>\n    <button class=\"navbtn active\" data-page=\"clarifications\" data-hermes-h04-entry=\"nav\" type=\"button\">\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/button>\n    <button class=\"navbtn\" data-page=\"team\">\u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/button>\n    <button class=\"navbtn\" data-page=\"subscription\">\u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643\u0627\u062a<\/button>\n    <button class=\"navbtn\" data-page=\"requests\">\u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629<\/button>\n    <button class=\"navbtn\" data-page=\"academy\">\u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629<\/button>\n    <button class=\"navbtn\" data-page=\"support\">\u0627\u0644\u062f\u0639\u0645 \u0627\u0644\u0641\u0646\u064a<\/button>\n    <button class=\"navbtn\" data-page=\"settings\">\u0627\u0644\u062d\u0633\u0627\u0628 \u0648\u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a<\/button>\n  <\/nav>\n<\/aside>\n\n<main class=\"main\">\n<div class=\"top\">\n  <div><h2 id=\"pageTitle\">\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/h2><div class=\"muted\">MettaTech Engineering Insights LTD<\/div><\/div>\n  <div class=\"actions\">\n    <span class=\"pill amber\">\u0628\u064a\u0626\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629 \u00b7 \u063a\u064a\u0631 \u0645\u062a\u0635\u0644\u0629<\/span>\n    <select id=\"projectPicker\" aria-label=\"\u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u062d\u0627\u0644\u064a\"><option value=\"\">\u0627\u062e\u062a\u0631 \u0645\u0634\u0631\u0648\u0639\u0627\u064b<\/option><\/select>\n  <\/div>\n<\/div>\n\n<section class=\"panel\" data-panel=\"dashboard\">\n  <div class=\"notice\">\u0647\u0630\u0647 \u0648\u0627\u062c\u0647\u0629 \u0639\u0631\u0636 \u0648\u062a\u062c\u0631\u0628\u0629. \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u062d\u0641\u0648\u0638\u0629 \u0645\u062d\u0644\u064a\u0627\u064b \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0641\u0642\u0637. \u0644\u0627 \u062a\u0633\u062a\u062e\u062f\u0645\u0647\u0627 \u0644\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0633\u0631\u064a\u0629 \u0623\u0648 \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u0627\u0621 \u0627\u0644\u062d\u0642\u064a\u0642\u064a\u0629.<\/div>\n  <div class=\"grid\" id=\"stats\"><\/div>\n  <div class=\"grid two\">\n    <div class=\"card\"><h3>\u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/h3><div id=\"projectSummary\"><\/div><\/div>\n    <div class=\"card\"><h3>\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u0633\u0631\u064a\u0639\u0629<\/h3><div class=\"actions\">\n      <button class=\"btn\" data-go=\"newproject\">\u0645\u0634\u0631\u0648\u0639 \u062c\u062f\u064a\u062f<\/button>\n      <button class=\"btn secondary\" data-go=\"documents\">\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/button>\n      <button class=\"btn secondary\" data-go=\"tasks\">\u0627\u0644\u0645\u0647\u0627\u0645<\/button>\n      <button class=\"btn secondary\" data-go=\"outputs\">\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a<\/button>\n    <\/div><\/div>\n  <\/div>\n  <div class=\"card\" data-hermes-h04-entry=\"dashboard\"><h3>\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u2014 Hermes<\/h3><p class=\"muted\">\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u062a\u064f\u0639\u0631\u0636 \u0648\u062a\u064f\u062c\u0627\u0628 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0628\u0648\u0627\u0628\u0629 Hermes \u0628\u0639\u062f \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u0644\u0627\u062d\u064a\u0627\u062a Google.<\/p><button type=\"button\" class=\"btn\" data-go=\"clarifications\">\u0639\u0631\u0636 \u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0648\u0627\u0644\u0625\u062c\u0627\u0628\u0629 \u0639\u0646\u0647\u0627<\/button><\/div>\n  <div class=\"card\"><h3>\u0622\u062e\u0631 \u0627\u0644\u0623\u0646\u0634\u0637\u0629<\/h3><div id=\"activityList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"projects\">\n  <div class=\"card\"><h3>\u0633\u062c\u0644 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639<\/h3><div id=\"projectList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"newproject\">\n  <div class=\"card\">\n    <h3>\u062a\u0623\u0633\u064a\u0633 \u0645\u0634\u0631\u0648\u0639 \u062c\u062f\u064a\u062f<\/h3>\n    <p class=\"muted\">\u064a\u064f\u0645\u0646\u062d \u0643\u0644 \u0645\u0634\u0631\u0648\u0639 \u0631\u0645\u0632\u0627\u064b \u0645\u0631\u062c\u0639\u064a\u0627\u064b \u0645\u0633\u062a\u0642\u0644\u0627\u064b\u060c \u0648\u062a\u0631\u062a\u0628\u0637 \u0628\u0647 \u062e\u062f\u0645\u0627\u062a\u0647 \u0648\u0645\u0633\u062a\u0646\u062f\u0627\u062a\u0647 \u0648\u0645\u0647\u0627\u0645\u0647.<\/p>\n    <div class=\"stepbar\" id=\"wizardSteps\"><\/div>\n    <form id=\"projectForm\">\n      <div id=\"wizardContent\"><\/div>\n      <div class=\"actions\">\n        <button type=\"button\" class=\"btn secondary\" id=\"wizardBack\">\u0627\u0644\u0633\u0627\u0628\u0642<\/button>\n        <button type=\"button\" class=\"btn\" id=\"wizardNext\">\u0627\u0644\u062a\u0627\u0644\u064a<\/button>\n        <button type=\"submit\" class=\"btn\" id=\"wizardSave\" hidden>\u062d\u0641\u0638 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a<\/button>\n      <\/div>\n    <\/form>\n  <\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"catalog\">\n  <div class=\"card\">\n    <h3>\u0643\u062a\u0627\u0644\u0648\u062c \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/h3>\n    <p class=\"muted\">12 \u0642\u0633\u0645\u0627\u064b\u060c \u0645\u0639 \u0642\u0627\u0628\u0644\u064a\u0629 \u0625\u0636\u0627\u0641\u0629 \u0645\u0647\u0627\u0645 \u062c\u062f\u064a\u062f\u0629 \u0648\u062a\u0634\u063a\u064a\u0644\u0647\u0627 \u0639\u0646\u062f \u062a\u0623\u0633\u064a\u0633 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0623\u0648 \u062f\u0648\u0631\u064a\u0627\u064b.<\/p>\n    <div class=\"grid\" id=\"catalogGrid\"><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"documents\">\n  <div class=\"card\">\n    <h3>\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/h3>\n    <p class=\"muted\">\u062a\u0633\u062c\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0641\u0642\u0637\u061b \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u062d\u0642\u064a\u0642\u064a \u0625\u0644\u0649 \u0627\u0644\u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0633\u062d\u0627\u0628\u064a \u063a\u064a\u0631 \u0645\u0641\u0639\u0651\u0644.<\/p>\n    <form id=\"documentForm\">\n      <div class=\"grid two\">\n        <div class=\"field\"><label>\u0646\u0648\u0639 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/label><select name=\"type\" required><option>Drawing<\/option><option>BOQ<\/option><option>Specification<\/option><option>Contract<\/option><option>Schedule<\/option><option>Correspondence<\/option><option>Other<\/option><\/select><\/div>\n        <div class=\"field\"><label>\u0631\u0642\u0645 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/label><input name=\"reference\" required maxlength=\"100\" placeholder=\"\u0645\u062b\u0627\u0644: STR-001\"><\/div>\n        <div class=\"field\"><label>\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/label><input name=\"title\" required maxlength=\"150\"><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u0625\u0635\u062f\u0627\u0631<\/label><input name=\"revision\" value=\"R0\" maxlength=\"30\"><\/div>\n      <\/div>\n      <div class=\"field\"><label>\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0645\u0635\u062f\u0631<\/label><textarea name=\"notes\" placeholder=\"\u0627\u0644\u0645\u0635\u062f\u0631\u060c \u062d\u0627\u0644\u0629 \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f\u060c \u0627\u0644\u0646\u0648\u0627\u0642\u0635...\"><\/textarea><\/div>\n      <button class=\"btn\" type=\"submit\">\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0633\u062c\u0644 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/h3><div id=\"documentList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"tasks\">\n  <div class=\"card\">\n    <h3>\u0625\u0646\u0634\u0627\u0621 \u0645\u0647\u0645\u0629<\/h3>\n    <form id=\"taskForm\">\n      <div class=\"grid two\">\n        <div class=\"field\"><label>\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u0647\u0645\u0629<\/label><input name=\"title\" required maxlength=\"160\"><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u0642\u0633\u0645<\/label><select name=\"department\" id=\"taskDepartment\"><\/select><\/div>\n        <div class=\"field\"><label>\u062f\u0648\u0631\u064a\u0629 \u0627\u0644\u062a\u0646\u0641\u064a\u0630<\/label><select name=\"frequency\"><option value=\"ONCE\">\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629<\/option><option value=\"WEEKLY\">\u0623\u0633\u0628\u0648\u0639\u064a\u0627\u064b<\/option><option value=\"FOUR_WEEKLY\">\u0643\u0644 4 \u0623\u0633\u0627\u0628\u064a\u0639<\/option><option value=\"MONTHLY\">\u0634\u0647\u0631\u064a\u0627\u064b<\/option><option value=\"ON_DOCUMENT\">\u0639\u0646\u062f \u0648\u0635\u0648\u0644 \u0645\u0633\u062a\u0646\u062f<\/option><\/select><\/div>\n        <div class=\"field\"><label>\u0645\u0631\u062c\u0639 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/label><input name=\"source\" maxlength=\"100\" placeholder=\"\u0627\u062e\u062a\u064a\u0627\u0631\u064a\"><\/div>\n      <\/div>\n      <button class=\"btn\" type=\"submit\">\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0645\u0647\u0645\u0629<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0633\u062c\u0644 \u0627\u0644\u0645\u0647\u0627\u0645<\/h3><div id=\"taskList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"outputs\">\n  <div class=\"card\">\n    <h3>\u0633\u062c\u0644 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/h3>\n    <p class=\"muted\">\u0644\u0627 \u064a\u0639\u062a\u0628\u0631 \u0623\u064a \u0645\u062e\u0631\u062c \u0645\u0639\u062a\u0645\u062f\u0627\u064b \u0647\u0646\u062f\u0633\u064a\u0627\u064b \u0625\u0644\u0627 \u0628\u0639\u062f \u0648\u062c\u0648\u062f \u0646\u062a\u064a\u062c\u0629 \u062a\u062f\u0642\u064a\u0642 \u0645\u0648\u062b\u0642\u0629 \u0645\u0646 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0645\u062e\u062a\u0635.<\/p>\n    <form id=\"outputForm\">\n      <div class=\"grid two\">\n        <div class=\"field\"><label>\u0627\u0633\u0645 \u0627\u0644\u0645\u062e\u0631\u062c<\/label><input name=\"title\" required maxlength=\"160\"><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u0642\u0633\u0645<\/label><select name=\"department\" id=\"outputDepartment\"><\/select><\/div>\n        <div class=\"field\"><label>\u0645\u0631\u062c\u0639 \u0627\u0644\u0645\u0635\u062f\u0631<\/label><input name=\"source\" required maxlength=\"100\"><\/div>\n        <div class=\"field\"><label>\u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629<\/label><select name=\"status\"><option value=\"DRAFT\">\u0645\u0633\u0648\u062f\u0629<\/option><option value=\"REVIEW_REQUIRED\">\u064a\u062d\u062a\u0627\u062c \u0645\u0631\u0627\u062c\u0639\u0629<\/option><option value=\"PARTIAL\">\u0645\u0643\u062a\u0645\u0644 \u062c\u0632\u0626\u064a\u0627\u064b<\/option><\/select><\/div>\n      <\/div>\n      <button class=\"btn\" type=\"submit\">\u062a\u0633\u062c\u064a\u0644 \u0645\u062e\u0631\u062c \u062a\u062c\u0631\u064a\u0628\u064a<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0645\u0633\u062c\u0644\u0629<\/h3><div id=\"outputList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel active\" data-panel=\"clarifications\" data-hermes-h04-inline=\"true\">\n<div id=\"hermes-h04-panel\" dir=\"rtl\" lang=\"ar\">\n<style>\n#hermes-h04-panel{font-family:Tahoma,Arial,sans-serif;color:#17304c;line-height:1.65;max-width:1050px;margin:10px auto;padding:20px;background:#f6f8fc}\n#hermes-h04-panel *{box-sizing:border-box}\n#hermes-h04-panel h2{font-size:24px;margin:0 0 8px}\n#hermes-h04-panel p{margin:4px 0 15px}\n#hermes-h04-panel .card{background:#fff;border:1px solid #d7e1ed;border-radius:12px;padding:18px;margin:13px 0}\n#hermes-h04-panel button{background:#1764ad;color:#fff;border:0;border-radius:7px;padding:10px 15px;cursor:pointer}\n#hermes-h04-panel button:disabled{opacity:.5;cursor:not-allowed}\n#hermes-h04-panel label{display:block;font-weight:bold;margin:8px 0 4px}\n#hermes-h04-panel textarea,#hermes-h04-panel select,#hermes-h04-panel input{width:100%;border:1px solid #bdcfe1;border-radius:7px;padding:9px;font:inherit;background:#fff}\n#hermes-h04-panel .minor{color:#5c7085;font-size:13px}\n#hermes-h04-panel .error{border-right:4px solid #b54545}\n#hermes-h04-panel .success{border-right:4px solid #26865d}\n#hermes-h04-panel .question{white-space:pre-line;background:#f6f8fc;padding:12px;border-radius:8px}\n#hermes-h04-panel .pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#hermes-h04-panel .status{padding:8px 10px;border-radius:7px;background:#eef3fa}\n@media(max-width:650px){#hermes-h04-panel .pair{grid-template-columns:1fr}}\n<\/style>\n<h2>Hermes Engineering \u2014 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/h2>\n<p class=\"minor\">\u0647\u0630\u0627 \u0642\u0633\u0645 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0644\u0639\u0645\u0644\u0627\u0621 Hermes. \u062a\u0638\u0647\u0631 \u0623\u0633\u0626\u0644\u0629 \u0645\u0634\u0631\u0648\u0639\u0643 \u0628\u0639\u062f \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0648\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u0644\u0627\u062d\u064a\u0627\u062a\u0643\u060c \u0648\u062a\u064f\u062d\u0641\u0638 \u0627\u0644\u0625\u062c\u0627\u0628\u0627\u062a \u0641\u064a \u0627\u0644\u0646\u0638\u0627\u0645 \u0648\u0644\u064a\u0633 \u0641\u064a \u0627\u0644\u0645\u062a\u0635\u0641\u062d. \u0646\u062a\u064a\u062c\u0629 \u0627\u0644\u062a\u062f\u0642\u064a\u0642 \u0648\u0627\u0644\u0625\u0646\u062a\u0627\u062c \u062a\u0628\u0642\u0649 \u0642\u064a\u062f \u0627\u0644\u062a\u062d\u0642\u0642 \u062d\u062a\u0649 \u0627\u0643\u062a\u0645\u0627\u0644 \u0623\u062f\u0644\u062a\u0647\u0627.<\/p>\n<div id=\"h04-msg\" class=\"card status\" role=\"status\" aria-live=\"polite\">\u064a\u062c\u0628 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 Google \u0627\u0644\u0645\u0631\u062a\u0628\u0637 \u0628\u0627\u0644\u0645\u0634\u0631\u0648\u0639.<\/div>\n<div class=\"card\"><a id=\"h04-google-login\" href=\"\/wp-login.php?loginSocial=google\" style=\"display:inline-block;padding:10px 15px;background:#1764ad;border-radius:7px;color:white;text-decoration:none\">\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Google<\/a><p class=\"minor\">\u064a\u0633\u0645\u062d \u0628\u0639\u0631\u0636 \u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0645\u062e\u0648\u0651\u0644 \u0628\u0647\u0627 \u0647\u0630\u0627 \u0627\u0644\u062d\u0633\u0627\u0628 \u0641\u0642\u0637. \u0625\u0630\u0627 \u0644\u0645 \u062a\u0643\u0646 \u0645\u0633\u062c\u0644\u0627\u064b\u060c \u0627\u0633\u062a\u062e\u062f\u0645 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0628\u0631 Google.<\/p><\/div>\n<div class=\"card\"><label for=\"h04-projects\">\u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u0645\u0635\u0631\u0651\u062d \u0628\u0647<\/label><select id=\"h04-projects\" disabled><option value=\"\">\u062c\u0627\u0631\u064d \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062d\u0633\u0627\u0628 \u0627\u0644\u0639\u0645\u064a\u0644&#8230;<\/option><\/select><p class=\"minor\">\u0644\u0627 \u062a\u064f\u0639\u0631\u0636 \u0623\u064a \u0623\u0633\u0626\u0644\u0629 \u0642\u0628\u0644 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062d\u0633\u0627\u0628 \u0627\u0644\u0639\u0645\u064a\u0644 \u0648\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639.<\/p><button id=\"h04-refresh\" type=\"button\">\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a<\/button><\/div>\n<div id=\"h04-summary\" class=\"card\" hidden><\/div>\n<div id=\"h04-list\" aria-live=\"polite\"><\/div>\n<\/div>\n<script>\n(function(){\n\"use strict\";\nconst root=document.getElementById(\"hermes-h04-panel\");if(!root)return;\nconst API=\"https:\/\/n8n-with-ai-assistant-arw3.srv2025133.hstgr.cloud\/webhook\/hermes-v14-portal-api\";\nconst el=id=>document.getElementById(id);const authLink=el(\"h04-google-login\");if(authLink){const u=new URL(authLink.getAttribute(\"href\"),location.origin);u.searchParams.set(\"redirect\",location.href);authLink.href=u.toString();}\nconst msg=(t,err)=>{const x=el(\"h04-msg\");x.textContent=t;x.className=\"card status\"+(err?\" error\":\"\");};\nlet token=\"\",project=\"\",loading=false;\nconst credentials=[\"\/wp-json\/hermes\/v1\/session\",\"\/index.php?rest_route=%2Fhermes%2Fv1%2Fsession\"];\nconst jwtRe=\/^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$\/;\nasync function getWpRestNonce(){\nconst fromPage=window.wpApiSettings?.nonce||window.hermesV14Portal?.nonce||window.wp?.apiFetch?.nonceMiddleware?.nonce;\nif(typeof fromPage===\"string\"&&\/^[A-Za-z0-9]{8,20}$\/.test(fromPage))return fromPage;\nconst res=await fetch(\"\/wp-admin\/admin-ajax.php?action=rest-nonce\",{method:\"GET\",credentials:\"same-origin\",cache:\"no-store\",headers:{\"Accept\":\"text\/plain\"}});\nif(!res.ok)throw Error(\"WORDPRESS_NONCE_UNAVAILABLE_HTTP_\"+res.status);\nconst nonce=(await res.text()).trim();\nif(!\/^[A-Za-z0-9]{8,20}$\/.test(nonce))throw Error(\"WORDPRESS_AUTH_REQUIRED_FOR_NONCE\");\nreturn nonce;\n}\nasync function getSession(){\nlet last=\"\";\nfor(const path of credentials){\ntry{\nconst h={\"Content-Type\":\"application\/json\",\"X-WP-Nonce\":await getWpRestNonce()};\nconst res=await fetch(path,{method:\"POST\",credentials:\"same-origin\",headers:h,body:\"{}\"});\nconst data=await res.json().catch(()=>({}));\nconst candidate=data.token||data.jwt||data.access_token||data.data?.token||data.data?.jwt||\"\";\nif(res.ok&&typeof candidate===\"string\"&&jwtRe.test(candidate))return candidate;\nlast=\"Session \"+res.status+\" \"+String(data.code||data.message||\"\");\n}catch(e){last=String(e.message||e);}\n}\nthrow Error(\"\u062a\u0639\u0630\u0631 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062c\u0644\u0633\u0629 WordPress \u0645\u0648\u062b\u0642\u0629. \"+last);\n}\nasync function api(action,project_id,request_data){\nconst t=await getSession();token=t;\nconst request={action,project_id:project_id||\"\",data:request_data||{}};\nconst resp=await fetch(API,{method:\"POST\",mode:\"cors\",cache:\"no-store\",headers:{\"Authorization\":\"Bearer \"+t,\"Content-Type\":\"application\/json\",\"Accept\":\"application\/json\"},body:JSON.stringify(request)});\nconst data=await resp.json().catch(()=>({code:\"INVALID_BACKEND_JSON\"}));\nif(!resp.ok||data.ok!==true)throw Error(\"n8n \"+resp.status+\": \"+String(data.code||data.message||\"REJECTED\"));\nreturn data;\n}\nfunction elmake(tag,text,cls){let x=document.createElement(tag);if(text!==undefined)x.textContent=String(text);if(cls)x.className=cls;return x;}\nfunction clear(){el(\"h04-list\").replaceChildren();el(\"h04-summary\").hidden=true;}\nasync function init(){\nif(loading)return;loading=true;\ntry{\nmsg(\"\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 Google \u0648\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639...\");\nconst d=await api(\"projects\");\nconst ps=Array.isArray(d.projects)?d.projects:[];\nconst select=el(\"h04-projects\");select.replaceChildren();\nconst blank=elmake(\"option\",\"\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\");blank.value=\"\";select.append(blank);\nfor(const p of ps){const o=elmake(\"option\",p.project_name||p.project_id);o.value=String(p.project_id||\"\");if(o.value)select.append(o);}\nselect.disabled=!ps.length;\nif(!ps.length){msg(\"\u0644\u0627 \u064a\u0648\u062c\u062f \u0645\u0634\u0631\u0648\u0639 \u0645\u062e\u0648\u0651\u0644 \u0644\u0647\u0630\u0627 \u0627\u0644\u062d\u0633\u0627\u0628. \u0644\u0627 \u064a\u0645\u0643\u0646 \u0639\u0631\u0636 \u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u063a\u064a\u0631.\",true);clear();return;}\nmsg(\"\u062a\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062d\u0633\u0627\u0628 \u0627\u0644\u0639\u0645\u064a\u0644. \u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639.\");\nif(ps.length===1){select.value=ps[0].project_id;await load();}\n}catch(e){clear();msg(\"\u062a\u0639\u0630\u0631 \u0627\u062a\u0635\u0627\u0644 \u0628\u0648\u0627\u0628\u0629 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a: \"+String(e.message||e),true);}finally{loading=false;}\n}\nasync function load(){\nproject=String(el(\"h04-projects\").value||\"\");clear();if(!project){msg(\"\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639.\");return;}\ntry{\nmsg(\"\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0645\u0646 \u0645\u062d\u0631\u0643 H04...\");\nconst d=await api(\"list_h04_questions\",project);\nconst files=await api(\"project\",project);const supportingDocuments=(Array.isArray(files.documents)?files.documents:[]).filter(x=>\/^MT-R2-[A-F0-9]{24}$\/.test(String(x.document_id||\"\"))&&\/^[a-f0-9]{64}$\/.test(String(x.checksum||\"\")));\nconst list=Array.isArray(d.questions)?d.questions:[];\nconst summary=el(\"h04-summary\");summary.hidden=false;summary.textContent=\"\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0645\u0633\u062c\u0644\u0629: \"+list.length+\". \u0627\u0644\u0625\u062c\u0627\u0628\u0627\u062a \u0627\u0644\u0645\u0642\u0628\u0648\u0644\u0629 \u062a\u064f\u0641\u062d\u0635 \u0622\u0644\u064a\u0627\u064b \u0648\u064a\u064f\u0639\u0627\u062f \u062a\u0642\u064a\u064a\u0645 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0645\u0647\u0645\u0629 \u062f\u0648\u0646 \u062a\u063a\u064a\u064a\u0631 \u0645\u062e\u0631\u062c\u0627\u062a \u0623\u062e\u0631\u0649.\";\nfor(const q of list){\nconst card=elmake(\"section\",undefined,\"card\");\ncard.append(elmake(\"h3\",String(q.task_code||\"\")+\" \u2014 \"+String(q.department||\"\")));\ncard.append(elmake(\"p\",String(q.readiness_status||q.review_status||\"PENDING_INPUT\"),\"minor\"));\nconst qaText=String(q.question||\"\");const parts=qaText.match(\/(?:^|\\n)1\\)\\s*([\\s\\S]*?)\\n2\\)\\s*([\\s\\S]*?)(?:\\n(?:\u0627\u0644\u0645\u062a\u0637\u0644\u0628\u0627\u062a|\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629)|$)\/);\nconst questions=parts?[parts[1].trim(),parts[2].trim()]:[qaText||\"\u0644\u0645 \u064a\u064f\u062d\u0645\u0651\u0644 \u0646\u0635 \u0627\u0644\u0633\u0624\u0627\u0644\"];\nconst answerBoxes=[];\nquestions.forEach((question,i)=>{const title=elmake(\"label\",\"\u0627\u0644\u0633\u0624\u0627\u0644 \"+(i+1));title.append(elmake(\"div\",question,\"question\"));const ta=elmake(\"textarea\");ta.rows=2;ta.maxLength=2900;ta.placeholder=\"\u0625\u062c\u0627\u0628\u062a\u0643 \u0623\u0648 \u0645\u0631\u062c\u0639 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u2014 \u0627\u062a\u0631\u0643\u0647 \u0641\u0627\u0631\u063a\u0627\u064b \u0625\u0630\u0627 \u0644\u0645 \u062a\u062a\u0648\u0641\u0631 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0629\";title.append(ta);card.append(title);answerBoxes.push(ta);});\nconst dl=elmake(\"label\",\"\u0645\u0633\u062a\u0646\u062f \u0645\u0624\u064a\u062f \u062a\u0645 \u0631\u0641\u0639\u0647 \u0648\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646\u0647 (\u0627\u062e\u062a\u064a\u0627\u0631\u064a)\");const ds=elmake(\"select\");ds.setAttribute(\"aria-label\",\"\u0645\u0633\u062a\u0646\u062f \u0645\u0624\u064a\u062f\");const emptyOpt=elmake(\"option\",\"\u062f\u0648\u0646 \u0645\u0633\u062a\u0646\u062f \u2014 \u0627\u0644\u0625\u062c\u0627\u0628\u0629 \u0627\u0644\u0646\u0635\u064a\u0629 \u062a\u0628\u0642\u0649 \u0642\u064a\u062f \u0627\u0644\u062a\u062d\u0642\u0642\");emptyOpt.value=\"\";ds.append(emptyOpt);for(const doc of supportingDocuments){const opt=elmake(\"option\",String(doc.file_name||doc.document_id));opt.value=String(doc.document_id);ds.append(opt);}dl.append(ds);card.append(dl);\nconst b=elmake(\"button\",\"\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0625\u062c\u0627\u0628\u0629\");b.type=\"button\";\nconst status=elmake(\"p\",\"\u0644\u0645 \u062a\u064f\u0631\u0633\u0644 \u0625\u062c\u0627\u0628\u0629 \u0628\u0639\u062f.\",\"minor\");card.append(b,status);\nb.addEventListener(\"click\",async()=>{\nconst answer=answerBoxes.map((x,i)=>x.value.trim()?(\"Q\"+(i+1)+\": \"+x.value.trim()):\"\").filter(Boolean).join(\"\\n\");\nconst chosen=supportingDocuments.find(x=>x.document_id===ds.value);if(answer.length<4&#038;&#038;!chosen){status.textContent=\"\u0623\u062c\u0628 \u0639\u0646 \u0633\u0624\u0627\u0644 \u0648\u0627\u062d\u062f \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0623\u0648 \u0627\u062e\u062a\u0631 \u0645\u0633\u062a\u0646\u062f\u0627\u064b \u0645\u0648\u062b\u0642\u0627\u064b. \u0633\u064a\u062a\u0645 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0623\u062e\u0631\u0649 \u0643\u0646\u0648\u0627\u0642\u0635.\";return;}\nb.disabled=true;status.textContent=\"\u062c\u0627\u0631\u064d \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0648\u062d\u0641\u0638 \u0627\u0644\u0625\u062c\u0627\u0628\u0629...\";\ntry{\nconst payload={issue_key:q.issue_key,task_code:q.task_code,answer_text:answer};if(chosen){payload.document_id=chosen.document_id;payload.document_sha256=chosen.checksum;}const d2=await api(\"submit_h04_answer\",project,payload);\nstatus.textContent=d2.code===\"H04_CUSTOMER_ANSWER_RECORDED_PENDING_ENGINEERING\"?\"\u062d\u064f\u0641\u0638\u062a \u0627\u0644\u0625\u062c\u0627\u0628\u0629. \u062a\u0646\u062a\u0638\u0631 \u062a\u062f\u0642\u064a\u0642 \u0627\u0644\u0623\u062f\u0644\u0629 \u0642\u0628\u0644 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u0647\u0645\u0629.\":String(d2.code||\"\u062a\u0645 \u0627\u0633\u062a\u0644\u0627\u0645 \u0627\u0644\u0631\u062f\");\n}catch(e){status.textContent=\"\u062a\u0639\u0630\u0631 \u0627\u0644\u062d\u0641\u0638: \"+String(e.message||e);}\nfinally{b.disabled=false;}\n});\nel(\"h04-list\").append(card);\n}\nmsg(list.length?\"\u062a\u0645 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0645\u0646 \u0627\u0644\u0646\u0638\u0627\u0645.\":\"\u0644\u0627 \u062a\u0648\u062c\u062f \u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0645\u0641\u062a\u0648\u062d\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639.\");\n}catch(e){clear();msg(\"\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639: \"+String(e.message||e),true);}\n}\nel(\"h04-refresh\").addEventListener(\"click\",()=>{if(el(\"h04-projects\").value)load();else init();});\nel(\"h04-projects\").addEventListener(\"change\",load);\ninit();\n})();\n<\/script>\n<\/section>\n\n<section class=\"panel\" data-panel=\"issues\">\n  <div class=\"card\" data-hermes-h04-entry=\"issues\">\n    <h3>\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629 \u0645\u0646 Hermes<\/h3>\n    <p>\u0644\u0639\u0631\u0636 \u0623\u0633\u0626\u0644\u0629 \u0645\u0634\u0631\u0648\u0639\u0643 \u0648\u0627\u0644\u0625\u062c\u0627\u0628\u0629 \u0639\u0646\u0647\u0627\u060c \u0627\u0641\u062a\u062d \u0627\u0644\u0642\u0633\u0645 \u0627\u0644\u0645\u0631\u062a\u0628\u0637 \u0628\u0627\u0644\u0646\u0638\u0627\u0645 \u0648\u0633\u062c\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 Google \u0627\u0644\u0645\u0635\u0631\u062d \u0628\u0647. \u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0648\u0627\u0644\u0625\u062c\u0627\u0628\u0627\u062a \u0644\u0627 \u062a\u064f\u062d\u0641\u0638 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629.<\/p>\n    <button type=\"button\" class=\"btn\" data-go=\"clarifications\">\u0641\u062a\u062d \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629<\/button>\n  <\/div>\n  <div class=\"card\">\n    <p class=\"muted\">\u0646\u0645\u0648\u0630\u062c \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a \u062a\u062c\u0631\u064a\u0628\u064a \u0648\u0645\u062d\u0644\u064a. \u0627\u0633\u062a\u062e\u062f\u0645 \u0631\u0627\u0628\u0637 Hermes \u0623\u0639\u0644\u0627\u0647 \u0644\u0644\u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0631\u062a\u0628\u0637\u0629 \u0628\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u0641\u0639\u0644\u064a\u0629.<\/p>\n    <h3>\u0633\u062c\u0644 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0648\u0627\u0644\u0646\u0648\u0627\u0642\u0635<\/h3>\n    <p>\u0643\u0644 \u062a\u0639\u0627\u0631\u0636 \u0623\u0648 \u063a\u0645\u0648\u0636 \u064a\u064f\u0648\u062b\u0651\u0642 \u0648\u064a\u0631\u0628\u0637 \u0628\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u060c \u062f\u0648\u0646 \u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0623\u062e\u0631\u0649 \u0627\u0644\u062a\u064a \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646\u0647\u0627.<\/p>\n    <form id=\"issueForm\">\n      <div class=\"grid two\">\n        <div class=\"field\"><label>\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0629<\/label><input name=\"title\" required maxlength=\"160\"><\/div>\n        <div class=\"field\"><label>\u0645\u0631\u062c\u0639 \u0627\u0644\u0645\u0633\u062a\u0646\u062f<\/label><input name=\"source\" maxlength=\"100\"><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u062e\u0637\u0648\u0631\u0629<\/label><select name=\"severity\"><option value=\"LOW\">\u0645\u0646\u062e\u0641\u0636\u0629<\/option><option value=\"MEDIUM\">\u0645\u062a\u0648\u0633\u0637\u0629<\/option><option value=\"HIGH\">\u0645\u0631\u062a\u0641\u0639\u0629<\/option><\/select><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u0642\u0633\u0645 \u0627\u0644\u0645\u062e\u062a\u0635<\/label><select name=\"department\" id=\"issueDepartment\"><\/select><\/div>\n      <\/div>\n      <div class=\"field\"><label>\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0645\u0634\u0643\u0644\u0629 \u0623\u0648 \u0627\u0644\u0633\u0624\u0627\u0644<\/label><textarea name=\"details\" required><\/textarea><\/div>\n      <button class=\"btn\" type=\"submit\">\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0627\u062d\u0638\u0629<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629<\/h3><div id=\"issueList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"team\">\n  <div class=\"card\">\n    <h3>\u0623\u0639\u0636\u0627\u0621 \u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/h3>\n    <p class=\"muted\">\u0625\u0636\u0627\u0641\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629 \u0641\u0642\u0637. \u0644\u0627 \u062a\u064f\u0631\u0633\u0644 \u062f\u0639\u0648\u0627\u062a \u0628\u0631\u064a\u062f\u064a\u0629 \u0648\u0644\u0627 \u062a\u0645\u0646\u062d \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0641\u0639\u0644\u064a\u0629.<\/p>\n    <form id=\"teamForm\">\n      <div class=\"grid two\">\n        <div class=\"field\"><label>\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a<\/label><input name=\"email\" type=\"email\" required><\/div>\n        <div class=\"field\"><label>\u0627\u0644\u062f\u0648\u0631<\/label><select name=\"role\"><option value=\"OWNER\">\u0645\u062f\u064a\u0631 \u062d\u0633\u0627\u0628 \u0627\u0644\u0634\u0631\u0643\u0629<\/option><option value=\"PM\">\u0645\u062f\u064a\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/option><option value=\"ENGINEER\">\u0645\u0647\u0646\u062f\u0633 \u0642\u0633\u0645<\/option><option value=\"VIEWER\">\u0645\u0634\u0627\u0647\u062f<\/option><\/select><\/div>\n      <\/div>\n      <button class=\"btn\" type=\"submit\">\u062a\u0633\u062c\u064a\u0644 \u0639\u0636\u0648 \u062a\u062c\u0631\u064a\u0628\u064a<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0633\u062c\u0644 \u0627\u0644\u0641\u0631\u064a\u0642<\/h3><div id=\"teamList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"subscription\">\n  <div class=\"card\">\n    <h3>\u0627\u0634\u062a\u0631\u0627\u0643 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/h3>\n    <p>\u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643 \u0627\u0644\u0645\u0642\u062a\u0631\u062d \u0634\u0647\u0631\u064a \u0644\u0643\u0644 \u0645\u0634\u0631\u0648\u0639\u060c \u0648\u064a\u062a\u062d\u062f\u062f \u0648\u0641\u0642 \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0648\u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629 \u0648\u062d\u062c\u0645 \u0627\u0644\u062a\u0634\u063a\u064a\u0644. \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u062e\u062f\u0645\u0629 \u0625\u0636\u0627\u0641\u064a\u0629 \u0627\u062e\u062a\u064a\u0627\u0631\u064a\u0629.<\/p>\n    <div id=\"subscriptionDetails\"><\/div>\n    <div class=\"notice\">\u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0648\u0627\u0644\u062f\u0641\u0639 \u0648\u0627\u0644\u0641\u0648\u0627\u062a\u064a\u0631 \u063a\u064a\u0631 \u0645\u0641\u0639\u0651\u0644\u0629. \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0644\u0627 \u064a\u0646\u0634\u0626 \u0627\u0644\u062a\u0632\u0627\u0645\u0627\u064b \u0645\u0627\u0644\u064a\u0627\u064b.<\/div>\n  <\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"requests\">\n  <div class=\"card\">\n    <h3>\u0637\u0644\u0628 \u062e\u062f\u0645\u0629 \u0647\u0646\u062f\u0633\u064a\u0629 \u0625\u0636\u0627\u0641\u064a\u0629<\/h3>\n    <form id=\"requestForm\">\n      <div class=\"field\"><label>\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0637\u0644\u0628<\/label><input name=\"title\" required maxlength=\"160\"><\/div>\n      <div class=\"field\"><label>\u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644<\/label><textarea name=\"details\" required><\/textarea><\/div>\n      <button class=\"btn\" type=\"submit\">\u062d\u0641\u0638 \u0637\u0644\u0628 \u062a\u062c\u0631\u064a\u0628\u064a<\/button>\n    <\/form>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u0637\u0644\u0628\u0627\u062a<\/h3><div id=\"requestList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"academy\">\n  <div class=\"grid two\">\n    <div class=\"card\"><h3>\u0628\u062f\u0621 \u0645\u0634\u0631\u0648\u0639 \u062c\u062f\u064a\u062f<\/h3><p>\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\u060c \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u062e\u062f\u0645\u0627\u062a\u060c \u0631\u0628\u0637 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0628\u0631\u0645\u0632 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\u060c \u0648\u0645\u062a\u0627\u0628\u0639\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u062a\u0646\u0641\u064a\u0630.<\/p><\/div>\n    <div class=\"card\"><h3>\u0642\u0631\u0627\u0621\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a<\/h3><p>\u062a\u0645\u064a\u064a\u0632 \u0627\u0644\u0645\u0633\u0648\u062f\u0629 \u0639\u0646 \u0627\u0644\u0645\u062e\u0631\u062c \u0642\u064a\u062f \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629 \u0648\u0627\u0644\u0645\u062e\u0631\u062c \u0627\u0644\u0645\u0643\u062a\u0645\u0644 \u062c\u0632\u0626\u064a\u0627\u064b \u0623\u0648 \u0627\u0644\u0645\u0639\u062a\u0645\u062f \u0645\u0646 \u062c\u0647\u0629 \u0627\u0644\u062a\u062f\u0642\u064a\u0642.<\/p><\/div>\n    <div class=\"card\"><h3>\u062d\u0635\u0631 \u0627\u0644\u0643\u0645\u064a\u0627\u062a QS5<\/h3><p>\u0625\u0646\u062a\u0627\u062c \u062d\u0635\u0631 \u0645\u0633\u062a\u0642\u0644 \u0627\u0639\u062a\u0645\u0627\u062f\u0627\u064b \u0639\u0644\u0649 \u0627\u0644\u0631\u0633\u0648\u0645\u0627\u062a \u0648\u0627\u0644\u0645\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629.<\/p><\/div>\n    <div class=\"card\"><h3>\u0645\u0642\u0627\u0631\u0646\u0629 BOQ \u2014 QS6<\/h3><p>\u0645\u0642\u0627\u0631\u0646\u0629 \u0627\u0644\u062d\u0635\u0631 \u0627\u0644\u0645\u0633\u062a\u0642\u0644 \u0645\u0639 \u062c\u062f\u0648\u0644 \u0627\u0644\u0643\u0645\u064a\u0627\u062a\u060c \u0648\u062a\u0648\u062b\u064a\u0642 \u0627\u0644\u0641\u0631\u0648\u0642\u0627\u062a \u0648\u0627\u0644\u0645\u0631\u0627\u062c\u0639.<\/p><\/div>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u062f\u0631\u0648\u0633 \u0627\u0644\u0645\u0631\u0626\u064a\u0629<\/h3><p class=\"muted\">\u0633\u064a\u064f\u0631\u0628\u0637 \u0627\u0644\u0642\u0633\u0645 \u0628\u0642\u0646\u0627\u0629 YouTube \u0627\u0644\u0631\u0633\u0645\u064a\u0629 \u0639\u0646\u062f \u062a\u0648\u0641\u064a\u0631 \u0631\u0627\u0628\u0637\u0647\u0627.<\/p><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"support\">\n  <div class=\"card\">\n    <h3>\u0627\u0644\u0625\u0628\u0644\u0627\u063a \u0639\u0646 \u0645\u0634\u0643\u0644\u0629 \u0641\u0646\u064a\u0629<\/h3>\n    <form id=\"supportForm\">\n      <div class=\"field\"><label>\u0627\u0644\u0645\u0648\u0636\u0648\u0639<\/label><input name=\"title\" required maxlength=\"160\"><\/div>\n      <div class=\"field\"><label>\u0648\u0635\u0641 \u0627\u0644\u0645\u0634\u0643\u0644\u0629<\/label><textarea name=\"details\" required><\/textarea><\/div>\n      <button class=\"btn\" type=\"submit\">\u062d\u0641\u0638 \u0628\u0644\u0627\u063a \u0645\u062d\u0644\u064a<\/button>\n    <\/form>\n    <div class=\"notice\">\u0647\u0630\u0627 \u0627\u0644\u0646\u0645\u0648\u0630\u062c \u0644\u0627 \u064a\u0631\u0633\u0644 \u0627\u0644\u0628\u0644\u0627\u063a \u0625\u0644\u0649 \u0641\u0631\u064a\u0642 \u0627\u0644\u062f\u0639\u0645 \u062d\u062a\u0649 \u064a\u062a\u0645 \u0631\u0628\u0637 \u062e\u062f\u0645\u0629 \u0627\u0644\u062a\u0630\u0627\u0643\u0631.<\/div>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u0628\u0644\u0627\u063a\u0627\u062a<\/h3><div id=\"supportList\"><\/div><\/div>\n<\/section>\n\n<section class=\"panel\" data-panel=\"settings\">\n  <div class=\"card\"><h3>\u062d\u0627\u0644\u0629 \u0627\u0644\u062a\u0643\u0627\u0645\u0644\u0627\u062a<\/h3>\n    <div class=\"tablewrap\"><table><thead><tr><th>\u0627\u0644\u062e\u062f\u0645\u0629<\/th><th>\u0627\u0644\u062d\u0627\u0644\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0648\u0627\u062c\u0647\u0629<\/th><\/tr><\/thead><tbody>\n      <tr><td>WordPress Authentication<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n      <tr><td>n8n \/ Engineering Workflows<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n      <tr><td>Google Drive \/ Document Storage<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n      <tr><td>Engineering Reviewer<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n      <tr><td>Payment \/ Subscription<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n      <tr><td>Support \/ Email<\/td><td>\u063a\u064a\u0631 \u0645\u0631\u0628\u0648\u0637<\/td><\/tr>\n    <\/tbody><\/table><\/div>\n  <\/div>\n  <div class=\"card\"><h3>\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629<\/h3>\n    <p class=\"muted\">\u062a\u064f\u062e\u0632\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u062a\u0635\u0641\u062d. \u0644\u0627 \u062a\u062a\u0632\u0627\u0645\u0646 \u0628\u064a\u0646 \u0627\u0644\u0623\u062c\u0647\u0632\u0629.<\/p>\n    <button class=\"btn secondary\" id=\"exportData\">\u062a\u0635\u062f\u064a\u0631 \u0646\u0633\u062e\u0629 JSON<\/button>\n    <button class=\"btn outline\" id=\"resetData\">\u062d\u0630\u0641 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629<\/button>\n  <\/div>\n<\/section>\n\n<\/main>\n<\/div>\n\n<button class=\"help-float\" id=\"helpToggle\">\u0627\u0644\u0645\u0633\u0627\u0639\u062f<\/button>\n<div class=\"helpbox\" id=\"helpBox\">\n  <h3>\u0645\u0633\u0627\u0639\u062f MettaTech<\/h3>\n  <p class=\"muted\">\u0625\u062c\u0627\u0628\u0627\u062a \u0625\u0631\u0634\u0627\u062f\u064a\u0629 \u0645\u062d\u0644\u064a\u0629\u060c \u0648\u0644\u064a\u0633\u062a \u0645\u062d\u0627\u062f\u062b\u0629 AI \u0645\u062a\u0635\u0644\u0629.<\/p>\n  <div class=\"help-answer\" id=\"helpAnswer\">\u0627\u0633\u0623\u0644 \u0639\u0646 \u0625\u0646\u0634\u0627\u0621 \u0645\u0634\u0631\u0648\u0639 \u0623\u0648 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0623\u0648 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0623\u0648 \u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643.<\/div>\n  <input id=\"helpQuestion\" placeholder=\"\u0627\u0643\u062a\u0628 \u0633\u0624\u0627\u0644\u0643...\">\n  <div class=\"actions\" style=\"margin-top:9px\">\n    <button class=\"btn small\" id=\"helpAsk\">\u0625\u0631\u0633\u0627\u0644<\/button>\n    <button class=\"btn small secondary\" id=\"helpClose\">\u0625\u063a\u0644\u0627\u0642<\/button>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n\"use strict\";\nconst root=document.getElementById(\"metta-client-v14\");\nif(!root||root.dataset.initialized)return;\nroot.dataset.initialized=\"true\";\nconst $=s=>root.querySelector(s);\nconst $$=s=>Array.from(root.querySelectorAll(s));\nconst KEY=\"METTATECH_CLIENT_PORTAL_V14_DEMO\";\nconst esc=v=>String(v??\"\").replace(\/[&<>\"']\/g,c=>({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"}[c]));\nconst uid=()=>(\"ID-\"+Date.now().toString(36)+\"-\"+Math.random().toString(36).slice(2,8)).toUpperCase();\nconst now=()=>new Date().toISOString();\nconst departments=[\n{id:\"PLANNING\",name:\"Planning\",ar:\"\u0627\u0644\u062a\u062e\u0637\u064a\u0637\",tasks:[\"WBS\",\"Baseline Schedule\",\"Critical Path\",\"4-Week Lookahead\",\"Progress Monitoring\"]},\n{id:\"TECHNICAL\",name:\"Technical\",ar:\"\u0627\u0644\u0645\u0643\u062a\u0628 \u0627\u0644\u0641\u0646\u064a\",tasks:[\"Drawing Register\",\"Shop Drawings\",\"Material Submittals\",\"Specifications Review\",\"Clash Detection\",\"Technical RFIs\"]},\n{id:\"QAQC\",name:\"QA\/QC\",ar:\"\u0627\u0644\u062c\u0648\u062f\u0629\",tasks:[\"ITP\",\"Method Statements\",\"Inspection Register\",\"NCR\",\"Material Tests\"]},\n{id:\"PROCUREMENT\",name:\"Procurement\",ar:\"\u0627\u0644\u0645\u0634\u062a\u0631\u064a\u0627\u062a\",tasks:[\"RFQ\",\"Supplier Register\",\"Comparison Sheet\",\"Long Lead Items\"]},\n{id:\"SITE\",name:\"Site\",ar:\"\u0627\u0644\u062a\u0646\u0641\u064a\u0630\",tasks:[\"Daily Report\",\"Weekly Progress\",\"Manpower\",\"Equipment\",\"Site Constraints\"]},\n{id:\"QS\",name:\"QS \/ Cost\",ar:\"\u0627\u0644\u0643\u0645\u064a\u0627\u062a \u0648\u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641\",tasks:[\"QS1 Quantity Register\",\"QS2 Cost Baseline\",\"QS3 Valuations\",\"QS4 Variations\",\"QS5 Independent Quantity Takeoff\",\"QS6 BOQ Comparison\"]},\n{id:\"CONTRACTS\",name:\"Contracts\",ar:\"\u0627\u0644\u0639\u0642\u0648\u062f\",tasks:[\"Contract Draft\",\"FIDIC Review\",\"Claims\",\"Notices\",\"Subcontract Register\"]},\n{id:\"HSE\",name:\"HSE\",ar:\"\u0627\u0644\u0633\u0644\u0627\u0645\u0629\",tasks:[\"HSE Plan\",\"Risk Assessments\",\"Inspections\",\"Incident Register\"]},\n{id:\"FINANCE\",name:\"Finance\",ar:\"\u0627\u0644\u0645\u0627\u0644\u064a\u0629\",tasks:[\"Cash Flow\",\"Payment Tracking\",\"Forecast\",\"Financial Reporting\"]},\n{id:\"SURVEY\",name:\"Survey\",ar:\"\u0627\u0644\u0645\u0633\u0627\u062d\u0629\",tasks:[\"Site Coordinates\",\"Benchmarks\",\"Column Centers\",\"Levels\",\"Setting Out\"]},\n{id:\"DOCUMENT\",name:\"Document Control\",ar:\"\u0636\u0628\u0637 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a\",tasks:[\"Document Register\",\"Revision Control\",\"Transmittals\",\"Distribution\"]},\n{id:\"CORRESPONDENCE\",name:\"Correspondence\",ar:\"\u0627\u0644\u0645\u0631\u0627\u0633\u0644\u0627\u062a\",tasks:[\"Incoming Letters\",\"Outgoing Letters\",\"Response Tracking\",\"Meeting Actions\"]}\n];\nconst labels={DRAFT:\"\u0645\u0633\u0648\u062f\u0629\",REVIEW_REQUIRED:\"\u062a\u062d\u062a\u0627\u062c \u0645\u0631\u0627\u062c\u0639\u0629\",PARTIAL:\"\u0645\u0643\u062a\u0645\u0644 \u062c\u0632\u0626\u064a\u0627\u064b\",OPEN:\"\u0645\u0641\u062a\u0648\u062d\u0629\",CLOSED:\"\u0645\u063a\u0644\u0642\u0629\",ONCE:\"\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629\",WEEKLY:\"\u0623\u0633\u0628\u0648\u0639\u064a\u0627\u064b\",FOUR_WEEKLY:\"\u0643\u0644 4 \u0623\u0633\u0627\u0628\u064a\u0639\",MONTHLY:\"\u0634\u0647\u0631\u064a\u0627\u064b\",ON_DOCUMENT:\"\u0639\u0646\u062f \u0648\u0635\u0648\u0644 \u0645\u0633\u062a\u0646\u062f\"};\nconst initial=()=>({version:14,selectedProject:\"\",projects:[],documents:[],tasks:[],outputs:[],issues:[],team:[],requests:[],support:[],activity:[]});\nlet state;\ntry{const saved=JSON.parse(localStorage.getItem(KEY));state=saved&&saved.version===14?{...initial(),...saved}:initial()}catch{state=initial()}\nlet wizardStep=0;\nlet draft={name:\"\",code:\"\",type:\"\",country:\"\",city:\"\",client:\"\",description:\"\",services:[],pm:false};\nconst save=()=>{try{localStorage.setItem(KEY,JSON.stringify(state))}catch(e){alert(\"\u062a\u0639\u0630\u0631 \u062d\u0641\u0638 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u062d\u0644\u064a\u0627\u064b. \u0642\u062f \u062a\u0643\u0648\u0646 \u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0645\u062a\u0644\u0626\u0629.\")}};\nconst project=()=>state.projects.find(p=>p.id===state.selectedProject);\nconst scoped=arr=>arr.filter(x=>x.projectId===state.selectedProject);\nconst activity=(text,projectId=state.selectedProject)=>{state.activity.unshift({id:uid(),text,projectId,date:now()});state.activity=state.activity.slice(0,100)};\nconst requireProject=()=>{if(project())return true;alert(\"\u0627\u062e\u062a\u0631 \u0645\u0634\u0631\u0648\u0639\u0627\u064b \u0623\u0648\u0644\u0627\u064b \u0645\u0646 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0639\u0644\u0648\u064a\u0629 \u0623\u0648 \u0623\u0646\u0634\u0626 \u0645\u0634\u0631\u0648\u0639\u0627\u064b \u062c\u062f\u064a\u062f\u0627\u064b.\");return false};\nconst empty=msg=>'<div class=\"empty\">'+esc(msg||\"\u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0633\u062c\u0644\u0629\")+'<\/div>';\nconst table=(headers,rows)=>rows.length?'<div class=\"tablewrap\"><table><thead><tr>'+headers.map(x=>'<th>'+esc(x)+'<\/th>').join(\"\")+'<\/tr><\/thead><tbody>'+rows.map(r=>'<tr>'+r.map(c=>'<td>'+c+'<\/td>').join(\"\")+'<\/tr>').join(\"\")+'<\/tbody><\/table><\/div>':empty();\nconst pill=(v,kind=\"\")=>'<span class=\"pill '+kind+'\">'+esc(labels[v]||v)+'<\/span>';\nconst date=v=>v?new Date(v).toLocaleDateString(\"ar-QA\"):\"\u2014\";\nconst titles={clarifications:\"\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629\",dashboard:\"\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645\",projects:\"\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639\",newproject:\"\u0625\u0646\u0634\u0627\u0621 \u0645\u0634\u0631\u0648\u0639\",catalog:\"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629\",documents:\"\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a\",tasks:\"\u0627\u0644\u0645\u0647\u0627\u0645\",outputs:\"\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a\",issues:\"\u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629\",team:\"\u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\",subscription:\"\u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643\u0627\u062a\",requests:\"\u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629\",academy:\"\u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629\",support:\"\u0627\u0644\u062f\u0639\u0645 \u0627\u0644\u0641\u0646\u064a\",settings:\"\u0627\u0644\u062d\u0633\u0627\u0628 \u0648\u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a\"};\nfunction go(page){\n  if(!titles[page])return;\n  $$(\".panel\").forEach(x=>x.classList.toggle(\"active\",x.dataset.panel===page));\n  $$(\".navbtn\").forEach(x=>x.classList.toggle(\"active\",x.dataset.page===page));\n  $(\"#pageTitle\").textContent=titles[page];\n  render();\n  root.scrollIntoView({behavior:\"smooth\",block:\"start\"});\n}\n$$(\"[data-page]\").forEach(b=>b.addEventListener(\"click\",()=>go(b.dataset.page)));\n$$(\"[data-go]\").forEach(b=>b.addEventListener(\"click\",()=>go(b.dataset.go)));\nfunction renderPicker(){\n  const sel=$(\"#projectPicker\");\n  sel.innerHTML='<option value=\"\">\u0627\u062e\u062a\u0631 \u0645\u0634\u0631\u0648\u0639\u0627\u064b<\/option>'+state.projects.map(p=>'<option value=\"'+esc(p.id)+'\">'+esc(p.code+\" \u2014 \"+p.name)+'<\/option>').join(\"\");\n  sel.value=state.selectedProject;\n}\n$(\"#projectPicker\").addEventListener(\"change\",e=>{state.selectedProject=e.target.value;save();render()});\nfunction renderDashboard(){\n const p=project(),docs=scoped(state.documents),tasks=scoped(state.tasks),outputs=scoped(state.outputs),issues=scoped(state.issues);\n const stats=[[\"\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639\",state.projects.length],[\"\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a\",docs.length],[\"\u0627\u0644\u0645\u0647\u0627\u0645\",tasks.length],[\"\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a\",outputs.length],[\"\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0645\u0641\u062a\u0648\u062d\u0629\",issues.filter(i=>i.status===\"OPEN\").length],[\"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629\",p?.services.length||0]];\n $(\"#stats\").innerHTML=stats.map(s=>'<div class=\"card\"><div class=\"muted\">'+s[0]+'<\/div><div class=\"stat\">'+s[1]+'<\/div><\/div>').join(\"\");\n $(\"#projectSummary\").innerHTML=p?'<strong>'+esc(p.name)+'<\/strong><p>\u0627\u0644\u0645\u0631\u062c\u0639: '+esc(p.code)+'<\/p><p>\u0627\u0644\u0645\u0648\u0642\u0639: '+esc(p.city+\", \"+p.country)+'<\/p><p>\u0627\u0644\u062d\u0627\u0644\u0629: '+pill(\"DRAFT\")+'<\/p>':empty(\"\u0644\u0645 \u064a\u062a\u0645 \u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u0634\u0631\u0648\u0639\");\n const events=state.activity.filter(a=>!p||a.projectId===p.id).slice(0,8);\n $(\"#activityList\").innerHTML=events.length?events.map(a=>'<p><span class=\"muted\">'+date(a.date)+'<\/span> \u2014 '+esc(a.text)+'<\/p>').join(\"\"):empty(\"\u0644\u0627 \u062a\u0648\u062c\u062f \u0623\u0646\u0634\u0637\u0629\");\n}\nfunction renderProjects(){\n $(\"#projectList\").innerHTML=table([\"\u0627\u0644\u0645\u0631\u062c\u0639\",\"\u0627\u0644\u0645\u0634\u0631\u0648\u0639\",\"\u0627\u0644\u0645\u0648\u0642\u0639\",\"\u0627\u0644\u062e\u062f\u0645\u0627\u062a\",\"\u0627\u0644\u0625\u062c\u0631\u0627\u0621\"],state.projects.map(p=>[\n esc(p.code),esc(p.name),esc(p.country+\" \/ \"+p.city),String(p.services.length),'<button class=\"btn small secondary\" data-select=\"'+esc(p.id)+'\">\u0641\u062a\u062d \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/button>'\n ]));\n $$(\"[data-select]\").forEach(b=>b.onclick=()=>{state.selectedProject=b.dataset.select;save();go(\"dashboard\")});\n}\nfunction wizard(){\n $(\"#wizardSteps\").innerHTML=[\"\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\",\"\u0627\u0644\u062e\u062f\u0645\u0627\u062a\",\"\u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629\"].map((x,i)=>'<span class=\"step '+(wizardStep===i?\"active\":\"\")+'\">'+(i+1)+\" \u00b7 \"+x+'<\/span>').join(\"\");\n $(\"#wizardBack\").hidden=wizardStep===0;\n $(\"#wizardNext\").hidden=wizardStep===2;\n $(\"#wizardSave\").hidden=wizardStep!==2;\n if(wizardStep===0){\n  $(\"#wizardContent\").innerHTML='<div class=\"grid two\">'+\n  field(\"\u0627\u0633\u0645 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\",\"name\",draft.name,true)+field(\"\u0627\u0644\u0631\u0642\u0645 \u0627\u0644\u0645\u0631\u062c\u0639\u064a\",\"code\",draft.code,true)+\n  field(\"\u0646\u0648\u0639 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\",\"type\",draft.type,true)+field(\"\u0627\u0644\u062f\u0648\u0644\u0629\",\"country\",draft.country,true)+\n  field(\"\u0627\u0644\u0645\u062f\u064a\u0646\u0629\",\"city\",draft.city,true)+field(\"\u0627\u0644\u0634\u0631\u0643\u0629 \/ \u0627\u0644\u0639\u0645\u064a\u0644\",\"client\",draft.client,false)+\n  '<\/div><div class=\"field\"><label>\u0648\u0635\u0641 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/label><textarea name=\"description\">'+esc(draft.description)+'<\/textarea><\/div>';\n }else if(wizardStep===1){\n  $(\"#wizardContent\").innerHTML='<p>\u0627\u062e\u062a\u0631 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639:<\/p><div class=\"grid\">'+departments.map(d=>'<div class=\"service\"><label><input type=\"checkbox\" name=\"service\" value=\"'+d.id+'\" '+(draft.services.includes(d.id)?\"checked\":\"\")+'><span><strong>'+esc(d.name)+'<\/strong><small>'+esc(d.ar)+'<\/small><\/span><\/label><\/div>').join(\"\")+'<\/div><hr class=\"divider\"><label><input style=\"width:auto\" type=\"checkbox\" name=\"pm\" '+(draft.pm?\"checked\":\"\")+'> \u0625\u0636\u0627\u0641\u0629 \u062e\u062f\u0645\u0629 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/label>';\n }else{\n  $(\"#wizardContent\").innerHTML='<div class=\"card\"><h3>\u0645\u0631\u0627\u062c\u0639\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a<\/h3><p><strong>\u0627\u0644\u0645\u0634\u0631\u0648\u0639:<\/strong> '+esc(draft.name)+'<\/p><p><strong>\u0627\u0644\u0645\u0631\u062c\u0639:<\/strong> '+esc(draft.code)+'<\/p><p><strong>\u0627\u0644\u0645\u0648\u0642\u0639:<\/strong> '+esc(draft.city+\", \"+draft.country)+'<\/p><p><strong>\u0627\u0644\u0623\u0642\u0633\u0627\u0645:<\/strong> '+esc(draft.services.join(\", \"))+'<\/p><p><strong>\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639:<\/strong> '+(draft.pm?\"\u0645\u0637\u0644\u0648\u0628\u0629\":\"\u063a\u064a\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\")+'<\/p><\/div><div class=\"notice\">\u0627\u0644\u062d\u0641\u0638 \u0645\u062d\u0644\u064a \u0648\u062a\u062c\u0631\u064a\u0628\u064a \u0641\u0642\u0637. \u0644\u0627 \u064a\u0628\u062f\u0623 \u0627\u0634\u062a\u0631\u0627\u0643\u0627\u064b \u0623\u0648 \u0639\u0645\u0644\u0627\u064b \u0647\u0646\u062f\u0633\u064a\u0627\u064b.<\/div>';\n }\n}\nfunction field(label,name,value,required){\n return '<div class=\"field\"><label>'+label+'<\/label><input name=\"'+name+'\" value=\"'+esc(value)+'\" '+(required?\"required\":\"\")+' maxlength=\"150\"><\/div>';\n}\nfunction captureWizard(){\n const f=$(\"#projectForm\"),fd=new FormData(f);\n if(wizardStep===0){for(const k of [\"name\",\"code\",\"type\",\"country\",\"city\",\"client\",\"description\"])draft[k]=String(fd.get(k)||\"\").trim()}\n if(wizardStep===1){draft.services=fd.getAll(\"service\");draft.pm=fd.get(\"pm\")===\"on\"}\n}\n$(\"#wizardNext\").onclick=()=>{\n const f=$(\"#projectForm\");\n if(wizardStep===0&&!f.reportValidity())return;\n captureWizard();\n if(wizardStep===1&&!draft.services.length){alert(\"\u0627\u062e\u062a\u0631 \u0642\u0633\u0645\u0627\u064b \u0648\u0627\u062d\u062f\u0627\u064b \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.\");return}\n wizardStep=Math.min(2,wizardStep+1);wizard();\n};\n$(\"#wizardBack\").onclick=()=>{captureWizard();wizardStep=Math.max(0,wizardStep-1);wizard()};\n$(\"#projectForm\").onsubmit=e=>{\n e.preventDefault();\n if(wizardStep!==2)return;\n if(!draft.name||!draft.code||!draft.country||!draft.services.length)return;\n if(state.projects.some(p=>p.code.toLowerCase()===draft.code.toLowerCase())){alert(\"\u0627\u0644\u0631\u0642\u0645 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0645\u0633\u062a\u062e\u062f\u0645. \u0627\u062e\u062a\u0631 \u0631\u0642\u0645\u0627\u064b \u0645\u062e\u062a\u0644\u0641\u0627\u064b.\");wizardStep=0;wizard();return}\n const p={...draft,id:uid(),createdAt:now(),status:\"DRAFT\"};\n state.projects.push(p);state.selectedProject=p.id;\n activity(\"\u0625\u0646\u0634\u0627\u0621 \u0645\u0644\u0641 \u0645\u0634\u0631\u0648\u0639 \u062a\u062c\u0631\u064a\u0628\u064a \"+p.code,p.id);\n save();draft={name:\"\",code:\"\",type:\"\",country:\"\",city:\"\",client:\"\",description:\"\",services:[],pm:false};wizardStep=0;wizard();go(\"dashboard\");\n};\nfunction renderCatalog(){\n $(\"#catalogGrid\").innerHTML=departments.map(d=>'<div class=\"service\"><h3>'+esc(d.name)+'<\/h3><p class=\"muted\">'+esc(d.ar)+'<\/p><div>'+d.tasks.map(t=>'<div>\u2022 '+esc(t)+'<\/div>').join(\"\")+'<\/div><\/div>').join(\"\");\n}\nfunction deptOptions(id){\n $(id).innerHTML=departments.map(d=>'<option value=\"'+d.id+'\">'+esc(d.name+\" \u2014 \"+d.ar)+'<\/option>').join(\"\");\n}\n[\"#taskDepartment\",\"#outputDepartment\",\"#issueDepartment\"].forEach(deptOptions);\nfunction bindForm(id,collection,mapper,message){\n $(id).onsubmit=e=>{\n  e.preventDefault();if(!requireProject())return;\n  const fd=new FormData(e.target);\n  const obj={id:uid(),projectId:state.selectedProject,createdAt:now(),...mapper(fd)};\n  state[collection].unshift(obj);activity(message+\": \"+(obj.title||obj.email));\n  save();e.target.reset();render();\n };\n}\nbindForm(\"#documentForm\",\"documents\",f=>({type:f.get(\"type\"),reference:String(f.get(\"reference\")).trim(),title:String(f.get(\"title\")).trim(),revision:f.get(\"revision\"),notes:f.get(\"notes\"),status:\"REGISTERED_METADATA_ONLY\"}),\"\u062a\u0633\u062c\u064a\u0644 \u0645\u0633\u062a\u0646\u062f\");\nbindForm(\"#taskForm\",\"tasks\",f=>({title:String(f.get(\"title\")).trim(),department:f.get(\"department\"),frequency:f.get(\"frequency\"),source:f.get(\"source\"),status:\"DRAFT\"}),\"\u0625\u0636\u0627\u0641\u0629 \u0645\u0647\u0645\u0629\");\nbindForm(\"#outputForm\",\"outputs\",f=>({title:String(f.get(\"title\")).trim(),department:f.get(\"department\"),source:f.get(\"source\"),status:f.get(\"status\"),reviewEvidence:null}),\"\u062a\u0633\u062c\u064a\u0644 \u0645\u062e\u0631\u062c\");\nbindForm(\"#issueForm\",\"issues\",f=>({title:String(f.get(\"title\")).trim(),source:f.get(\"source\"),severity:f.get(\"severity\"),department:f.get(\"department\"),details:f.get(\"details\"),status:\"OPEN\"}),\"\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0627\u062d\u0638\u0629\");\nbindForm(\"#teamForm\",\"team\",f=>({email:String(f.get(\"email\")).trim(),role:f.get(\"role\"),status:\"DEMO_ONLY\"}),\"\u0625\u0636\u0627\u0641\u0629 \u0639\u0636\u0648\");\nbindForm(\"#requestForm\",\"requests\",f=>({title:String(f.get(\"title\")).trim(),details:f.get(\"details\"),status:\"LOCAL_ONLY\"}),\"\u0637\u0644\u0628 \u062e\u062f\u0645\u0629\");\nbindForm(\"#supportForm\",\"support\",f=>({title:String(f.get(\"title\")).trim(),details:f.get(\"details\"),status:\"NOT_SENT\"}),\"\u0628\u0644\u0627\u063a \u062f\u0639\u0645\");\nfunction renderLists(){\n $(\"#documentList\").innerHTML=table([\"\u0627\u0644\u0645\u0631\u062c\u0639\",\"\u0627\u0644\u0627\u0633\u0645\",\"\u0627\u0644\u0646\u0648\u0639\",\"\u0627\u0644\u0625\u0635\u062f\u0627\u0631\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.documents).map(x=>[esc(x.reference),esc(x.title),esc(x.type),esc(x.revision),pill(\"\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u0642\u0637\",\"amber\")]));\n $(\"#taskList\").innerHTML=table([\"\u0627\u0644\u0645\u0647\u0645\u0629\",\"\u0627\u0644\u0642\u0633\u0645\",\"\u0627\u0644\u062a\u0643\u0631\u0627\u0631\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.tasks).map(x=>[esc(x.title),esc(x.department),pill(x.frequency),esc(x.source||\"\u2014\"),pill(x.status,\"amber\")]));\n $(\"#outputList\").innerHTML=table([\"\u0627\u0644\u0645\u062e\u0631\u062c\",\"\u0627\u0644\u0642\u0633\u0645\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629\"],scoped(state.outputs).map(x=>[esc(x.title),esc(x.department),esc(x.source),pill(x.status,\"amber\")]));\n $(\"#issueList\").innerHTML=table([\"\u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0629\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u0642\u0633\u0645\",\"\u0627\u0644\u062e\u0637\u0648\u0631\u0629\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.issues).map(x=>[esc(x.title),esc(x.source||\"\u2014\"),esc(x.department),pill(x.severity,x.severity===\"HIGH\"?\"red\":\"amber\"),pill(x.status,\"amber\")]));\n $(\"#teamList\").innerHTML=table([\"\u0627\u0644\u0628\u0631\u064a\u062f\",\"\u0627\u0644\u062f\u0648\u0631\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.team).map(x=>[esc(x.email),esc(x.role),pill(\"\u062a\u062c\u0631\u064a\u0628\u064a\",\"amber\")]));\n $(\"#requestList\").innerHTML=table([\"\u0627\u0644\u0637\u0644\u0628\",\"\u0627\u0644\u062a\u0627\u0631\u064a\u062e\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.requests).map(x=>[esc(x.title),date(x.createdAt),pill(\"\u0645\u062d\u0644\u064a\",\"amber\")]));\n $(\"#supportList\").innerHTML=table([\"\u0627\u0644\u0628\u0644\u0627\u063a\",\"\u0627\u0644\u062a\u0627\u0631\u064a\u062e\",\"\u0627\u0644\u062d\u0627\u0644\u0629\"],scoped(state.support).map(x=>[esc(x.title),date(x.createdAt),pill(\"\u0644\u0645 \u064a\u064f\u0631\u0633\u0644\",\"red\")]));\n const p=project();\n $(\"#subscriptionDetails\").innerHTML=p?'<p><strong>\u0627\u0644\u0645\u0634\u0631\u0648\u0639:<\/strong> '+esc(p.name)+'<\/p><p><strong>\u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629:<\/strong> '+p.services.length+'<\/p><p><strong>\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639:<\/strong> '+(p.pm?\"\u0645\u0637\u0644\u0648\u0628\u0629\":\"\u063a\u064a\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\")+'<\/p><p><strong>\u0627\u0644\u062d\u0627\u0644\u0629:<\/strong> '+pill(\"\u0639\u0631\u0636 \u062a\u062c\u0631\u064a\u0628\u064a\",\"amber\")+'<\/p>':empty(\"\u0627\u062e\u062a\u0631 \u0645\u0634\u0631\u0648\u0639\u0627\u064b\");\n}\nfunction render(){renderPicker();renderDashboard();renderProjects();renderCatalog();renderLists()}\n$(\"#exportData\").onclick=()=>{\n const json=JSON.stringify(state,null,2);\n const blob=new Blob([json],{type:\"application\/json\"});\n const url=URL.createObjectURL(blob);\n const a=document.createElement(\"a\");a.href=url;a.download=\"mettatech-v14-demo.json\";a.click();\n setTimeout(()=>URL.revokeObjectURL(url),1000);\n};\n$(\"#resetData\").onclick=()=>{\n if(!confirm(\"\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0630\u0641 \u062c\u0645\u064a\u0639 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0645\u062a\u0635\u0641\u062d\u061f\"))return;\n state=initial();save();render();go(\"dashboard\");\n};\n$(\"#helpToggle\").onclick=()=>$(\"#helpBox\").classList.toggle(\"open\");\n$(\"#helpClose\").onclick=()=>$(\"#helpBox\").classList.remove(\"open\");\nfunction help(){\n const q=$(\"#helpQuestion\").value.toLowerCase();\n let a=\"\u064a\u0645\u0643\u0646\u0643 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0628\u0648\u0627\u0628\u0629 \u0644\u0644\u062a\u062c\u0631\u0628\u0629. \u0644\u0644\u0625\u0628\u0644\u0627\u063a \u0639\u0646 \u0645\u0634\u0643\u0644\u0629 \u0627\u0641\u062a\u062d \u0627\u0644\u062f\u0639\u0645 \u0627\u0644\u0641\u0646\u064a.\";\n if(\/\u0645\u0634\u0631\u0648\u0639|project\/.test(q))a=\"\u0627\u0641\u062a\u062d \u0625\u0646\u0634\u0627\u0621 \u0645\u0634\u0631\u0648\u0639\u060c \u0623\u062f\u062e\u0644 \u0628\u064a\u0627\u0646\u0627\u062a\u0647 \u0648\u0631\u0642\u0645\u0647 \u0627\u0644\u0645\u0631\u062c\u0639\u064a\u060c \u062b\u0645 \u0627\u062e\u062a\u0631 \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629.\";\n else if(\/\u0645\u0633\u062a\u0646\u062f|\u0645\u0644\u0641|\u0631\u0641\u0639|document\/.test(q))a=\"\u0627\u0641\u062a\u062d \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648\u0633\u062c\u0651\u0644 \u0631\u0642\u0645 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0648\u0646\u0648\u0639\u0647 \u0648\u0625\u0635\u062f\u0627\u0631\u0647. \u0627\u0644\u0631\u0641\u0639 \u0627\u0644\u0641\u0639\u0644\u064a \u063a\u064a\u0631 \u0645\u062a\u0627\u062d \u0641\u064a \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629.\";\n else if(\/\u0645\u062e\u0631\u062c|\u0627\u0639\u062a\u0645\u0627\u062f|\u062a\u062f\u0642\u064a\u0642\/.test(q))a=\"\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0647\u0646\u0627 \u062a\u062c\u0631\u064a\u0628\u064a\u0629. \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0647\u0646\u062f\u0633\u064a \u064a\u062d\u062a\u0627\u062c \u0646\u062a\u064a\u062c\u0629 \u0645\u0648\u062b\u0642\u0629 \u0645\u0646 \u0646\u0638\u0627\u0645 \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629 \u0627\u0644\u0645\u062a\u0635\u0644.\";\n else if(\/\u0633\u0639\u0631|\u0627\u0634\u062a\u0631\u0627\u0643|\u062f\u0641\u0639\/.test(q))a=\"\u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643 \u0627\u0644\u0645\u0642\u062a\u0631\u062d \u0634\u0647\u0631\u064a \u0644\u0643\u0644 \u0645\u0634\u0631\u0648\u0639 \u062d\u0633\u0628 \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629. \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0648\u0627\u0644\u062f\u0641\u0639 \u0644\u0645 \u064a\u064f\u0641\u0639\u0651\u0644\u0627 \u0628\u0639\u062f.\";\n else if(\/\u0643\u0645\u064a\u0629|boq|qs\/.test(q))a=\"QS5 \u0644\u0644\u062d\u0635\u0631 \u0627\u0644\u0645\u0633\u062a\u0642\u0644\u060c \u0648QS6 \u0644\u0645\u0642\u0627\u0631\u0646\u0629 \u0627\u0644\u062d\u0635\u0631 \u0645\u0639 BOQ. \u0643\u0644 \u0645\u0646\u0647\u0645\u0627 \u0645\u0647\u0645\u0629 \u0645\u0646\u0641\u0635\u0644\u0629.\";\n else if(\/\u0635\u0644\u0627\u062d\u064a\u0629|\u0641\u0631\u064a\u0642|\u0627\u064a\u0645\u064a\u0644\/.test(q))a=\"\u064a\u0645\u0643\u0646 \u062a\u0633\u062c\u064a\u0644 \u0623\u0639\u0636\u0627\u0621 \u0627\u0644\u0641\u0631\u064a\u0642 \u062a\u062c\u0631\u064a\u0628\u064a\u0627\u064b. \u0627\u0644\u062f\u0639\u0648\u0627\u062a \u0648\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0641\u0639\u0644\u064a\u0629 \u062a\u062a\u0637\u0644\u0628 \u0631\u0628\u0637 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0628\u0627\u0644\u062e\u0627\u062f\u0645.\";\n $(\"#helpAnswer\").textContent=a;\n}\n$(\"#helpAsk\").onclick=help;\n$(\"#helpQuestion\").addEventListener(\"keydown\",e=>{if(e.key===\"Enter\"){e.preventDefault();help()}});\nwizard();render();\nif(new URLSearchParams(window.location.search).get(\"hermes\")===\"clarifications\")go(\"clarifications\");\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u2014 \u0623\u0633\u0626\u0644\u0629 \u0645\u0634\u0631\u0648\u0639\u0643\u0647\u0630\u0627 \u0627\u0644\u0642\u0633\u0645 \u0645\u062e\u0635\u0635 \u0644\u0639\u0631\u0636 \u0623\u0633\u0626\u0644\u0629 Hermes \u0648\u0627\u0644\u0631\u062f \u0639\u0644\u064a\u0647\u0627 \u062f\u0627\u062e\u0644 \u0627\u0644\u0645\u0648\u0642\u0639\u060c \u0628\u0639\u062f \u062f\u062e\u0648\u0644 Google \u0648\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639.\u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0645\u0628\u0627\u0634\u0631\u0629 \u0625\u0644\u0649 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u0623\u0633\u0626\u0644\u0629\u0641\u062a\u062d \u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0628\u0635\u0641\u062d\u0629 \u0645\u0633\u062a\u0642\u0644\u0629 MettaTech Engineering Client Portal \u00b7 V14 \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0625\u0646\u0634\u0627\u0621 \u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u0645\u0647\u0627\u0645 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u064a\u0636\u0627\u062d\u0627\u062a \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643\u0627\u062a \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629 \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 \u0627\u0644\u062f\u0639\u0645 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"footnotes":""},"class_list":["post-193","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=193"}],"version-history":[{"count":5,"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/193\/revisions"}],"predecessor-version":[{"id":239,"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/193\/revisions\/239"}],"wp:attachment":[{"href":"https:\/\/mettatech-engineering.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}