diff --git a/src/integrations/supabase/types.ts b/src/integrations/supabase/types.ts index 40b9010..55b5d5c 100644 --- a/src/integrations/supabase/types.ts +++ b/src/integrations/supabase/types.ts @@ -7,6 +7,11 @@ export type Json = | Json[] export type Database = { + // Allows to automatically instantiate createClient with right options + // instead of createClient(URL, KEY) + __InternalSupabase: { + PostgrestVersion: "12.2.3 (519615d)" + } public: { Tables: { "1001_amore_conselheira": { @@ -561,6 +566,195 @@ export type Database = { } Relationships: [] } + n8n_chat_dolceamore: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_dolceamoree: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_histories: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_histories_primeade: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_primevl: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_qnn01: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_recanto: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_chat_samambaia: { + Row: { + id: number + message: Json + session_id: string + } + Insert: { + id?: number + message: Json + session_id: string + } + Update: { + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } + n8n_fila_mensagens: { + Row: { + id: number + id_mensagem: string + mensagem: string + telefone: string + timestamp: string + } + Insert: { + id?: number + id_mensagem: string + mensagem: string + telefone: string + timestamp: string + } + Update: { + id?: number + id_mensagem?: string + mensagem?: string + telefone?: string + timestamp?: string + } + Relationships: [] + } + n8n_historico_mensagens: { + Row: { + created_at: string + id: number + message: Json + session_id: string + } + Insert: { + created_at?: string + id?: number + message: Json + session_id: string + } + Update: { + created_at?: string + id?: number + message?: Json + session_id?: string + } + Relationships: [] + } pagamentos_mercadopago: { Row: { created_at: string @@ -647,6 +841,24 @@ export type Database = { }, ] } + profiles: { + Row: { + document_number: string | null + full_name: string | null + id: string + } + Insert: { + document_number?: string | null + full_name?: string | null + id: string + } + Update: { + document_number?: string | null + full_name?: string | null + id?: string + } + Relationships: [] + } status_pagamento_mensal: { Row: { ano: number @@ -792,10 +1004,10 @@ export type Database = { Returns: unknown } conselheiraamore: { - Args: { query_embedding: string; match_count?: number; filter?: Json } + Args: { filter?: Json; match_count?: number; query_embedding: string } Returns: { - id: number content: string + id: number metadata: Json similarity: number }[] @@ -854,11 +1066,11 @@ export type Database = { } registrar_usuario: { Args: - | { nome: string; empresa: string; email: string; senha: string } + | { email: string; empresa: string; nome: string; senha: string } | { - nome: string - empresa: string email: string + empresa: string + nome: string senha: string whatsapp: string } @@ -910,21 +1122,25 @@ export type Database = { } } -type DefaultSchema = Database[Extract] +type DatabaseWithoutInternals = Omit + +type DefaultSchema = DatabaseWithoutInternals[Extract] export type Tables< DefaultSchemaTableNameOrOptions extends | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & - Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) + ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & - Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { Row: infer R } ? R @@ -942,14 +1158,16 @@ export type Tables< export type TablesInsert< DefaultSchemaTableNameOrOptions extends | keyof DefaultSchema["Tables"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Insert: infer I } ? I @@ -965,14 +1183,16 @@ export type TablesInsert< export type TablesUpdate< DefaultSchemaTableNameOrOptions extends | keyof DefaultSchema["Tables"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Update: infer U } ? U @@ -988,14 +1208,16 @@ export type TablesUpdate< export type Enums< DefaultSchemaEnumNameOrOptions extends | keyof DefaultSchema["Enums"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, EnumName extends DefaultSchemaEnumNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] + ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] : never = never, -> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] +> = DefaultSchemaEnumNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions] : never @@ -1003,14 +1225,16 @@ export type Enums< export type CompositeTypes< PublicCompositeTypeNameOrOptions extends | keyof DefaultSchema["CompositeTypes"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, CompositeTypeName extends PublicCompositeTypeNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] + ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] : never = never, -> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database } - ? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] +> = PublicCompositeTypeNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"] ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions] : never diff --git a/src/pages/CompleteProfile.tsx b/src/pages/CompleteProfile.tsx index 4d7f851..2c24292 100644 --- a/src/pages/CompleteProfile.tsx +++ b/src/pages/CompleteProfile.tsx @@ -131,70 +131,87 @@ const CompleteProfile = () => { }; return ( -
- - - Complete seu Perfil - - Para continuar, precisamos de algumas informações obrigatórias para configurar sua conta - - - -
-
- - setNome(e.target.value)} - required - disabled={isLoading} - /> -
+
+
+ + + + Complete seu Perfil + + + Para continuar, precisamos de algumas informações obrigatórias para configurar sua conta + + + + +
+ + setNome(e.target.value)} + required + disabled={isLoading} + className="glass-input border-white/20 bg-white/50 backdrop-blur-sm focus:border-primary/50 focus:ring-primary/20" + /> +
-
- - setEmpresa(e.target.value)} - disabled={isLoading} - /> -
+
+ + setEmpresa(e.target.value)} + disabled={isLoading} + className="glass-input border-white/20 bg-white/50 backdrop-blur-sm focus:border-primary/50 focus:ring-primary/20" + /> +
-
- - handleWhatsappChange(e.target.value)} - required +
+ + handleWhatsappChange(e.target.value)} + required + disabled={isLoading} + className="glass-input border-white/20 bg-white/50 backdrop-blur-sm focus:border-primary/50 focus:ring-primary/20" + /> +

+ Necessário para integração com WhatsApp e notificações +

+
+ + + + +
+

+ Por que estes dados?
+ Nome e WhatsApp são necessários para configurar automaticamente seu workspace e integrações personalizadas.

- - - - -
-

- Por que estes dados?
- Nome e WhatsApp são necessários para configurar automaticamente seu workspace e integrações personalizadas. -

-
- - + + +
); }; diff --git a/supabase/migrations/20250902203953_b1df186f-cebb-426e-a2b0-ba3c4695c175.sql b/supabase/migrations/20250902203953_b1df186f-cebb-426e-a2b0-ba3c4695c175.sql new file mode 100644 index 0000000..f01dc86 --- /dev/null +++ b/supabase/migrations/20250902203953_b1df186f-cebb-426e-a2b0-ba3c4695c175.sql @@ -0,0 +1,41 @@ +-- Criar trigger para automaticamente criar usuário na tabela usuarios quando se cadastra manualmente +CREATE OR REPLACE FUNCTION public.handle_manual_user_signup() +RETURNS trigger +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path = public +AS $$ +BEGIN + -- Verificar se o usuário tem dados completos no raw_user_meta_data (cadastro manual) + IF NEW.raw_user_meta_data IS NOT NULL AND + NEW.raw_user_meta_data->>'nome' IS NOT NULL AND + NEW.raw_user_meta_data->>'whatsapp' IS NOT NULL AND + NEW.email IS NOT NULL THEN + + -- Inserir na tabela usuarios + INSERT INTO public.usuarios (id, email, nome, empresa, whatsapp) + VALUES ( + NEW.id, + NEW.email, + NEW.raw_user_meta_data->>'nome', + COALESCE(NEW.raw_user_meta_data->>'empresa', ''), + NEW.raw_user_meta_data->>'whatsapp' + ) + ON CONFLICT (id) DO UPDATE SET + nome = EXCLUDED.nome, + empresa = EXCLUDED.empresa, + whatsapp = EXCLUDED.whatsapp, + email = EXCLUDED.email; + + RETURN NEW; + END IF; + + RETURN NEW; +END; +$$; + +-- Criar trigger que será executado quando um usuário é inserido na tabela auth.users +DROP TRIGGER IF EXISTS on_auth_user_created_manual ON auth.users; +CREATE TRIGGER on_auth_user_created_manual + AFTER INSERT ON auth.users + FOR EACH ROW EXECUTE FUNCTION public.handle_manual_user_signup(); \ No newline at end of file