Uh oh!
There was an error while loading. Please reload this page.
Feat/cloudnary n i18n - #32
Merged
Merged
Conversation
add photo management with Cloudinary integration - Created UserPhoto entity and corresponding repository. - Introduced PhotoType enum for categorizing photo types. - Developed services for managing company, local unit, model, and user photos, including upload and delete functionalities. - Implemented CloudinaryService for handling file uploads and deletions. - Added response DTOs for various photo types. - Enhanced EnergyBillService to support photo attachment and removal. - Updated CompanyService and LocalUnitService to include photo repository checks during deletions. - Configured application properties for Cloudinary settings and increased file upload limits.
…i-core into feat/cloudnary-n-i18n
- adiciona metodos attachPhoto/removePhoto faltantes na interface EnergyBillOpenApi, corrigindo erro de compilacao - restaura dependencia h2 (removida por engano ao mesclar cloudinary-http5), corrigindo falha nos testes - agrupa alternancia no regex de EDGE_HYPHENS em SlugUtil para eliminar ambiguidade de precedencia (S5850) - reduz limite de upload multipart de 10MB para 8MB para atender ao rating de seguranca do SonarCloud (S5693)
maykitw1
approved these changes
Aug 29, 2026
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Objetivo
Adicionar à API os campos que já existem no front-end mas faltavam nas tabelas, e implementar tradução automática (via Google Translate) do conteúdo das ofertas (placas solares) para os idiomas suportados (pt-BR, en-US, es-ES).
Alterações
dimension(BigDecimal único) substituído porwidth+length; adicionado campotype(PanelType: MONOCRYSTALLINE, POLYCRYSTALLINE, THIN_FILM).slug(gerado a partir detradeNamena criação, único).slug(gerado a partir do nome da pessoa vinculada na criação, único).slug(gerado a partir de marca+modelo),discountPercentage,serviceRegions(lista de regiões atendidas),sourceLocaleetranslationStatus(PENDING/COMPLETED/FAILED).offer_translation: uma linha por idioma (title,description,details), com FK paraoffer.@Async(primeira vez que o projeto usa processamento assíncrono) disparado após o commit da transação de criação.feat/cloudnaryPhotos(já mergeada aqui) implementa isso por completo com entidades de foto dedicadas; adicionar mais um campo de imagem duplicaria esse trabalho.Endpoints afetados
Nenhum endpoint novo.
POST /api/offersePUT /api/offers/{id}passam a aceitartitle,description,details,discountPercentageeserviceRegions; as respostas de oferta (OfferResponseDTO) passam a incluirslug,discountPercentage,serviceRegions,sourceLocale,translationStatusetranslations[].ModelResponseDTO/CompanyResponseDTO/TechnicianResponseDTOganham os campos novos (type/width/length,slug,slug, respectivamente).Banco de Dados
Não há ferramenta de migration no projeto (
ddl-auto=validate), então o SQL abaixo precisa ser aplicado manualmente no banco antes do deploy:Para ofertas já existentes: rodar um backfill (script ou chamada manual) que crie a linha
offer_translationinicial e dispare a tradução, já que a migration acima não faz isso automaticamente.Variável de ambiente nova
GOOGLE_TRANSLATE_API_KEY— chave da Google Cloud Translation API (v2). Adicionada em.env.example,application.properties(google-translate.api-key) e no metadata de configuração.Como testar
GOOGLE_TRANSLATE_API_KEYno.env.POST /api/offerscomtitle/descriptionem português.translationStatus: PENDING.GET) —translationStatusdeve virarCOMPLETED,sourceLocaledeve serpt-BR, etranslations[]deve ter as versões emen-USees-ES.Evidências
Sem evidências visuais.
Observações / pontos em aberto
slugdeOffer/Company/Techniciané gerado uma única vez na criação e não muda em updates — se isso não for aceitável (ex.: precisa mudar quando o nome/marca muda), me avise.PanelType, consumir os novos campos de oferta). Aguardando confirmação se isso é necessário agora ou fica para depois.Closes #