init: 클린 아키텍처 백엔드
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# adapter:outbound:identifier — non-IO infrastructure-capability adapter
|
||||
|
||||
## Registered identity
|
||||
|
||||
- Module ID: `adapter-outbound-identifier`
|
||||
- Gradle path: `:adapter:outbound:identifier`
|
||||
- Focused test: `./gradlew :adapter:outbound:identifier:test --console=plain`
|
||||
- Runtime baseline: Java 21; repository framework baseline: Spring Boot 4.0.0.
|
||||
- Registry SSOT: `.harness/project/modules.yaml`.
|
||||
|
||||
Package root: `dev.caskeleton.adapter.outbound.identifier`.
|
||||
|
||||
Design decisions previously kept as code comments (algorithm SSOT, salt origin,
|
||||
build choices) live in [README.md](README.md).
|
||||
|
||||
## Responsibility
|
||||
|
||||
- Driven adapters for capabilities with **no external-system integration**:
|
||||
identifier generation/encoding today, and clock / crypto/random sources by the
|
||||
same rationale (feature-resource-identifier-contract §4 taxonomy).
|
||||
- `UuidCodec` — UUID handling on top of the JDK `java.util.UUID` (RFC 9562 UUIDv7):
|
||||
`normalize(String)` accepts a case-insensitive canonical UUID and returns the
|
||||
canonical 36-character lowercase form (D3); `toUuid` / `fromUuid` convert between
|
||||
the UUID string and the 128-bit `UUID` stored in the PostgreSQL `uuid` column (D10).
|
||||
- Kept out of `adapter-outbound` on purpose: a UUID id/codec capability is
|
||||
infrastructure, not an outbound integration point, so `adapter-outbound` keeps its
|
||||
documented meaning (external HTTP / messaging / cache / notifications).
|
||||
|
||||
## Allowed
|
||||
|
||||
- `:application-core`, `:domain-core`, `:shared-contract` (Gradle matrix). Currently
|
||||
only `:domain-core` + `com.github.f4b6a3:uuid-creator` are declared in
|
||||
[build.gradle](build.gradle).
|
||||
|
||||
## Forbidden
|
||||
|
||||
- Persistence or web technology (JPA/Hibernate/Spring Data/Spring Web) — ArchUnit
|
||||
`identifier_adapter_does_not_depend_on_other_adapters_or_bootstrap`;
|
||||
`.claude/hooks/ca_import_gate.py` G4 가 쓰기 시점에 차단.
|
||||
- inbound adapters, persistence adapters, other outbound leaves, `app-bootstrap`,
|
||||
`sample-portfolio`.
|
||||
- External IO (HTTP / messaging / cache / DB) — that belongs in `adapter-outbound`.
|
||||
|
||||
## Test
|
||||
|
||||
Pure unit tests, no Spring context (`UuidCodecSpec`).
|
||||
|
||||
```bash
|
||||
cd src
|
||||
./gradlew :adapter:outbound:identifier:test --console=plain
|
||||
```
|
||||
Reference in New Issue
Block a user