Spaces:
Running
Running
| /** | |
| * Posthog event tracking utility. | |
| * Wywoływany z kluczowych akcji użytkownika. | |
| */ | |
| /* eslint-disable @typescript-eslint/no-explicit-any */ | |
| declare const posthog: any; | |
| function ph(): any | null { | |
| return typeof posthog !== 'undefined' ? posthog : 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 }); | |
| }, | |
| }; | |