krona-staff/docs/ARCHITECTURE.md
2026-09-10 23:29:28 +07:00

22 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Архитектура
Krona Staff — deployable modular service с hexagonal boundaries. HTTP и workers вызывают application layer; domain contexts зависят только от ports; adapters обеспечивают standalone либо platform integration; PostgreSQL, Redis/BullMQ и object storage находятся на внешнем краю.
```text
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](adr/ADR-001-technology-and-runtime-modes.md).