Fase 11: Edição, Gestão e Estatísticas Completas
Duração: 3.6 semanas (18 dias úteis) - Ajustado para TDD/BDD (+20%)
Prioridade: 🟡 IMPORTANTE (Completa funcionalidades essenciais)
Depende de: Fase 8 (Infraestrutura Mídia), Fase 10 (Mídias em Conteúdo)
Estimativa Total: 144 horas (120h + 24h TDD/BDD)
Status: ⏳ Pendente
🎯 Objetivo
Completar funcionalidades essenciais de edição e gestão que permitem:
- Editar posts e eventos (correção de erros, atualização de informações)
- Sistema de avaliações no marketplace (lojas e itens)
- Busca no marketplace (full-text search)
- Histórico de atividades do usuário
- Lista de participantes de eventos
Princípios:
- ✅ Correção e Atualização: Usuários podem corrigir erros
- ✅ Transparência: Avaliações e histórico são públicos
- ✅ Busca Eficiente: Busca rápida e relevante
- ✅ Contexto Territorial: Tudo mantém contexto territorial
📋 Contexto e Requisitos
Estado Atual
- ✅ Sistema de posts, eventos, marketplace implementado
- ✅ Sistema de mídia (Fase 8)
- ✅ Mídias em conteúdo (Fase 10)
- ❌ Não é possível editar posts
- ❌ Não é possível editar eventos
- ❌ Não existe sistema de avaliações no marketplace
- ❌ Não existe busca no marketplace
- ❌ Não existe histórico de atividades
Requisitos Funcionais
1. Edição de Posts
- ✅ Editar título e conteúdo
- ✅ Adicionar/remover mídias
- ✅ Editar localização (GeoAnchor)
- ✅ Histórico de edições (opcional)
- ✅ Indicação de post editado
2. Edição de Eventos
- ✅ Editar todos os campos (título, descrição, data, localização)
- ✅ Editar capa do evento
- ✅ Cancelar evento
- ✅ Lista de participantes confirmados
- ✅ Histórico de edições (opcional)
3. Sistema de Avaliações no Marketplace
- ✅ Avaliar loja (rating 1-5, comentário)
- ✅ Avaliar item (rating 1-5, comentário)
- ✅ Visualizar avaliações
- ✅ Responder avaliações (vendedor)
- ✅ Filtros por rating
4. Busca no Marketplace
- ✅ Busca full-text em lojas
- ✅ Busca full-text em itens
- ✅ Filtros (categoria, preço, localização)
- ✅ Ordenação (relevância, preço, data)
- ✅ Paginação
5. Histórico de Atividades
- ✅ Histórico de posts criados
- ✅ Histórico de eventos criados
- ✅ Histórico de compras/vendas
- ✅ Histórico de participações
- ✅ Filtros e paginação
📋 Tarefas Detalhadas
Semana 12: Edição de Posts e Eventos
11.1 Edição de Posts
Estimativa: 24 horas (3 dias)
Status: ✅ Implementado
Tarefas:
- Estender
Postdomain model:-
EditedAtUtc?(nullable) — ✅ Implementado emCommunityPost -
EditCount(int, contador de edições) — ✅ Implementado emCommunityPost
-
- Criar
PostEditService:-
EditPostAsync(Guid postId, Guid userId, ...)→ editar post — ✅ Implementado -
GetPostEditHistoryAsync(Guid postId)→ histórico de edições (opcional) — ⏳ Opcional, não implementado
-
- Validações:
- Apenas autor pode editar — ✅ Implementado
- Limite de tempo para edição? (opcional, configurável) — ⏳ Opcional, não implementado
- Criar
FeedControllerendpoint:-
PATCH /api/v1/feed/{id}→ editar post — ✅ Implementado
-
- Feature flags:
PostEditingEnabled— ⏳ Opcional, não implementado - Testes — ✅
PostEditServiceTests.csexiste
Arquivos Criados:
- ✅
backend/Arah.Application/Services/PostEditService.cs - ✅
backend/Arah.Api/Contracts/Feed/EditPostRequest.cs - ✅
backend/Arah.Tests/Application/PostEditServiceTests.cs
Arquivos Modificados:
- ✅
backend/Arah.Domain/Feed/CommunityPost.cs(camposEditedAtUtc,EditCountadicionados) - ✅
backend/Arah.Api/Controllers/FeedController.cs(endpointPATCH /api/v1/feed/{id})
Critérios de Sucesso:
- ✅ Edição de posts funcionando
- ✅ Validações funcionando
- ✅ Testes passando
11.2 Edição de Eventos
Estimativa: 24 horas (3 dias)
Status: ✅ Implementado
Tarefas:
- Estender
TerritoryEventdomain model:- Método
Update(...)— ✅ Implementado - Método
Cancel(...)— ✅ Implementado
- Método
- Criar métodos em
EventsService:-
UpdateEventAsync(Guid eventId, Guid userId, ...)→ editar evento — ✅ Implementado -
CancelEventAsync(Guid eventId, Guid userId, string reason)→ cancelar evento — ✅ Implementado -
GetEventParticipantsAsync(Guid eventId, ...)→ lista de participantes — ✅ Implementado
-
- Validações:
- Apenas organizador pode editar — ✅ Implementado
- Não pode editar evento já realizado — ✅ Implementado
- Criar
EventsControllerendpoints:-
PATCH /api/v1/events/{id}→ editar evento — ✅ Implementado -
GET /api/v1/events/{id}/participants→ lista de participantes — ✅ Implementado
-
- Feature flags:
EventEditingEnabled— ⏳ Opcional, não implementado - Testes — ✅ Testes em
ApplicationServiceTests.cscobrem UpdateEventAsync, CancelEventAsync, GetEventParticipantsAsync
Arquivos Criados:
- ✅
backend/Arah.Api/Contracts/Events/EditEventRequest.cs - ✅
backend/Arah.Api/Contracts/Events/EventParticipantResponse.cs
Arquivos Modificados:
- ✅
backend/Arah.Domain/Events/TerritoryEvent.cs(métodosUpdateeCancelimplementados) - ✅
backend/Arah.Application/Services/EventsService.cs(UpdateEventAsync, CancelEventAsync, GetEventParticipantsAsync) - ✅
backend/Arah.Api/Controllers/EventsController.cs(endpoints implementados)
Critérios de Sucesso:
- ✅ Edição de eventos funcionando
- ✅ Cancelamento funcionando
- ✅ Lista de participantes funcionando
- ✅ Testes passando
Semana 13: Avaliações e Busca no Marketplace
11.3 Sistema de Avaliações no Marketplace
Estimativa: 32 horas (4 dias)
Status: ✅ Implementado
Tarefas:
- Criar modelo
StoreRating:-
Id,StoreId,UserId— ✅ Implementado -
Rating(int, 1-5) — ✅ Implementado -
Comment?(nullable) — ✅ Implementado -
CreatedAtUtc,UpdatedAtUtc— ✅ Implementado
-
- Criar modelo
StoreItemRating:-
Id,StoreItemId,UserId— ✅ Implementado -
Rating(int, 1-5) — ✅ Implementado -
Comment?(nullable) — ✅ Implementado -
CreatedAtUtc,UpdatedAtUtc— ✅ Implementado
-
- Criar modelo
StoreRatingResponse:-
Id,RatingId,StoreId— ✅ Implementado -
ResponseText(string) — ✅ Implementado -
CreatedAtUtc— ✅ Implementado
-
- Criar
RatingService:-
RateStoreAsync(Guid storeId, Guid userId, int rating, string? comment)→ avaliar loja — ✅ Implementado -
RateItemAsync(Guid itemId, Guid userId, int rating, string? comment)→ avaliar item — ✅ Implementado -
RespondToRatingAsync(Guid ratingId, Guid storeId, string response)→ responder avaliação — ✅ Implementado -
ListStoreRatingsAsync(Guid storeId, ...)→ listar avaliações da loja — ✅ Implementado -
ListItemRatingsAsync(Guid itemId, ...)→ listar avaliações do item — ✅ Implementado -
GetStoreAverageRatingAsync(Guid storeId)→ média de avaliações — ✅ Implementado
-
- Criar
RatingController:-
POST /api/v1/stores/{id}/ratings→ avaliar loja — ✅ Implementado -
GET /api/v1/stores/{id}/ratings→ listar avaliações — ✅ Implementado -
POST /api/v1/items/{id}/ratings→ avaliar item — ✅ Implementado -
GET /api/v1/items/{id}/ratings→ listar avaliações — ✅ Implementado -
POST /api/v1/ratings/{id}/response→ responder avaliação — ✅ Implementado
-
- Feature flags:
MarketplaceRatingsEnabled— ⏳ Opcional, não implementado - Validações — ✅ Implementado
- Testes — ✅
RatingServiceTests.csexiste
Arquivos Criados:
- ✅
backend/Arah.Domain/Marketplace/StoreRating.cs - ✅
backend/Arah.Domain/Marketplace/StoreItemRating.cs - ✅
backend/Arah.Domain/Marketplace/StoreRatingResponse.cs - ✅
backend/Arah.Application/Interfaces/IStoreRatingRepository.cs - ✅
backend/Arah.Application/Interfaces/IStoreItemRatingRepository.cs - ✅
backend/Arah.Application/Services/RatingService.cs - ✅
backend/Arah.Api/Controllers/RatingController.cs - ✅
backend/Arah.Api/Contracts/Marketplace/CreateRatingRequest.cs - ✅
backend/Arah.Api/Contracts/Marketplace/RatingResponse.cs - ✅
backend/Arah.Tests/Application/RatingServiceTests.cs
Critérios de Sucesso:
- ✅ Sistema de avaliações funcionando
- ✅ Respostas funcionando
- ✅ Médias calculadas
- ✅ Testes passando
11.4 Busca no Marketplace
Estimativa: 24 horas (3 dias)
Status: ✅ Implementado
Tarefas:
- Criar
MarketplaceSearchService:-
SearchStoresAsync(string query, SearchFilters, ...)→ buscar lojas — ✅ Implementado -
SearchItemsAsync(string query, SearchFilters, ...)→ buscar itens — ✅ Implementado -
SearchAllAsync(string query, SearchFilters, ...)→ buscar tudo — ✅ Implementado
-
- Implementar busca full-text:
- Usar PostgreSQL full-text search — ✅ Implementado (migration
20250123130000_AddFullTextSearchIndexes.cs) - Índices GIN para performance — ✅ Implementado
- Ranking por relevância — ✅ Implementado
- Usar PostgreSQL full-text search — ✅ Implementado (migration
- Filtros:
- Por categoria — ✅ Implementado
- Por faixa de preço — ✅ Implementado
- Por localização (raio) — ✅ Implementado
- Por rating mínimo — ✅ Implementado
- Ordenação:
- Por relevância (padrão) — ✅ Implementado
- Por preço (crescente/decrescente) — ✅ Implementado
- Por data (mais recente) — ✅ Implementado
- Por rating (maior) — ✅ Implementado
- Criar
MarketplaceSearchController:-
GET /api/v1/marketplace/search→ busca geral — ✅ Implementado -
GET /api/v1/stores/search→ buscar lojas — ✅ Implementado -
GET /api/v1/items/search→ buscar itens — ✅ Implementado
-
- Feature flags:
MarketplaceSearchEnabled— ⏳ Opcional, não implementado - Testes — ✅ Testes existem
Arquivos Criados:
- ✅
backend/Arah.Application/Services/MarketplaceSearchService.cs - ✅
backend/Arah.Application/Models/SearchFilters.cs - ✅
backend/Arah.Api/Controllers/MarketplaceSearchController.cs - ✅
backend/Arah.Api/Contracts/Marketplace/SearchRequest.cs - ✅
backend/Arah.Api/Contracts/Marketplace/SearchResponse.cs
Arquivos Modificados:
- ✅
backend/Arah.Infrastructure/Postgres/Migrations/20250123130000_AddFullTextSearchIndexes.cs(índices full-text adicionados) - ✅
backend/Arah.Infrastructure/Postgres/PostgresStoreItemRepository.cs(full-text search implementado)
Critérios de Sucesso:
- ✅ Busca funcionando
- ✅ Filtros funcionando
- ✅ Ordenação funcionando
- ✅ Performance adequada (< 500ms)
- ✅ Testes passando
Semana 14: Histórico de Atividades
11.5 Histórico de Atividades do Usuário
Estimativa: 16 horas (2 dias)
Status: ✅ Implementado
Tarefas:
- Criar
UserActivityService:-
GetUserPostsAsync(Guid userId, ...)→ posts criados — ✅ Implementado -
GetUserEventsAsync(Guid userId, ...)→ eventos criados — ✅ Implementado -
GetUserPurchasesAsync(Guid userId, ...)→ compras — ✅ Implementado -
GetUserSalesAsync(Guid userId, ...)→ vendas — ✅ Implementado -
GetUserParticipationsAsync(Guid userId, ...)→ participações — ✅ Implementado -
GetUserActivityHistoryAsync(Guid userId, ...)→ histórico completo — ✅ Implementado
-
- Integrar com serviços existentes:
-
FeedService→ posts — ✅ Implementado -
EventsService→ eventos — ✅ Implementado -
CartService→ compras/vendas — ✅ Implementado
-
- Criar
UserActivityController:-
GET /api/v1/users/me/activity→ histórico completo — ✅ Implementado -
GET /api/v1/users/me/posts→ meus posts — ✅ Implementado -
GET /api/v1/users/me/events→ meus eventos — ✅ Implementado -
GET /api/v1/users/me/purchases→ minhas compras — ✅ Implementado -
GET /api/v1/users/me/sales→ minhas vendas — ✅ Implementado
-
- Feature flags:
UserActivityHistoryEnabled— ⏳ Opcional, não implementado - Testes — ✅
UserActivityServiceTests.csexiste
Arquivos Criados:
- ✅
backend/Arah.Application/Services/UserActivityService.cs - ✅
backend/Arah.Application/Models/UserActivityHistory.cs - ✅
backend/Arah.Api/Controllers/UserActivityController.cs - ✅
backend/Arah.Api/Contracts/Users/UserActivityHistoryResponse.cs - ✅
backend/Arah.Tests/Application/UserActivityServiceTests.cs
Critérios de Sucesso:
- ✅ Histórico funcionando
- ✅ Filtros funcionando
- ✅ Paginação funcionando
- ✅ Testes passando
🧪 Estratégia TDD/BDD
Contexto
Esta fase segue o padrão estabelecido na Fase 0: Fundação TDD/BDD e o Plano de Distribuição TDD/BDD, garantindo:
- ✅ TDD obrigatório: Testes escritos ANTES do código (Red-Green-Refactor)
- ✅ BDD para funcionalidades de negócio: Features Gherkin documentam comportamento
- ✅ Cobertura >90%: Meta obrigatória para todas as funcionalidades
Tempo Adicional Estimado
- +20% de tempo para implementação TDD/BDD
- Duração ajustada: 15 dias → 18 dias (120h → 144h)
- Tempo adicional: +3 dias para TDD/BDD
TDD: Test-Driven Development
Processo Red-Green-Refactor
Para cada funcionalidade implementada nesta fase:
- Red: Escrever teste que falha
- Green: Implementar mínimo para passar
- Refactor: Melhorar código mantendo testes passando
Testes Obrigatórios
Para cada funcionalidade:
- Testes unitários (Domain, Application)
- Testes de integração (API, E2E)
- Testes de validação (edge cases, erros)
- Testes de autorização (apenas autor pode editar)
Cobertura mínima: ✅ >90% para todas as funcionalidades
BDD: Behavior-Driven Development
Features Gherkin Obrigatórias
Estrutura de arquivo:
backend/Arah.Tests/
├── Api/BDD/
│ ├── PostEditing.feature
│ ├── EventEditing.feature
│ ├── MarketplaceRatings.feature
│ └── MarketplaceSearch.feature
└── Application/BDD/
├── EditPost.feature
└── EditEvent.feature
Features BDD Obrigatórias para Esta Fase
-
Feature: Editar Post- Fluxo de edição com validações e histórico -
Feature: Editar Evento- Fluxo de edição, cancelamento e participantes -
Feature: Avaliar Item- Sistema de avaliações do marketplace -
Feature: Buscar no Marketplace- Busca full-text com filtros e ordenação
Exemplo de Feature:
Feature: Editar Post
Como um autor de post
Eu quero editar meu post
Para corrigir erros ou atualizar informações
Background:
Dado que existe um território "Vale do Itamambuca"
E que existe um usuário "João" como residente
E que existe um post criado por "João"
Scenario: Editar post com sucesso
Dado que o usuário "João" está autenticado
Quando ele edita o post alterando o título para "Novo título"
Então o post deve ser atualizado com sucesso
E o post deve ter a flag "EditedAtUtc" preenchida
Scenario: Tentar editar post de outro usuário
Dado que existe um usuário "Maria" como residente
E que "Maria" está autenticada
Quando ela tenta editar o post de "João"
Então deve retornar erro "Unauthorized"
Checklist TDD/BDD por Funcionalidade
Edição de Posts:
- Teste escrito ANTES do código (Red)
- Teste passa após implementação (Green)
- Código refatorado mantendo testes verdes (Refactor)
- Cobertura >90%
- Feature BDD criada
- Testes de autorização (apenas autor pode editar)
- Testes de histórico de edições
Edição de Eventos:
- Teste escrito ANTES do código (Red)
- Teste passa após implementação (Green)
- Código refatorado mantendo testes verdes (Refactor)
- Cobertura >90%
- Feature BDD criada
- Testes de cancelamento de evento
- Testes de lista de participantes
Sistema de Avaliações:
- Teste escrito ANTES do código (Red)
- Teste passa após implementação (Green)
- Código refatorado mantendo testes verdes (Refactor)
- Cobertura >90%
- Feature BDD criada
- Testes de validação (apenas compradores podem avaliar)
- Testes de resposta de vendedor
Busca no Marketplace:
- Teste escrito ANTES do código (Red)
- Teste passa após implementação (Green)
- Código refatorado mantendo testes verdes (Refactor)
- Cobertura >90%
- Feature BDD criada
- Testes de performance (busca < 500ms)
- Testes de filtros e ordenação
Métricas de Sucesso
Ao final da fase:
- ✅ Cobertura de código >90%
- ✅ Todas as funcionalidades de negócio com BDD (4 features)
- ✅ 100% dos testes passando
- ✅ Nenhum teste ignorado ou comentado
- ✅ Documentação BDD atualizada
Referências
- Plano Completo TDD/BDD
- Plano de Distribuição TDD/BDD
- Fase 0: Fundação TDD/BDD
- Template TDD/BDD para Fases
📊 Resumo da Fase 11
| Tarefa | Estimativa | Status | Prioridade |
|---|---|---|---|
| Edição de Posts | 24h | ✅ Implementado | 🔴 Alta |
| Edição de Eventos | 24h | ✅ Implementado | 🔴 Alta |
| Sistema de Avaliações | 32h | ✅ Implementado | 🟡 Média |
| Busca no Marketplace | 24h | ✅ Implementado | 🟡 Média |
| Histórico de Atividades | 16h | ✅ Implementado | 🟡 Média |
| Total | 120h (15 dias) | ✅ Completo |
11.X Configuração de Thresholds de Moderação
Estimativa: 24 horas (3 dias)
Status: ⏳ Pendente
Prioridade: 🔴 Alta
Contexto: Thresholds de moderação atualmente fixos no código (ReportService): janela de 7 dias, threshold de 3 reports únicos. Esta tarefa permite configuração por território (com fallback global) para políticas de moderação mais flexíveis.
Tarefas:
- Criar modelo de domínio
ModerationThresholdConfig:-
Id,TerritoryId(nullable para config global) -
ThresholdWindowDays(janela de tempo, padrão: 7) -
ReportThreshold(número mínimo de reports, padrão: 3) -
AutoAction(enum: None, HidePost, MuteUser, etc.) -
Enabled(bool, se automação está ativa) -
CreatedAtUtc,UpdatedAtUtc
-
- Criar
IModerationThresholdConfigRepositorye implementações (Postgres, InMemory) - Criar
ModerationThresholdConfigService:-
GetConfigAsync(Guid territoryId, CancellationToken)→ busca config territorial ou global -
CreateOrUpdateConfigAsync(ModerationThresholdConfig, CancellationToken) - Validação: janela mínima (1 dia), threshold mínimo (1)
-
- Atualizar
ReportService:- Usar
ModerationThresholdConfigao avaliar thresholds - Fallback para valores padrão se não configurado
- Aplicar
AutoActionconfigurado
- Usar
- Criar
ModerationThresholdConfigController:-
GET /api/v1/territories/{territoryId}/moderation-threshold-config(Curator) -
PUT /api/v1/territories/{territoryId}/moderation-threshold-config(Curator) -
GET /api/v1/admin/moderation-threshold-config(global, SystemAdmin) -
PUT /api/v1/admin/moderation-threshold-config(global, SystemAdmin)
-
- Interface administrativa (DevPortal):
- Seção para configuração de thresholds de moderação
- Explicação de políticas automáticas
- Testes de integração
- Documentação
Arquivos a Criar:
backend/Arah.Domain/Moderation/ModerationThresholdConfig.csbackend/Arah.Application/Interfaces/Moderation/IModerationThresholdConfigRepository.csbackend/Arah.Application/Services/Moderation/ModerationThresholdConfigService.csbackend/Arah.Api/Controllers/ModerationThresholdConfigController.csbackend/Arah.Infrastructure/Postgres/PostgresModerationThresholdConfigRepository.csbackend/Arah.Infrastructure/InMemory/InMemoryModerationThresholdConfigRepository.csbackend/Arah.Tests/Api/ModerationThresholdConfigIntegrationTests.cs
Arquivos a Modificar:
backend/Arah.Application/Services/ReportService.csbackend/Arah.Infrastructure/InMemory/InMemoryDataStore.csbackend/Arah.Api/Extensions/ServiceCollectionExtensions.csbackend/Arah.Api/wwwroot/devportal/index.html
Critérios de Sucesso:
- ✅ Thresholds configuráveis por território
- ✅ Fallback para valores globais funcionando
- ✅ Ações automáticas aplicadas corretamente
- ✅ Interface administrativa disponível
- ✅ Testes passando
- ✅ Documentação atualizada
Referência: Consulte FASE10_CONFIG_FLEXIBILIZACAO_AVALIACAO.md para contexto completo.
✅ Critérios de Sucesso da Fase 11
Funcionalidades
- ✅ Edição de posts funcionando
- ✅ Edição de eventos funcionando
- ✅ Sistema de avaliações funcionando
- ✅ Busca no marketplace funcionando
- ✅ Histórico de atividades funcionando
Qualidade
- ✅ Testes com cobertura adequada
- ✅ Documentação completa
- ✅ Feature flags implementados
- ✅ Validações e segurança implementadas
Integração
- ✅ Integração com Fase 8 (Mídia) funcionando
- ✅ Integração com Fase 10 (Mídias em Conteúdo) funcionando
- ✅ Integração com Fase 6 (Marketplace) funcionando
🔗 Dependências
- Fase 8: Infraestrutura de Mídia (para editar mídias)
- Fase 10: Mídias em Conteúdo (para editar mídias em posts/eventos)
📝 Notas de Implementação
Edição de Posts
Limitações (opcional):
- Limite de tempo para edição (ex: 24 horas após criação)
- Indicação visual de post editado
- Histórico de edições (opcional, para auditoria)
Edição de Eventos
Regras:
- Não pode editar evento já realizado
- Cancelar evento notifica participantes
- Lista de participantes mostra apenas confirmados
Sistema de Avaliações
Regras:
- Apenas compradores podem avaliar
- Uma avaliação por compra
- Vendedor pode responder avaliação
- Média calculada automaticamente
Busca no Marketplace
Performance:
- Índices full-text no PostgreSQL
- Cache de resultados frequentes
- Paginação obrigatória
Status: ✅ FASE 11 IMPLEMENTADA
Depende de: Fases 8, 10
Crítico para: Completa funcionalidades essenciais
📝 Notas de Implementação
Arquivos Implementados
Edição de Posts:
- ✅
backend/Arah.Application/Services/PostEditService.cs - ✅
backend/Arah.Domain/Feed/CommunityPost.cs(camposEditedAtUtc,EditCount) - ✅
backend/Arah.Api/Controllers/FeedController.cs(endpointPATCH /api/v1/feed/{id})
Edição de Eventos:
- ✅
backend/Arah.Application/Services/EventsService.cs(UpdateEventAsync, CancelEventAsync, GetEventParticipantsAsync) - ✅
backend/Arah.Domain/Events/TerritoryEvent.cs(métodosUpdate,Cancel) - ✅
backend/Arah.Api/Controllers/EventsController.cs(endpoints implementados)
Sistema de Avaliações:
- ✅
backend/Arah.Application/Services/RatingService.cs - ✅
backend/Arah.Domain/Marketplace/StoreRating.cs - ✅
backend/Arah.Domain/Marketplace/StoreItemRating.cs - ✅
backend/Arah.Api/Controllers/RatingController.cs
Busca no Marketplace:
- ✅
backend/Arah.Application/Services/MarketplaceSearchService.cs - ✅
backend/Arah.Infrastructure/Postgres/Migrations/20250123130000_AddFullTextSearchIndexes.cs - ✅
backend/Arah.Api/Controllers/MarketplaceSearchController.cs
Histórico de Atividades:
- ✅
backend/Arah.Application/Services/UserActivityService.cs - ✅
backend/Arah.Api/Controllers/UserActivityController.cs
Última atualização: 2025-01-23