C4 Components
Customers
C4Component
title Component Diagram for Customers Module
Container_Boundary(customers, "Customers Module") {
Component(customers_http, "HTTP Handler", "chi handler", "Recebe requisições HTTP e converte entrada/saída")
Component(customers_uc, "Customer Use Cases", "Application", "Orquestra criação, atualização e inativação de clientes")
Component(customers_domain, "Customer Aggregate", "Domain", "Aplica invariantes de negócio do cliente")
Component(customers_repo_port, "Customer Repository Port", "Domain Port", "Contrato para persistência de clientes")
Component(customers_repo_adapter, "PostgreSQL Repository", "Infrastructure", "Implementa persistência de clientes em PostgreSQL")
Component(customers_event_publisher, "Internal Event Publisher", "Application Service", "Publica eventos internos do módulo")
}
ContainerDb(main_db, "PostgreSQL", "Relational Database", "Armazena dados do sistema")
Rel(customers_http, customers_uc, "Invoca")
Rel(customers_uc, customers_domain, "Executa regras")
Rel(customers_uc, customers_repo_port, "Usa")
Rel(customers_repo_adapter, customers_repo_port, "Implementa")
Rel(customers_repo_adapter, main_db, "Lê/Escreve", "SQL")
Rel(customers_uc, customers_event_publisher, "Publica eventos")
Responsabilidades
- HTTP Handler: valida entrada de borda, chama casos de uso e monta resposta.
- Customer Use Cases: coordena fluxos como criar, atualizar e inativar cliente.
- Customer Aggregate: garante unicidade lógica, consistência cadastral e regras centrais do domínio.
- Customer Repository Port: define o contrato de persistência sem vazar detalhes de infraestrutura.
- PostgreSQL Repository: persiste e recupera clientes.
- Internal Event Publisher: emite eventos internos como
CustomerCreated e CustomerInactivated.
Invoices
C4Component
title Component Diagram for Invoices Module
Container_Boundary(invoices, "Invoices Module") {
Component(invoices_http, "HTTP Handler", "chi handler", "Recebe requisições de emissão e consulta de faturas")
Component(invoices_uc, "Invoice Use Cases", "Application", "Orquestra emissão, listagem e atualização de status")
Component(invoices_domain, "Invoice Aggregate", "Domain", "Aplica invariantes de valor, vencimento e transição de status")
Component(invoices_repo_port, "Invoice Repository Port", "Domain Port", "Contrato para persistência de faturas")
Component(invoices_repo_adapter, "PostgreSQL Repository", "Infrastructure", "Implementa persistência de faturas em PostgreSQL")
Component(invoices_event_publisher, "Internal Event Publisher", "Application Service", "Publica eventos internos do ciclo de fatura")
}
ContainerDb(main_db, "PostgreSQL", "Relational Database", "Armazena dados do sistema")
Rel(invoices_http, invoices_uc, "Invoca")
Rel(invoices_uc, invoices_domain, "Executa regras")
Rel(invoices_uc, invoices_repo_port, "Usa")
Rel(invoices_repo_adapter, invoices_repo_port, "Implementa")
Rel(invoices_repo_adapter, main_db, "Lê/Escreve", "SQL")
Rel(invoices_uc, invoices_event_publisher, "Publica eventos")
Responsabilidades
- HTTP Handler: valida entrada de borda, chama casos de uso e monta resposta.
- Customer Use Cases: coordena fluxos como criar, atualizar e inativar cliente.
- Customer Aggregate: garante unicidade lógica, consistência cadastral e regras centrais do domínio.
- Customer Repository Port: define o contrato de persistência sem vazar detalhes de infraestrutura.
- PostgreSQL Repository: persiste e recupera clientes.
- Internal Event Publisher: emite eventos internos como
CustomerCreated e CustomerInactivated.
Billing