2.7 KiB
AGENTS.md
Назначение
Krona Staff — автономно развёртываемый блок Krona Business Platform, а не отдельный конкурирующий продукт. Предметные функции добавляются только по подтверждённым требованиям владельца.
Неизменяемые инварианты
- Core владеет Tenant, User, Role, Permission, SSO, platform settings, files, notifications и event bus. Staff владеет Employee и HR-доменом.
User != Employee. - Все tenant-данные имеют
tenant_id; запросы идут через tenant-scoped transaction; новые таблицы включают и форсируют PostgreSQL RLS. Добавляйте тест утечки между двумя tenant. - ID — ULID в
VARCHAR(26). Деньги —BIGINTminor units + ISO 4217 currency. Временные метки — UTC; локальная интерпретация — IANA timezone tenant. - Межмодульные вызовы только через публичные порты/platform gateway или versioned events. Прямые импорты и запись в чужие таблицы запрещены.
- События имеют version, tenant, subject, actor, correlation/causation; публикация через transactional outbox; consumer через inbox и идемпотентность.
- Локальный диск не является постоянным хранилищем. Вложения — через
FileStoragePort/platform Files/S3. - Standalone adapters совместимы, мигрируемы и отключаемы; они не становятся вторым постоянным source of truth.
Перед изменением
Прочитайте docs/109-PLATFORM-BLOCK-CONTRACT.md и связанные актуальные контракты в ochenstarik/business-platform. Если контракт изменился, сначала синхронизируйте manifest/ADR и тесты. Не копируйте архитектуру Omnichannel механически.
Проверка
Запускайте npm run check. Для изменений БД дополнительно проверьте up/down на чистой PostgreSQL и tenant isolation. Не объявляйте Docker/restore/CI проверенными, если соответствующая среда реально не запускалась.
Файлы UTF-8 без BOM, LF. Коммиты небольшие, объясняют причину. Ветка задачи: codex/bootstrap-platform-foundation или отдельная ASCII feature-ветка.