File size: 2,766 Bytes
9d76a6e 9fbdad1 9d76a6e 9fbdad1 9d76a6e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
import os
import logging
import aiohttp
from fastapi import APIRouter, HTTPException
from typing import List, Dict, Any
router = APIRouter()
# Supabase configs
SUPABASE_URL = "https://ussxqnifefkgkaumjann.supabase.co"
SUPABASE_KEY = os.getenv("SUPA_KEY")
SUPABASE_ROLE_KEY = os.getenv("SUPA_SERVICE_KEY")
if not SUPABASE_KEY or not SUPABASE_ROLE_KEY:
raise ValueError("❌ SUPA_KEY ou SUPA_SERVICE_KEY não foram definidos no ambiente!")
SUPABASE_HEADERS = {
"apikey": SUPABASE_KEY,
"Authorization": f"Bearer {SUPABASE_KEY}",
"Content-Type": "application/json"
}
SUPABASE_ROLE_HEADERS = {
"apikey": SUPABASE_ROLE_KEY,
"Authorization": f"Bearer {SUPABASE_ROLE_KEY}",
"Content-Type": "application/json"
}
# Logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
@router.get("/onboarding/questions")
async def get_onboarding_questions() -> Dict[str, List[Dict[str, Any]]]:
"""
Retorna todas as perguntas de onboarding, separadas por target_type (client e stylist).
"""
try:
query_url = f"{SUPABASE_URL}/rest/v1/Onboarding?select=id,title,description,question_type,options,target_type,optional,lock"
headers = SUPABASE_HEADERS.copy()
headers["Accept"] = "application/json"
async with aiohttp.ClientSession() as session:
async with session.get(query_url, headers=headers) as response:
if response.status != 200:
logger.error(f"❌ Erro ao buscar onboarding: {response.status}")
raise HTTPException(status_code=response.status, detail="Erro ao buscar onboarding")
data = await response.json()
# Organizar perguntas por tipo de usuário
client_questions = []
stylist_questions = []
for question in data:
formatted = {
"id": question["id"],
"title": question["title"],
"description": question.get("description"),
"question_type": question["question_type"],
"options": question.get("options", []),
"optional": question.get("optional", False),
"lock": question.get("lock", False)
}
if question["target_type"] == "client":
client_questions.append(formatted)
elif question["target_type"] == "stylist":
stylist_questions.append(formatted)
return {
"client_questions": client_questions,
"stylist_questions": stylist_questions
}
except Exception as e:
logger.error(f"❌ Erro ao obter perguntas de onboarding: {str(e)}")
raise HTTPException(status_code=500, detail="Erro interno do servidor") |