feat: jpa, messaging, notification, mongo, graphql 어댑터터 구현체 추가

This commit is contained in:
DongHyeonka
2026-08-15 13:01:58 +09:00
parent ac874e49e6
commit 2f5d2fc219
909 changed files with 62510 additions and 6354 deletions
+161
View File
@@ -4244,3 +4244,164 @@ env_keys:
validation: positive_int_bounded
compatibility_impact: behavior-change
required_test: async-contract:executor-queue-bounded
# === Notification delivery platform (NTF-025 — configuration surface) ===
# The tree exists in application.yml as ca-skeleton.notification.platform, disabled by
# default. Every key carries an inline default so a deployment that leaves the platform off
# supplies nothing. Reference: docs/notification/configuration.md.
- name: APP_NOTIFICATION_PLATFORM_ENABLED
# source: NTF-025 — master switch for the notification delivery platform; false binds nothing at all
type: boolean
default: false
allowed_values: [true, false]
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: boolean
compatibility_impact: behavior-change
required_test: adapter-contract:notification-platform-disabled-safe
- name: APP_NOTIFICATION_PLATFORM_MODE
# source: NTF-025 — SERVING refuses to start without a working provider; ACCEPT_ONLY stores and does not dispatch
type: enum
default: SERVING
allowed_values: [SERVING, ACCEPT_ONLY]
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: enum_of_notification_platform_mode
compatibility_impact: behavior-change
required_test: adapter-contract:notification-platform-mode
- name: APP_NOTIFICATION_PLATFORM_CLAIM_BATCH_SIZE
# source: NTF-025 — how many recipient deliveries one scheduler pass claims; 1..1000, refused outside that at binding
type: integer
default: 50
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: integer_1_to_1000
compatibility_impact: behavior-change
required_test: adapter-contract:notification-dispatch-bounds
- name: APP_NOTIFICATION_PLATFORM_LEASE_DURATION
# source: NTF-025 — must outlast a provider call plus its timeout, or a live worker's delivery is claimed by a second one
type: duration
default: 2m
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: positive_duration
compatibility_impact: behavior-change
required_test: adapter-contract:notification-lease-fencing
- name: APP_NOTIFICATION_PLATFORM_POLL_INTERVAL
# source: NTF-025 — how often the scheduler asks for work when the last pass claimed nothing
type: duration
default: 1s
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: positive_duration
compatibility_impact: behavior-change
required_test: adapter-contract:notification-dispatch-bounds
- name: APP_NOTIFICATION_PLATFORM_MAX_CONCURRENCY
# source: NTF-025 — ceiling on in-flight provider calls across the whole process
type: integer
default: 64
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: positive_integer
compatibility_impact: behavior-change
required_test: adapter-contract:notification-dispatch-bounds
- name: APP_NOTIFICATION_PLATFORM_MAX_ADDITIONAL_ATTEMPTS
# source: NTF-025 — retries after the first attempt; 0 means one attempt and no retry
type: integer
default: 4
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: non_negative_integer
compatibility_impact: behavior-change
required_test: adapter-contract:notification-retry-policy
- name: APP_NOTIFICATION_PLATFORM_MAX_QUEUE_AGE
# source: NTF-025 — after this, a queued delivery expires rather than being sent late
type: duration
default: 24h
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: positive_duration
compatibility_impact: behavior-change
required_test: adapter-contract:notification-expiry
- name: APP_NOTIFICATION_PLATFORM_ALLOW_AMBIGUOUS_FALLBACK
# source: NTF-025 — an ambiguous attempt reached the provider with an unread outcome; falling back risks a duplicate send
type: boolean
default: false
allowed_values: [true, false]
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: boolean
compatibility_impact: behavior-change
required_test: adapter-contract:notification-ambiguity
- name: APP_NOTIFICATION_PLATFORM_CALLBACKS_ENABLED
# source: NTF-025 — whether the platform exposes provider callback endpoints
type: boolean
default: false
allowed_values: [true, false]
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: boolean
compatibility_impact: behavior-change
required_test: adapter-contract:notification-callback-ingestion
- name: APP_NOTIFICATION_PLATFORM_CALLBACK_MAX_BODY_BYTES
# source: NTF-025 — ceiling is 65508 = ciphertext column minus AES-GCM nonce and tag; larger is refused at binding
type: integer
default: 65508
allowed_values: null
classification: public-config
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: integer_1_to_65508
compatibility_impact: behavior-change
required_test: adapter-contract:notification-callback-body-bound
- name: APP_NOTIFICATION_PLATFORM_CALLBACK_REPLAY_SKEW
# source: NTF-025 — how far a callback timestamp may differ from local time before it is treated as a replay
type: duration
default: 5m
allowed_values: null
classification: security-relevant
required: false
reload_policy: restart-only
owner_branch: worktree-notification-platform
validation: positive_duration
compatibility_impact: behavior-change
required_test: adapter-contract:notification-callback-replay