vistas de ciudadano, escalar animaciones de mascota, implementacion de chatbot para concientizacion, modificacion de datos de ciudadano, modificacion de vista principal

This commit is contained in:
shinra32
2026-05-23 05:03:05 -06:00
parent 89dcc6250b
commit ca076607c7
39 changed files with 2909 additions and 560 deletions

View File

@@ -137,6 +137,29 @@ CREATE POLICY "feedback_insert" ON public.feedback
FOR INSERT WITH CHECK (auth.uid() = user_id);
-- ------------------------------------------------------------
-- 5b. Tabla public.incidents (reportes ciudadanos)
-- ------------------------------------------------------------
ALTER TABLE public.incidents ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "incidents_select" ON public.incidents;
CREATE POLICY "incidents_select" ON public.incidents
FOR SELECT USING (
auth.uid() = user_id
OR (SELECT role FROM public.users WHERE id = auth.uid()) = 'admin'
);
DROP POLICY IF EXISTS "incidents_insert" ON public.incidents;
CREATE POLICY "incidents_insert" ON public.incidents
FOR INSERT WITH CHECK (auth.uid() = user_id);
DROP POLICY IF EXISTS "incidents_update_admin" ON public.incidents;
CREATE POLICY "incidents_update_admin" ON public.incidents
FOR UPDATE USING (
(SELECT role FROM public.users WHERE id = auth.uid()) = 'admin'
);
-- ------------------------------------------------------------
-- 6. Índices útiles para rendimiento
-- ------------------------------------------------------------

View File

@@ -91,3 +91,22 @@ CREATE INDEX IF NOT EXISTS idx_route_positions_route ON public.route_positions(r
CREATE INDEX IF NOT EXISTS idx_colonias_route ON public.colonias(route_id);
CREATE INDEX IF NOT EXISTS idx_drivers_user ON public.drivers(user_id);
CREATE INDEX IF NOT EXISTS idx_collection_route ON public.collection_events(route_id);
-- ------------------------------------------------------------
-- 8. INCIDENTS (reportes de ciudadanos sobre unidades)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS public.incidents (
id BIGSERIAL PRIMARY KEY,
user_id UUID NOT NULL REFERENCES public.users(id) ON DELETE CASCADE,
unit_id INT REFERENCES public.units(id),
category TEXT NOT NULL
CHECK (category IN ('derrame','dano_propiedad','conducta','no_recoleccion','otro')),
description TEXT NOT NULL,
photo_url TEXT,
status TEXT NOT NULL DEFAULT 'open'
CHECK (status IN ('open','in_review','resolved')),
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_incidents_user ON public.incidents(user_id);
CREATE INDEX IF NOT EXISTS idx_incidents_unit ON public.incidents(unit_id);