-- WARNING: This schema is for context only and is not meant to be run. -- Table order and constraints may not be valid for execution. CREATE TABLE public.api_logs ( id uuid NOT NULL DEFAULT gen_random_uuid(), endpoint character varying NOT NULL, method character varying NOT NULL, user_id uuid, status_code integer, response_time double precision, error_message text, created_at timestamp with time zone DEFAULT now(), CONSTRAINT api_logs_pkey PRIMARY KEY (id), CONSTRAINT api_logs_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ); CREATE TABLE public.document_chunks ( id uuid NOT NULL DEFAULT gen_random_uuid(), document_id uuid NOT NULL, chunk_index integer NOT NULL, content text NOT NULL, page_number integer, section_title character varying, char_count integer, word_count integer, created_at timestamp with time zone DEFAULT now(), CONSTRAINT document_chunks_pkey PRIMARY KEY (id), CONSTRAINT document_chunks_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id) ); CREATE TABLE public.documents ( id uuid NOT NULL DEFAULT gen_random_uuid(), user_id uuid NOT NULL, filename character varying NOT NULL, original_filename character varying NOT NULL, file_path character varying NOT NULL, file_size integer, mime_type character varying DEFAULT 'application/pdf'::character varying, page_count integer, language character varying DEFAULT 'fr'::character varying, document_type character varying, raw_text text, processed_at timestamp with time zone, processing_status character varying DEFAULT 'pending'::character varying, processing_error text, tags jsonb DEFAULT '[]'::jsonb, is_favorite boolean DEFAULT false, is_archived boolean DEFAULT false, uploaded_at timestamp with time zone DEFAULT now(), updated_at timestamp with time zone DEFAULT now(), contenu text, CONSTRAINT documents_pkey PRIMARY KEY (id), CONSTRAINT documents_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ); CREATE TABLE public.embeddings ( id uuid NOT NULL DEFAULT gen_random_uuid(), document_id uuid NOT NULL, chunk_id uuid NOT NULL UNIQUE, vector jsonb NOT NULL, vector_dimension integer DEFAULT 384, model_name character varying DEFAULT 'all-MiniLM-L6-v2'::character varying, model_version character varying, created_at timestamp with time zone DEFAULT now(), CONSTRAINT embeddings_pkey PRIMARY KEY (id), CONSTRAINT embeddings_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id), CONSTRAINT embeddings_chunk_id_fkey FOREIGN KEY (chunk_id) REFERENCES public.document_chunks(id) ); CREATE TABLE public.faiss_indexes ( id uuid NOT NULL DEFAULT gen_random_uuid(), index_name character varying NOT NULL UNIQUE, index_path character varying NOT NULL, index_type character varying DEFAULT 'IndexFlatIP'::character varying, dimension integer NOT NULL, total_vectors integer DEFAULT 0, model_name character varying, last_updated timestamp with time zone DEFAULT now(), update_count integer DEFAULT 0, is_active boolean DEFAULT true, is_corrupted boolean DEFAULT false, created_at timestamp with time zone DEFAULT now(), CONSTRAINT faiss_indexes_pkey PRIMARY KEY (id) ); CREATE TABLE public.query_history ( id uuid NOT NULL DEFAULT gen_random_uuid(), user_id uuid NOT NULL, document_id uuid, query text NOT NULL, response text NOT NULL, retrieved_chunks jsonb, similarity_scores jsonb, context_used text, response_time double precision, faithfulness_score double precision, relevance_score double precision, model_name character varying, model_version character varying, user_rating integer CHECK (user_rating >= 1 AND user_rating <= 5), user_feedback text, is_helpful boolean, created_at timestamp with time zone DEFAULT now(), CONSTRAINT query_history_pkey PRIMARY KEY (id), CONSTRAINT query_history_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id), CONSTRAINT query_history_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id) ); CREATE TABLE public.search_history ( id uuid NOT NULL DEFAULT gen_random_uuid(), user_id uuid NOT NULL, search_query text NOT NULL, search_type character varying, results_count integer, results_ids jsonb, top_score double precision, filters_applied jsonb, response_time double precision, created_at timestamp with time zone DEFAULT now(), CONSTRAINT search_history_pkey PRIMARY KEY (id), CONSTRAINT search_history_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ); CREATE TABLE public.summaries ( id uuid NOT NULL DEFAULT gen_random_uuid(), document_id uuid NOT NULL, summary_type character varying NOT NULL, summary_level character varying DEFAULT 'medium'::character varying, content text NOT NULL, content_json jsonb, rouge_1_score double precision, rouge_2_score double precision, rouge_l_score double precision, compression_ratio double precision, model_name character varying, model_version character varying, user_rating integer CHECK (user_rating >= 1 AND user_rating <= 5), user_feedback text, generated_at timestamp with time zone DEFAULT now(), updated_at timestamp with time zone, CONSTRAINT summaries_pkey PRIMARY KEY (id), CONSTRAINT summaries_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id) ); CREATE TABLE public.system_metrics ( id uuid NOT NULL DEFAULT gen_random_uuid(), metric_type character varying NOT NULL, metric_name character varying NOT NULL, value double precision NOT NULL, unit character varying, context jsonb, recorded_at timestamp with time zone DEFAULT now(), CONSTRAINT system_metrics_pkey PRIMARY KEY (id) ); CREATE TABLE public.translations ( id uuid NOT NULL DEFAULT gen_random_uuid(), document_id uuid NOT NULL, source_text text NOT NULL, translated_text text NOT NULL, source_language character varying NOT NULL, target_language character varying NOT NULL, page_number integer, chunk_id uuid, model_name character varying, translation_engine character varying, bleu_score double precision, confidence_score double precision, created_at timestamp with time zone DEFAULT now(), CONSTRAINT translations_pkey PRIMARY KEY (id), CONSTRAINT translations_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id), CONSTRAINT translations_chunk_id_fkey FOREIGN KEY (chunk_id) REFERENCES public.document_chunks(id) ); CREATE TABLE public.user_analytics ( id uuid NOT NULL DEFAULT gen_random_uuid(), user_id uuid NOT NULL UNIQUE, total_documents integer DEFAULT 0, total_queries integer DEFAULT 0, total_summaries integer DEFAULT 0, total_translations integer DEFAULT 0, total_searches integer DEFAULT 0, avg_summary_rating double precision, avg_query_rating double precision, total_feedback_count integer DEFAULT 0, favorite_document_type character varying, most_used_language character varying, preferred_summary_type character varying, last_active timestamp with time zone, created_at timestamp with time zone DEFAULT now(), updated_at timestamp with time zone DEFAULT now(), CONSTRAINT user_analytics_pkey PRIMARY KEY (id), CONSTRAINT user_analytics_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ); CREATE TABLE public.users ( id uuid NOT NULL DEFAULT gen_random_uuid(), email character varying NOT NULL UNIQUE, username character varying NOT NULL UNIQUE, password_hash character varying NOT NULL, created_at timestamp with time zone DEFAULT now(), last_login timestamp with time zone, is_active boolean DEFAULT true, preferences jsonb DEFAULT '{}'::jsonb, CONSTRAINT users_pkey PRIMARY KEY (id) );