Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7d4c7fb
feat: implement Catalogs module with complete CRUD operations
Nov 18, 2025
d56dbab
Merge master into catalogs_module_implementation
Nov 18, 2025
3266102
remove arquivo desnecessario
Nov 18, 2025
1498f4f
fix: correct test data for Catalogs module requests
Nov 18, 2025
914fc23
fix(catalogs): correct authorization and API response format
Nov 18, 2025
859bbe3
refactor(catalogs): improve API consistency and service name validation
Nov 18, 2025
2cef125
refactor(catalogs): code quality improvements and test infrastructure…
Nov 18, 2025
c163a94
refactor(catalogs): apply code review suggestions for test quality
Nov 18, 2025
9632cbc
refactor(catalogs): apply comprehensive code review suggestions
Nov 18, 2025
7bf80df
docs: remove redundant README_TESTS.md from Catalogs module
Nov 18, 2025
7d2a9b4
fix(catalogs): improve test assertions and repository name normalization
Nov 18, 2025
db3ee27
refactor(catalogs): apply code review round 6 - consistency and robus…
Nov 18, 2025
73658d7
refactor(catalogs): apply code review round 7 - validation, diagnosti…
Nov 18, 2025
89bd2a8
refactor(catalogs): add input validation guards and batch query optim…
Nov 18, 2025
87f6d1f
test(catalogs): improve domain test coverage and robustness
Nov 18, 2025
ff80800
refactor(catalogs): fix validation, routing, and E2E test DTOs
Nov 18, 2025
bdf8248
chore: ignore launchSettings.json and fix empty GUID validation
Nov 18, 2025
840219d
refactor: improve code structure and standardization
Nov 18, 2025
af69fab
refactor: reorganize Catalogs handlers to match Users module structure
Nov 18, 2025
91d7803
docs: atualizar documentação dos módulos Catalogs e Location
Nov 18, 2025
bff62bd
style: aplicar dotnet format e corrigir imports dos Commands
Nov 19, 2025
60f3532
fix: adicionar validações Guid.Empty e corrigir documentação/testes
Nov 19, 2025
3fb3473
mais review
Nov 19, 2025
704c688
niitpicksom
Nov 19, 2025
2c26120
refactor: improve repository consistency and builder pattern
Nov 19, 2025
e51cb44
refactor: improve markdown formatting and test assertions
Nov 19, 2025
ccc633a
refactor: use nullable int for ServiceBuilder._displayOrder
Nov 19, 2025
943cfc0
refactor: add defensive length limits and improve test coverage
Nov 19, 2025
8cc6d40
style: fix whitespace formatting issues
Nov 19, 2025
231c608
test: strengthen E2E test assertions and improve determinism
Nov 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ _NCrunch_*
*.userosscache
*.sln.docstates

# Launch settings (IDE-specific, auto-generated)
**/Properties/launchSettings.json

# ReSharper
_ReSharper*/
*.[Rr]e[Ss]harper
Expand Down
95 changes: 94 additions & 1 deletion MeAjudaAi.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11205.157 d18.0
VisualStudioVersion = 18.0.11205.157
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Expand Down Expand Up @@ -145,6 +145,28 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{4726175B
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Search.Tests", "src\Modules\Search\Tests\MeAjudaAi.Modules.Search.Tests.csproj", "{C7F6B6F4-4F9C-C844-500C-87E3802A6C4B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Catalogs", "Catalogs", "{8B551008-B254-EBAF-1B6D-AB7C420234EA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{B346CC0B-427A-E442-6F5D-8AAE1AB081D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Catalogs.Domain", "src\Modules\Catalogs\Domain\MeAjudaAi.Modules.Catalogs.Domain.csproj", "{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Application", "Application", "{1510B873-F5F8-8A20-05CA-B70BA1F93C8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Catalogs.Application", "src\Modules\Catalogs\Application\MeAjudaAi.Modules.Catalogs.Application.csproj", "{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{8D23D6D3-2B2E-7F09-866F-FA51CC0FC081}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Catalogs.Infrastructure", "src\Modules\Catalogs\Infrastructure\MeAjudaAi.Modules.Catalogs.Infrastructure.csproj", "{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "API", "API", "{A63FE417-CEAA-2A64-637A-6EABC61CE16D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Catalogs.API", "src\Modules\Catalogs\API\MeAjudaAi.Modules.Catalogs.API.csproj", "{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{BDD25844-1435-F5BA-1F9B-EFB3B12C916F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeAjudaAi.Modules.Catalogs.Tests", "src\Modules\Catalogs\Tests\MeAjudaAi.Modules.Catalogs.Tests.csproj", "{2C85E336-66A2-4B4F-845A-DBA2A6520162}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -551,6 +573,66 @@ Global
{C7F6B6F4-4F9C-C844-500C-87E3802A6C4B}.Release|x64.Build.0 = Release|Any CPU
{C7F6B6F4-4F9C-C844-500C-87E3802A6C4B}.Release|x86.ActiveCfg = Release|Any CPU
{C7F6B6F4-4F9C-C844-500C-87E3802A6C4B}.Release|x86.Build.0 = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|x64.ActiveCfg = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|x64.Build.0 = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Debug|x86.Build.0 = Debug|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|Any CPU.Build.0 = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|x64.ActiveCfg = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|x64.Build.0 = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|x86.ActiveCfg = Release|Any CPU
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A}.Release|x86.Build.0 = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|x64.ActiveCfg = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|x64.Build.0 = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|x86.ActiveCfg = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Debug|x86.Build.0 = Debug|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|Any CPU.Build.0 = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|x64.ActiveCfg = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|x64.Build.0 = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|x86.ActiveCfg = Release|Any CPU
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7}.Release|x86.Build.0 = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|x64.ActiveCfg = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|x64.Build.0 = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|x86.ActiveCfg = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Debug|x86.Build.0 = Debug|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|Any CPU.Build.0 = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|x64.ActiveCfg = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|x64.Build.0 = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|x86.ActiveCfg = Release|Any CPU
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7}.Release|x86.Build.0 = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|x64.ActiveCfg = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|x64.Build.0 = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Debug|x86.Build.0 = Debug|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|Any CPU.Build.0 = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|x64.ActiveCfg = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|x64.Build.0 = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|x86.ActiveCfg = Release|Any CPU
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8}.Release|x86.Build.0 = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|x64.ActiveCfg = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|x64.Build.0 = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|x86.ActiveCfg = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Debug|x86.Build.0 = Debug|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|Any CPU.Build.0 = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|x64.ActiveCfg = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|x64.Build.0 = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|x86.ActiveCfg = Release|Any CPU
{2C85E336-66A2-4B4F-845A-DBA2A6520162}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -622,6 +704,17 @@ Global
{0A64D976-2B75-C6F2-9C87-3A780C963FA3} = {9BC7D786-47F5-44BB-88A1-DDEB0022FF23}
{4726175B-331E-49FA-A49A-EE5AC30B495A} = {6FF68FBA-C4AF-48EC-AFE2-E320F2195C79}
{C7F6B6F4-4F9C-C844-500C-87E3802A6C4B} = {4726175B-331E-49FA-A49A-EE5AC30B495A}
{8B551008-B254-EBAF-1B6D-AB7C420234EA} = {D55DFAF4-45A1-4C45-AA54-8CE46F0AFB1F}
{B346CC0B-427A-E442-6F5D-8AAE1AB081D6} = {8B551008-B254-EBAF-1B6D-AB7C420234EA}
{DC1D1ACD-A21E-4BA0-A22D-77450234BD2A} = {B346CC0B-427A-E442-6F5D-8AAE1AB081D6}
{1510B873-F5F8-8A20-05CA-B70BA1F93C8F} = {8B551008-B254-EBAF-1B6D-AB7C420234EA}
{44577491-2FC0-4F52-AF5C-2BC9B323CDB7} = {1510B873-F5F8-8A20-05CA-B70BA1F93C8F}
{8D23D6D3-2B2E-7F09-866F-FA51CC0FC081} = {8B551008-B254-EBAF-1B6D-AB7C420234EA}
{3B6D6C13-1E04-47B9-B44E-36D25DF913C7} = {8D23D6D3-2B2E-7F09-866F-FA51CC0FC081}
{A63FE417-CEAA-2A64-637A-6EABC61CE16D} = {8B551008-B254-EBAF-1B6D-AB7C420234EA}
{30A2D3C4-AF98-40A1-AA90-ED7C5FE090F8} = {A63FE417-CEAA-2A64-637A-6EABC61CE16D}
{BDD25844-1435-F5BA-1F9B-EFB3B12C916F} = {8B551008-B254-EBAF-1B6D-AB7C420234EA}
{2C85E336-66A2-4B4F-845A-DBA2A6520162} = {BDD25844-1435-F5BA-1F9B-EFB3B12C916F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {391B5342-8EC5-4DF0-BCDA-6D73F87E8751}
Expand Down
28 changes: 21 additions & 7 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,29 @@ public class ProvidersContext
- **Qualification**: Qualificações e habilitações profissionais
- **VerificationStatus**: Status de verificação (Pending, Verified, Rejected, etc.)

#### 3. **Services Context** (Futuro)
**Responsabilidade**: Catálogo e gestão de serviços oferecidos
#### 3. **Catalogs Context** (Implementado)
**Responsabilidade**: Catálogo administrativo de categorias e serviços

**Conceitos Planejados**:
- **Service**: Serviço oferecido por prestadores
- **Category**: Categorização hierárquica de serviços
- **Pricing**: Modelos de precificação flexíveis
**Conceitos Implementados**:
- **ServiceCategory**: Categorias hierárquicas de serviços (aggregate root)
- **Service**: Serviços oferecidos vinculados a categorias (aggregate root)
- **DisplayOrder**: Ordenação customizada para apresentação
- **Activation/Deactivation**: Controle de visibilidade no catálogo

**Schema**: `catalogs` (isolado no PostgreSQL)

#### 4. **Location Context** (Implementado)
**Responsabilidade**: Geolocalização e lookup de CEP brasileiro

**Conceitos Implementados**:
- **Cep**: Value object para CEP validado
- **Coordinates**: Latitude/Longitude para geolocalização
- **Address**: Endereço completo com dados estruturados
- **CepLookupService**: Integração com ViaCEP, BrasilAPI, OpenCEP (fallback)

**Observação**: Módulo stateless (sem schema próprio), fornece serviços via Module API

#### 4. **Bookings Context** (Futuro)
#### 5. **Bookings Context** (Futuro)
**Responsabilidade**: Agendamento e execução de serviços

**Conceitos Planejados**:
Expand Down
Loading