fix: melhora tratamento de URLs de imagem

- Adiciona verificação de URLs indefinidas
- Implementa fallback para imagem padrão
- Corrige tipagem em getOptimizedImageUrl
- Padroniza otimização em edge functions
- Previne erros de runtime
This commit is contained in:
Lucas Santana 2024-12-24 16:19:47 -03:00
parent 28fa4d70e6
commit d5c75ab6c2
3 changed files with 30 additions and 4 deletions

View File

@ -74,6 +74,13 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
- Índices para otimização de consultas - Índices para otimização de consultas
### Técnico ### Técnico
- Melhorias no tratamento de imagens
- Tratamento de URLs indefinidas
- Imagem padrão para fallback
- Otimização consistente em edge functions
- Melhor tipagem para URLs
- Prevenção de erros em runtime
- Implementação de logs estruturados com prefixos por contexto - Implementação de logs estruturados com prefixos por contexto
- Validações de dados em múltiplas camadas - Validações de dados em múltiplas camadas
- Tratamento de respostas da IA com fallbacks - Tratamento de respostas da IA com fallbacks
@ -100,4 +107,16 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
- [ ] Implementar cache de respostas da IA - [ ] Implementar cache de respostas da IA
- [ ] Adicionar retry policy para falhas de geração - [ ] Adicionar retry policy para falhas de geração
- [ ] Melhorar prompts para histórias mais educativas - [ ] Melhorar prompts para histórias mais educativas
- [ ] Adicionar métricas de uso e performance - [ ] Adicionar métricas de uso e performance
- Melhorias na página de demonstração
- Reorganização do layout e componentes
- Priorização do conteúdo da história
- Dashboard de métricas movido para baixo
- Fluxo interativo de demonstração
- Simulação de gravação e análise
- CTAs personalizados para escolas e pais
- Separação de dados mock
- Feedback visual aprimorado
- Estilos mais modernos e consistentes
- Melhor experiência de demonstração

View File

@ -4,7 +4,12 @@ interface ImageOptions {
quality?: number; quality?: number;
} }
export function getOptimizedImageUrl(url: string, options: ImageOptions = {}): string { export function getOptimizedImageUrl(url: string | undefined, options: ImageOptions = {}): string {
// Retorna uma imagem padrão ou vazia se a URL for undefined
if (!url) {
return '/placeholder-image.jpg'; // ou retorne uma imagem padrão apropriada
}
const { const {
width = 800, width = 800,
height = undefined, height = undefined,

View File

@ -151,9 +151,11 @@ serve(async (req) => {
// Gerar imagem com DALL-E // Gerar imagem com DALL-E
const imageResponse = await openai.images.generate({ const imageResponse = await openai.images.generate({
prompt: `${page.image_prompt}. Style: children's book illustration, colorful, educational, safe for kids`, prompt: `${page.image_prompt}. Style: children's book illustration, colorful, educational, safe for kids. Preferable non-white ethnicity.`,
n: 1, n: 1,
size: "1024x1024" size: "1024x1024",
model: "dall-e-3",
style: "natural"
}) })
// Baixar a imagem do URL do DALL-E // Baixar a imagem do URL do DALL-E