diff --git a/frontend/src/services/analyticsService.ts b/frontend/src/services/analyticsService.ts index 9e1b4f0..a1f5347 100644 --- a/frontend/src/services/analyticsService.ts +++ b/frontend/src/services/analyticsService.ts @@ -19,8 +19,8 @@ export const analyticsService = { const payload = { event_name: event.event_name, - entity_type: event.entity_type, - entity_id: event.entity_id, + entity_type: event.entity_type || 'system', + entity_id: event.entity_id || 'none', entity_name: event.entity_name, properties: event.properties || {}, user_id: userData?.user ? userData.user.id : null diff --git a/supabase_schema.sql b/supabase_schema.sql index 6f96b69..c3461b7 100644 --- a/supabase_schema.sql +++ b/supabase_schema.sql @@ -297,3 +297,20 @@ CREATE POLICY "Users can manage own favorites" ON public.favorites FOR ALL USING CREATE POLICY "Users can view own coupons" ON public.user_coupons FOR SELECT USING (auth.uid() = user_id); CREATE POLICY "Users can manage own coupons" ON public.user_coupons FOR ALL USING (auth.uid() = user_id); + +-- 13. Analytics Events +CREATE TABLE IF NOT EXISTS public.analytics_events ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + event_name TEXT NOT NULL, + entity_type TEXT NOT NULL, + entity_id TEXT NOT NULL, + entity_name TEXT, + user_id UUID REFERENCES public.users(id) ON DELETE SET NULL, + properties JSONB DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- Analytics events RLS +ALTER TABLE public.analytics_events ENABLE ROW LEVEL SECURITY; +CREATE POLICY "Public can insert analytics events" ON public.analytics_events FOR INSERT WITH CHECK (true); +CREATE POLICY "Admins can view all analytics events" ON public.analytics_events FOR SELECT USING (is_admin());