SMART AUDIT · ProponAi
SMART AUDIT / PAI–01
PROPONAISMART AUDIT
Sessió local protegida
00 SMART AUDIT / START
Motor d'intel·ligència empresarial

Descobreix on la IA
crea valor real.

Una auditoria guiada que connecta processos, dades, persones i retorn per convertir problemes operatius en un pla d'implantació mesurable.

SMART AUDIT EN ESPERA
ENTREVISTA ADAPTATIVA

Comencem pel context

ENTREGABLE EXECUTIU

El teu mapa d'adopció d'IA es construeix en temps real.

`; } function responseFor(questionId) { return state.responses.find(r => r.questionId === questionId)?.answer || ""; } function evidenceIds() { return state.attachments.map(item => item.id); } function escapeHtml(value = "") { return String(value).replace(/[&<>'"]/g, char => ({ "&": "&", "<": "<", ">": ">", "'": "'", '"': """ }[char])); } function toast(message) { const element = $("#toast"); element.textContent = message; element.classList.add("visible"); clearTimeout(toast.timer); toast.timer = setTimeout(() => element.classList.remove("visible"), 2800); } function initNetwork() { resizeNetwork(); cancelAnimationFrame(networkFrame); drawNetwork(); } function resizeNetwork() { const canvas = $("#networkCanvas"); const rect = canvas.getBoundingClientRect(); const dpr = Math.min(window.devicePixelRatio || 1, 2); canvas.width = rect.width * dpr; canvas.height = rect.height * dpr; } function drawNetwork(time = 0) { const canvas = $("#networkCanvas"); const rect = canvas.getBoundingClientRect(); const dpr = Math.min(window.devicePixelRatio || 1, 2); const ctx = canvas.getContext("2d"); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); ctx.clearRect(0, 0, rect.width, rect.height); const center = { x: rect.width / 2, y: rect.height / 2 }; const nodes = $$(".agent-node").map(node => ({ x: parseFloat(node.style.left) / 100 * rect.width, y: parseFloat(node.style.top) / 100 * rect.height, active: node.classList.contains("active"), done: node.classList.contains("done") })); nodes.forEach((node, index) => { ctx.beginPath(); ctx.moveTo(center.x, center.y); const bend = index % 2 ? 16 : -16; ctx.quadraticCurveTo((center.x + node.x) / 2 + bend, (center.y + node.y) / 2 - bend, node.x, node.y); ctx.strokeStyle = node.active ? "rgba(255,59,48,.58)" : node.done ? "rgba(255,59,48,.2)" : "rgba(241,240,235,.09)"; ctx.lineWidth = node.active ? 1.2 : .8; ctx.stroke(); if (node.active && state.started) { const progress = ((time / 1400) % 1); const x = center.x + (node.x - center.x) * progress; const y = center.y + (node.y - center.y) * progress; ctx.beginPath(); ctx.arc(x, y, 2.2, 0, Math.PI * 2); ctx.fillStyle = "#ff3b30"; ctx.shadowColor = "#ff3b30"; ctx.shadowBlur = 12; ctx.fill(); ctx.shadowBlur = 0; } }); networkFrame = requestAnimationFrame(drawNetwork); } init(); })();