Spaces:
Running
Running
| /** | |
| * 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<string, unknown>) { | |
| 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 }); | |
| }, | |
| }; | |