Skip to content

fix: aplica transformação de URL no campo 'url' principal#90

Merged
diraol merged 1 commit into
mainfrom
dro/fix_url
Jan 13, 2026
Merged

fix: aplica transformação de URL no campo 'url' principal#90
diraol merged 1 commit into
mainfrom
dro/fix_url

Conversation

@diraol

@diraol diraol commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

🐛 Problema Identificado

A feature flag REPLACE_FILE_URL_BASE não estava funcionando em produção. Os resultados da API ainda retornavam URLs completas com o domínio antigo, mesmo com a flag habilitada.

Causa Raiz

No commit #86, a função _build_file_url() foi implementada mas só estava sendo aplicada ao campo txt_url. O campo principal url continuava sendo retornado diretamente do banco de dados sem transformação.

✅ Correções Implementadas

Arquivos modificados:

  • gazettes/gazette_access.py: Aplica _build_file_url() ao campo url
  • themed_excerpts/themed_excerpt_access.py: Aplica _build_file_url() ao campo source_url

Comportamento após a correção:

Quando configurado com:

REPLACE_FILE_URL_BASE=true
QUERIDO_DIARIO_FILES_ENDPOINT=https://cdn.queridodiario.ok.org.br

Ambos os campos url e txt_url serão transformados:

❌ Antes: "url": "https://queridodiario.nyc3.digitaloceanspaces.com/3304557/2019/file.pdf"
✅ Depois: "url": "https://cdn.queridodiario.ok.org.br/3304557/2019/file.pdf"

🧪 Testes Adicionados

Foram criados 21 novos testes para evitar regressão:

tests/test_gazette_file_url_builder.py (13 testes)

  • ✅ Caminhos relativos (dados novos)
  • ✅ URLs completas com substituição de base (migração)
  • ✅ URLs completas sem alteração (modo legado)
  • ✅ Protocolos diversos (http://, https://, s3://)
  • ✅ Edge cases (trailing slashes, case insensitive)
  • ✅ Integração com _assemble_gazette_object

tests/test_themed_excerpt_file_url_builder.py (8 testes)

  • ✅ Mesma cobertura para themed excerpts
  • ✅ Garante ambos os campos são transformados

🔍 Validação

Ran 67 tests in 0.317s

OK (expected failures=1)

✅ Todos os 46 testes existentes + 21 novos testes passando

📝 Checklist

  • Código corrigido em ambos os módulos (gazettes e themed_excerpts)
  • Testes unitários abrangentes adicionados
  • Todos os testes passando
  • Backward compatibility mantida (modo legado funciona)
  • Documentação inline nos testes

🚀 Deploy

Após o merge e deploy, a API retornará URLs com o CDN configurado em QUERIDO_DIARIO_FILES_ENDPOINT quando REPLACE_FILE_URL_BASE=true.

O campo 'url' não estava sendo processado pela função _build_file_url(),
resultando em URLs completas mesmo com a feature flag REPLACE_FILE_URL_BASE
ativada. Apenas o campo 'txt_url' estava sendo transformado corretamente.

Alterações:
- gazettes/gazette_access.py: aplica _build_file_url() ao campo 'url'
- themed_excerpts/themed_excerpt_access.py: aplica _build_file_url() ao campo 'source_url'

Testes adicionados:
- tests/test_gazette_file_url_builder.py: 13 testes para validar transformação de URLs em gazettes
- tests/test_themed_excerpt_file_url_builder.py: 8 testes para validar transformação de URLs em themed excerpts

Os testes cobrem todos os cenários:
1. Caminhos relativos (dados novos)
2. URLs completas com substituição de base (migração)
3. URLs completas sem alteração (modo legado)
4. Edge cases (trailing slashes, protocolos diferentes, etc)

Closes #XX
@diraol diraol merged commit e70d140 into main Jan 13, 2026
2 checks passed
@diraol diraol deleted the dro/fix_url branch January 13, 2026 15:20
diraol added a commit that referenced this pull request Jan 13, 2026
O campo 'url' não estava sendo processado pela função _build_file_url(),
resultando em URLs completas mesmo com a feature flag REPLACE_FILE_URL_BASE
ativada. Apenas o campo 'txt_url' estava sendo transformado corretamente.

Alterações:
- gazettes/gazette_access.py: aplica _build_file_url() ao campo 'url'
- themed_excerpts/themed_excerpt_access.py: aplica _build_file_url() ao campo 'source_url'

Testes adicionados:
- tests/test_gazette_file_url_builder.py: 13 testes para validar transformação de URLs em gazettes
- tests/test_themed_excerpt_file_url_builder.py: 8 testes para validar transformação de URLs em themed excerpts

Os testes cobrem todos os cenários:
1. Caminhos relativos (dados novos)
2. URLs completas com substituição de base (migração)
3. URLs completas sem alteração (modo legado)
4. Edge cases (trailing slashes, protocolos diferentes, etc)

Closes #XX
diraol added a commit that referenced this pull request Jan 13, 2026
O campo 'url' não estava sendo processado pela função _build_file_url(),
resultando em URLs completas mesmo com a feature flag REPLACE_FILE_URL_BASE
ativada. Apenas o campo 'txt_url' estava sendo transformado corretamente.

Alterações:
- gazettes/gazette_access.py: aplica _build_file_url() ao campo 'url'
- themed_excerpts/themed_excerpt_access.py: aplica _build_file_url() ao campo 'source_url'

Testes adicionados:
- tests/test_gazette_file_url_builder.py: 13 testes para validar transformação de URLs em gazettes
- tests/test_themed_excerpt_file_url_builder.py: 8 testes para validar transformação de URLs em themed excerpts

Os testes cobrem todos os cenários:
1. Caminhos relativos (dados novos)
2. URLs completas com substituição de base (migração)
3. URLs completas sem alteração (modo legado)
4. Edge cases (trailing slashes, protocolos diferentes, etc)

Closes #XX
diraol added a commit that referenced this pull request Jan 13, 2026
O campo 'url' não estava sendo processado pela função _build_file_url(),
resultando em URLs completas mesmo com a feature flag REPLACE_FILE_URL_BASE
ativada. Apenas o campo 'txt_url' estava sendo transformado corretamente.

Alterações:
- gazettes/gazette_access.py: aplica _build_file_url() ao campo 'url'
- themed_excerpts/themed_excerpt_access.py: aplica _build_file_url() ao campo 'source_url'

Testes adicionados:
- tests/test_gazette_file_url_builder.py: 13 testes para validar transformação de URLs em gazettes
- tests/test_themed_excerpt_file_url_builder.py: 8 testes para validar transformação de URLs em themed excerpts

Os testes cobrem todos os cenários:
1. Caminhos relativos (dados novos)
2. URLs completas com substituição de base (migração)
3. URLs completas sem alteração (modo legado)
4. Edge cases (trailing slashes, protocolos diferentes, etc)

Closes #XX
diraol added a commit that referenced this pull request Jan 13, 2026
O campo 'url' não estava sendo processado pela função _build_file_url(),
resultando em URLs completas mesmo com a feature flag REPLACE_FILE_URL_BASE
ativada. Apenas o campo 'txt_url' estava sendo transformado corretamente.

Alterações:
- gazettes/gazette_access.py: aplica _build_file_url() ao campo 'url'
- themed_excerpts/themed_excerpt_access.py: aplica _build_file_url() ao campo 'source_url'

Testes adicionados:
- tests/test_gazette_file_url_builder.py: 13 testes para validar transformação de URLs em gazettes
- tests/test_themed_excerpt_file_url_builder.py: 8 testes para validar transformação de URLs em themed excerpts

Os testes cobrem todos os cenários:
1. Caminhos relativos (dados novos)
2. URLs completas com substituição de base (migração)
3. URLs completas sem alteração (modo legado)
4. Edge cases (trailing slashes, protocolos diferentes, etc)

Closes #XX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant