/** * Posthog event tracking utility. * Wywoływany z kluczowych akcji użytkownika. * Safe no-op when VITE_POSTHOG_KEY is unset (posthog.init never called). */ import posthog from 'posthog-js'; function ph() { try { // After init, posthog.__loaded is true; without DSN/key, capture is a no-op return posthog; } catch { return null; } } export const analytics = { /** Identyfikuj użytkownika po zalogowaniu */ identify(userId: string, props?: Record) { ph()?.identify(userId, props); }, /** Użytkownik kliknął "Nowy Projekt" */ projectCreated(projectId: string, name: string) { ph()?.capture('project_created', { project_id: projectId, project_name: name }); }, /** Sekcja wygenerowana przez AI */ sectionGenerated(projectId: string, sectionKey: string, tierUsed: string) { ph()?.capture('section_generated', { project_id: projectId, section_key: sectionKey, tier: tierUsed }); }, /** Upload dokumentu PDF */ documentUploaded(projectId: string, fileName: string) { ph()?.capture('document_uploaded', { project_id: projectId, file_name: fileName }); }, /** Klik "Kup Pro" — przed redirect do Stripe */ checkoutStarted(plan: string) { ph()?.capture('checkout_started', { plan }); }, /** Powrót z Stripe — sukces */ checkoutCompleted(plan: string) { ph()?.capture('checkout_completed', { plan }); }, /** Audyt wniosku */ auditRun(projectId: string, score: number) { ph()?.capture('audit_run', { project_id: projectId, compliance_score: score }); }, /** Export DOCX */ exportDocx(projectId: string) { ph()?.capture('export_docx', { project_id: projectId }); }, };