# Service Layer `service` adapts HTTP-facing DTOs to business usecases and owns application orchestration. Request/response/filter contracts live in `dto/`; the root package aggregates module provider sets for Wire. Implementations are grouped by the same business modules as `biz` and `data`: | Directory | Responsibility | | --- | --- | | `system/` | authentication, users, authorization, menus, organization, dictionaries, settings, audit, media, announcements, email, versions, exports | | `payment/` | payment orchestration and callback handling | | `integration/` | integration configuration orchestration | | `task/` | scheduled task orchestration | | `dto/` | HTTP request/response contracts | The stateless router-prefix helper lives in `internal/utils/routepath` because both service modules and HTTP middleware use it; it does not depend on a business usecase or DTO. Each module owns its Wire `ProviderSet`; the root package only composes those sets and does not re-export service types or constructors. Within `system/`, larger cross-cutting resources stay in the same package while being split by concern (`audit.go` and its error/log companions, `media.go` and upload companion, and `export.go`/`export_excel.go`). New transport code should import the module package directly when it does not need the compatibility facade.