-- Vinpin ePER decode-oracle cache (feature-flagged: VINPIN_ENABLED). -- One row per VIN. The vinpin-decode BullMQ job drives the Vinpin ePER web -- catalog for Fiat VINs the normal chain (PL24/pcat/emex) can't identify, then -- matches the decoded model to an EXISTING PL24 catalog_vehicle. Vinpin is ONLY -- a decode oracle — parts are always served from PL24's existing catalog. -- status: 'pending' | 'decoded' | 'not_found' | 'failed'. CREATE TABLE IF NOT EXISTS "vinpin_decodes" ( "vin" text PRIMARY KEY NOT NULL, "status" text DEFAULT 'pending' NOT NULL, "brand_name" text, "model" text, "sincom" text, "trim" text, "model_year" text, "engine" text, "catalog_vehicle_id" uuid, "raw" jsonb, "attempts" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone, "decoded_at" timestamp with time zone ); --> statement-breakpoint DO $$ BEGIN ALTER TABLE "vinpin_decodes" ADD CONSTRAINT "vinpin_decodes_catalog_vehicle_id_catalog_vehicles_id_fk" FOREIGN KEY ("catalog_vehicle_id") REFERENCES "public"."catalog_vehicles"("id") ON DELETE set null ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint CREATE INDEX IF NOT EXISTS "vinpin_decodes_status_idx" ON "vinpin_decodes" USING btree ("status");