Skip to content

feat: Sprint 8C - Provider Web App Scaffolding#171

Closed
frigini wants to merge 25 commits intomasterfrom
feature/sprint-8c-provider-web
Closed

feat: Sprint 8C - Provider Web App Scaffolding#171
frigini wants to merge 25 commits intomasterfrom
feature/sprint-8c-provider-web

Conversation

@frigini
Copy link
Copy Markdown
Owner

@frigini frigini commented Mar 19, 2026

Implementação da base estrutural da nova aplicação React Native / Web App para Prestadores (Sprint 8C), adicionando as libs necessárias e ajustando os padrões descritos em prompts/design-react-project.md:

  • Scaffolding NX: App React da Provider UI em MeAjudaAi.Web.Provider.
  • E2E Removido: Excluído app extra gerado pelo boilerplate do NX (seguindo estrutura unificada da v2 futura para testes e2e).
  • Core Dependencies: Base UI (headless-ui componentry), Next.js / React 19, e TailwindMerge/TailwindVariants.
  • Tailwind CSS v4 (global.css): Definição de tokens de tema e core properties.
  • Componentes Base UI: Button e Card flexível com propriedades data-slot baseados no Tailwind.
  • Rota Dashboard (page.tsx): Layout inicial apresentando os cartões de validação de Documentos e Gestão de Serviço.

Summary by CodeRabbit

Release Notes

  • New Features

    • Providers can now be accessed by a friendly slug identifier in addition to ID
    • Provider profiles now include slug fields for improved URL handling
    • Search functionality enhanced to support slug-based lookups
    • Added comprehensive design guidelines for React component development
  • Documentation

    • Updated sprint roadmap to reflect ongoing development status
    • New design specification guide for converting designs into React components
  • Infrastructure & Tests

    • Enhanced test coverage for provider lookup and slug functionality
    • Updated service configurations and middleware organization

Filipe Frigini added 25 commits March 13, 2026 16:53
…ities, DTOs, mappers, repositories, event handlers, APIs, and comprehensive tests.
…pported by a new searchable provider entity and slug utility.
…add unit tests for public provider retrieval by ID or slug.
…nd unit tests for GetPublicProviderByIdOrSlug query handler.
…ostgreSQL/PostGIS, new unit tests for SearchableProvider and API extensions, and a new GetPublicProviderByIdOrSlug query handler with its tests.
…nd add `GetPublicProviderByIdOrSlugQueryHandler` with public profile privacy features.
…nd add `GetPublicProviderByIdOrSlugQueryHandler` with public profile privacy features.
…provider query handlers, a searchable provider entity, and security headers middleware.
…roduce SearchableProvider entity, and implement RegisterCustomerCommandHandler with related API extension tests.
…er retrieval by ID or slug with privacy controls.
…ring active/inactive providers, ID/slug queries, and privacy feature flag scenarios.
…tests for public provider retrieval, including privacy feature handling.
…lugQueryHandler and SearchableProvider entity mapping
…roviders modules, including cross-module workflows.
…a dashboard UI, core components, and project configuration, along with new roadmap documentation.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 19, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

A integração de suporte a "slug" (identificador amigável para URL) é adicionada aos provedores e provedores pesquisáveis, com criação do utilitário SlugHelper, adição de propriedade Slug às entidades do domínio, atualização de DTOs e repositórios, mudança do endpoint de busca de provedor público para aceitar ID ou slug, e atualizações extensivas de testes, configurações e mapeamentos de banco de dados.

Changes

Cohort / File(s) Summary
Suporte a Slug para Provider
src/Modules/Providers/Domain/Entities/Provider.cs, src/Modules/Providers/Domain/Events/ProviderRegisteredDomainEvent.cs, src/Modules/Providers/Domain/Events/ProviderProfileUpdatedDomainEvent.cs
Adicionada propriedade Slug à entidade Provider, com geração via SlugHelper. Entidades de domínio atualizadas para incluir slug nos eventos registrados e atualizados.
DTOs de Provider
src/Modules/Providers/Application/DTOs/ProviderDto.cs, src/Modules/Providers/Application/DTOs/PublicProviderDto.cs, src/Contracts/Contracts/Modules/Providers/DTOs/ModuleProviderBasicDto.cs, src/Contracts/Contracts/Modules/Providers/DTOs/ModuleProviderDto.cs, src/Contracts/Contracts/Modules/Providers/DTOs/ModuleProviderIndexingDto.cs
Todos os DTOs de provider estendidos para incluir propriedade Slug obrigatória.
Repositório e Persistência de Provider
src/Modules/Providers/Domain/Repositories/IProviderRepository.cs, src/Modules/Providers/Infrastructure/Persistence/Repositories/ProviderRepository.cs, src/Modules/Providers/Infrastructure/Persistence/Configurations/ProviderConfiguration.cs
Adicionado método GetBySlugAsync ao repositório. Configuração EF Core atualizada para mapear coluna slug (120 caracteres, obrigatória) e criar índice.
Endpoint e Handler de Provider Público
src/Modules/Providers/API/Endpoints/Public/GetPublicProviderByIdOrSlugEndpoint.cs, src/Modules/Providers/API/Endpoints/ProvidersModuleEndpoints.cs, src/Modules/Providers/Application/Queries/GetPublicProviderByIdOrSlugQuery.cs, src/Modules/Providers/Application/Handlers/Queries/GetPublicProviderByIdOrSlugQueryHandler.cs, src/Modules/Providers/Application/Extensions.cs
Endpoint renomeado de GetPublicProviderById para GetPublicProviderByIdOrSlug. Rota alterada de /{id:guid}/public para /public/{idOrSlug}. Query e handler atualizados para suportar busca por ID (com fallback) ou slug. Normalizações de slug aplicadas (minúsculas, trim).
SearchableProvider - Suporte a Slug
src/Modules/SearchProviders/Domain/Entities/SearchableProvider.cs, src/Modules/SearchProviders/Infrastructure/Persistence/Configurations/SearchableProviderConfiguration.cs, src/Modules/SearchProviders/Infrastructure/Persistence/Repositories/SearchableProviderRepository.cs
Propriedade Slug adicionada com validação obrigatória. Métodos Create e UpdateBasicInfo atualizados para aceitar e processar slug. Configuração EF Core e repositório Dapper atualizados para persistência e consulta de slug.
SearchableProvider DTOs
src/Modules/SearchProviders/Application/DTOs/SearchableProviderDto.cs, src/Contracts/Contracts/Modules/SearchProviders/DTOs/ModuleSearchableProviderDto.cs, src/Modules/SearchProviders/Infrastructure/Persistence/DTOs/ProviderSearchResultDto.cs
DTOs estendidos para incluir propriedade Slug.
Utilitário SlugHelper
src/Shared/Utilities/SlugHelper.cs
Novo utilitário com métodos Generate(text) e GenerateWithSuffix(text, suffix). Suporta normalização Unicode, remoção de diacríticos, geração de slugs amigáveis. Usa regex compilado em tempo de compilação.
Eventos de Integração de Provider
src/Shared/Messaging/Messages/Providers/ProviderRegisteredIntegrationEvent.cs, src/Shared/Messaging/Messages/Providers/ProviderProfileUpdatedIntegrationEvent.cs, src/Modules/Providers/Infrastructure/Events/Mappers/ProviderEventMappers.cs
Eventos de integração estendidos com propriedade Slug opcional. Mapeadores atualizados para incluir slug ao construir eventos.
Constantes e Endpoints
src/Modules/Providers/Domain/Constants/ProviderErrors.cs, src/Shared/Utilities/Constants/ApiEndpoints.cs
Novo arquivo com constante de erro ProviderNotFound. Rota API refatorada de GetPublicById para GetPublicByIdOrSlug.
Mappers de Provider
src/Modules/Providers/Application/Mappers/ProviderMapper.cs, src/Modules/Providers/Application/ModuleApi/ProvidersModuleApi.cs, src/Modules/SearchProviders/Application/Handlers/SearchProvidersQueryHandler.cs, src/Modules/SearchProviders/Application/ModuleApi/SearchProvidersModuleApi.cs
Mappers atualizados para incluir slug ao construir DTOs. Conversão para argumentos nomeados aplicada onde relevante.
Testes de Provider
src/Modules/Providers/Tests/Builders/ProviderBuilder.cs, src/Modules/Providers/Tests/Unit/Application/Handlers/GetPublicProviderByIdOrSlugQueryHandlerTests.cs, src/Modules/Providers/Tests/Unit/Application/Handlers/Queries/GetPublicProviderByIdQueryHandlerTests.cs, src/Modules/Providers/Tests/Integration/GetPublicProviderByIdIntegrationTests.cs, src/Modules/Providers/Tests/Unit/Domain/Entities/ProviderTests.cs
Novos testes adicionados para handler GetPublicProviderByIdOrSlug (11 casos de teste cobrindo ID, slug, normalização, privacy). Testes antigos do handler GetPublicProviderById removidos. Builder estendido com método WithStatus. Assertions de slug adicionadas.
Testes de SearchProviders
src/Modules/SearchProviders/Tests/Integration/SearchProvidersIntegrationTestBase.cs, src/Modules/SearchProviders/Tests/Unit/Application/Handlers/SearchProvidersQueryHandlerTests.cs, src/Modules/SearchProviders/Tests/Unit/Domain/Entities/SearchableProviderTests.cs, tests/MeAjudaAi.E2E.Tests/Modules/SearchProviders/SearchProvidersEndToEndTests.cs
Helpers de teste e casos de teste atualizados para incluir slug. Novos testes para validação e normalização de slug. Seeding de banco de dados SQL atualizado para incluir coluna slug.
Testes Unitários Diversos
src/Modules/Providers/Tests/Unit/API/Endpoints/GetMyProviderProfileEndpointTests.cs, src/Modules/Providers/Tests/Unit/API/Endpoints/GetMyProviderStatusEndpointTests.cs, src/Modules/Providers/Tests/Unit/API/Endpoints/UpdateMyProviderProfileEndpointTests.cs, src/Modules/Providers/Tests/Unit/API/Endpoints/UploadMyDocumentEndpointTests.cs, src/Modules/Providers/Tests/Unit/Application/Services/ProvidersModuleApiTests.cs, src/Modules/Providers/Tests/Infrastructure/TestInfrastructureExtensions.cs
Construção de DTO ProviderDto refatorada para usar inicializadores de propriedade nomeada. Slug adicionado aos dados de teste.
Middleware e Namespace
src/Bootstrapper/MeAjudaAi.ApiService/Extensions/ServiceCollectionExtensions.cs, src/Bootstrapper/MeAjudaAi.ApiService/Middlewares/ContentSecurityPolicyMiddleware.cs, src/Bootstrapper/MeAjudaAi.ApiService/Middlewares/InspectAuthMiddleware.cs, src/Bootstrapper/MeAjudaAi.ApiService/Middlewares/SecurityHeadersMiddleware.cs, tests/MeAjudaAi.ApiService.Tests/Unit/Middlewares/InspectAuthMiddlewareTests.cs
Namespace middleware atualizado de Middleware para Middlewares. Imports corrigidos. Diretivas de pragma warning adicionadas para S3267 (simplificação de loop LINQ).
Modulo Users - Validações Nulas
src/Modules/Users/API/Extensions.cs, src/Modules/Users/Application/Handlers/Commands/CreateUserCommandHandler.cs, src/Modules/Users/Application/Handlers/Commands/DeleteUserCommandHandler.cs, src/Modules/Users/Application/Handlers/Commands/RegisterCustomerCommandHandler.cs, src/Modules/Users/Application/Handlers/Commands/UpdateUserProfileCommandHandler.cs, src/Modules/Users/Infrastructure/Identity/Keycloak/KeycloakService.cs, src/Modules/Users/Infrastructure/Services/KeycloakUserDomainService.cs, src/Modules/Users/Infrastructure/Services/LocalDevelopment/LocalDevelopmentUserDomainService.cs
Operadores null-forgiving (!) adicionados em dereferenciações de resultado. Validações ArgumentNullException adicionadas a métodos de extensão. Guarda nula explícita adicionada em RegisterCustomerCommandHandler.
Testes Users
src/Modules/Users/Tests/Builders/UserBuilder.cs, src/Modules/Users/Tests/Unit/API/APIExtensionsTests.cs, src/Modules/Users/Tests/Unit/API/ExtensionsTests.cs, src/Modules/Users/Tests/Unit/Application/Queries/GetUsersQueryHandlerTests.cs, src/Modules/Users/Tests/Unit/Domain/Entities/UserTests.cs, src/Modules/Users/Tests/Unit/Infrastructure/Events/...
Testes refatorados com validações nulas. Helpers de configuração adicionados. Novos testes para ArgumentNullException e comportamento de configuração vazia. Assertions de slug adicionadas em testes de evento.
Segurança e Pragma Warnings
src/Aspire/MeAjudaAi.AppHost/Program.cs, src/Shared/Database/DatabaseConstants.cs
Diretivas #pragma warning disable S2068 / #pragma warning restore S2068 adicionadas em torno de constantes de senha hardcoded de teste.
Utilitário Compartilhado
src/Shared/Messaging/DeadLetter/RabbitMqDeadLetterService.cs
ObjectDisposedException.ThrowIf utilizado em lugar de construtor direto.
Infraestrutura SearchProviders
src/Modules/SearchProviders/Infrastructure/Extensions.cs
Lógica de fallback de connection string para testes refatorada. Validações de ambiente e tratamento de erros aprimorados com mensagens DEBUG mais informativas.
Roadmap e Documentação
docs/roadmap-current.md, docs/roadmap-history.md, prompts/design-react-project.md
Status Sprint 8C Provider Web App atualizado para "🔄" (em progresso). Novo prompt com diretrizes detalhadas para conversão de design em componentes React (React 19, TypeScript, Tailwind CSS v4, Base UI).
Configuração Web (Nx e npm)
src/Web/nx.json, src/Web/package.json, src/Web/tsconfig.base.json
Plugin Nx Next adicionado com mapeamento de targets. Dependências @swc/cli, @base-ui/react, e next ~15.2.4 adicionadas. Formatação de tsconfig.base.json simplificada.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

🐰 Do coelho que adora slugs!

Um coelho sábio, com espaço de sobra,
Criou slugs amigos para toda obra,
De providers e buscas, um lindo ajustar,
Com URLs simpáticas, sem GUID para suportar!
Normalizando diacríticos com carinho,
Encontrou o caminho mais bonito do ninho! 🥕✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning A descrição fornecida não segue o template obrigatório do repositório. Embora contenha informações úteis sobre o escopo, faltam seções estruturadas como 📊 Summary, 🎯 Problem, ✅ Solution, 🔧 Changes formalmente organizadas, 🧪 Testing com checklist, 📋 Checklist de validação e 🔗 Related. Reorganize a descrição do PR usando o template obrigatório do repositório, preenchendo todas as seções: Summary, Problem, Solution, Changes, Impact, Testing, Checklist, Related e Notes for Reviewers.
Docstring Coverage ⚠️ Warning Docstring coverage is 31.82% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed O título descreve de forma clara e específica a implementação principal do PR: scaffolding da aplicação Provider Web (Sprint 8C), que é o foco central das mudanças listadas.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/sprint-8c-provider-web
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@frigini frigini closed this Mar 19, 2026
@frigini frigini deleted the feature/sprint-8c-provider-web branch March 19, 2026 16:19
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