2.2 KiB
Архитектура
Krona Staff — deployable modular service с hexagonal boundaries. HTTP и будущие workers вызывают application layer; domain contexts зависят только от ports; adapters обеспечивают standalone либо platform integration; PostgreSQL находится на внешнем краю. Redis/BullMQ и object storage подключаются только после появления подтверждённых сценариев.
HTTP / worker -> application -> bounded-context contracts
|-> Identity / Authorization / Settings / Files / Notifications / EventBus ports
|-> tenant-scoped PostgreSQL repositories + transactional outbox
ports <- standalone adapters | platform-gateway adapters
Текущий код — foundation: health/version, конфигурация, ULID/event contracts, tenant transaction и инфраструктурная миграция. Доменный API отсутствует намеренно.
Контексты
Предусмотрены границы: Employee Directory, Employment, Organization Structure, Scheduling, Time & Attendance, Leave, Payroll, Documents, Audit/Reporting. Между ними допускаются команды/события и стабильные ID, но не общий «богатый» HR-aggregate. Пакеты будут созданы по мере утверждения требований, чтобы пустые интерфейсы не стали ложным контрактом.
Данные и надёжность
Shared database/shared schema, tenant_id в каждой tenant-таблице, application scope и forced RLS. Запись доменного состояния и outbox должна быть одной транзакцией. Inbox (tenant_id,event_id) подавляет повторную обработку; HTTP idempotency хранит request hash и результат. Сервис stateless, поэтому scale-out позже не требует переноса локальных файлов.
См. ADR-001.