sass-imobiliaria/specs/033-video-apresentacao-imovel/quickstart.md
MatheusAlves96 e1a1f71fbd
Some checks failed
CI/CD → Deploy via SSH / Build & Push Docker Images (push) Successful in 1m6s
CI/CD → Deploy via SSH / Deploy via SSH (push) Successful in 4m18s
CI/CD → Deploy via SSH / Validate HTTPS & Endpoints (push) Has been cancelled
chore: seed sample video data, add spec 033 and update instructions
2026-04-22 23:57:50 -03:00

3 KiB

Quickstart: Vídeo de Apresentação do Imóvel (033)

Gerado por: /speckit.plan
Data: 2026-04-22


Setup do Ambiente

# Backend
cd backend
uv sync
alembic upgrade head   # aplica k3l4m5n6o7p8_add_video_to_properties

# Frontend
cd frontend
npm install            # sem novas dependências nesta feature

Rodando Localmente

# Do root do projeto
docker compose up      # ou: start.ps1

Testando o Fluxo Completo

1. Configurar vídeo via admin

# Autenticar e obter token
TOKEN=$(curl -s -X POST http://localhost:5000/api/admin/login \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@example.com","password":"senha"}' | jq -r .access_token)

# Atualizar imóvel com vídeo
curl -X PUT http://localhost:5000/api/admin/properties/<UUID> \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"video_url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","video_position":"section"}'

2. Verificar retorno da API pública

curl http://localhost:5000/api/properties/<SLUG> | jq '.video_url, .video_position'
# Esperado: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" e "section"

3. Verificar exibição na página

Abrir http://localhost:5173/imoveis/<SLUG> e confirmar:

  • Seção "Vídeo de Apresentação" visível abaixo do carrossel
  • Player do YouTube incorporado
  • Sem erros no console

4. Testar posição carrossel

curl -X PUT http://localhost:5000/api/admin/properties/<UUID> \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"video_position":"carousel"}'

Recarregar a página: vídeo deve aparecer como primeiro slide no carrossel.

5. Remover vídeo

curl -X PUT http://localhost:5000/api/admin/properties/<UUID> \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"video_url":""}'

Confirmar que video_url retorna null na API pública e a seção de vídeo desaparece.


Rodando os Testes

cd backend
pytest tests/ -v -k "video"        # testes específicos da feature (quando criados)
pytest tests/ -v                    # suite completa

Arquivos Criados/Modificados

Arquivo Ação
backend/migrations/versions/k3l4m5n6o7p8_add_video_to_properties.py NOVO
backend/app/models/property.py MODIFICADO — 2 campos novos
backend/app/schemas/property.py MODIFICADO — PropertyDetailOut
backend/app/routes/admin.py MODIFICADO — PropertyAdminOut, _SCALAR_FIELDS, sanitização
frontend/src/utils/getEmbedUrl.ts NOVO
frontend/src/components/PropertyDetail/VideoPlayer.tsx NOVO
frontend/src/components/PropertyDetail/PhotoCarousel.tsx MODIFICADO — prop videoUrl
frontend/src/pages/PropertyDetailPage.tsx MODIFICADO — renderização condicional
frontend/src/pages/admin/PropertyForm.tsx MODIFICADO — campo URL + select posição + preview
frontend/src/types/property.ts MODIFICADO — PropertyDetail