feat: add platform notification core

This commit is contained in:
Codex
2026-05-26 18:01:39 +03:00
parent c1ac8b1a10
commit e605e95920
17 changed files with 1865 additions and 5 deletions
+11
View File
@@ -38,6 +38,14 @@ Hosted Authentik login используется только как времен
- backend-интеграция с Authentik API как внутренняя sync/projection;
- audit log админских действий.
`Notification Core` является платформенным владельцем уведомлений:
- принимает факты от Hub, Engine, Operational Core и будущих сервисов;
- хранит `notification_events` как факт произошедшего события;
- хранит `notification_deliveries` как адресную доставку на surface `hub`, `engine` и будущие поверхности;
- хранит server-side read-state, не завязанный на localStorage браузера;
- не использует Authentik DB и не становится владельцем доменных заявок Hub или Engine.
`Task Manager / Plane` остается отдельным приложением:
- собственная БД;
@@ -83,6 +91,7 @@ NODEDC/
```text
launcher_db -> clients, users, memberships, groups, invites, app registry, access model, profiles, audit
authentik_db -> identity/session/OIDC projection from Launcher
notification_db -> notification_events, notification_deliveries, read-state
plane_db -> workspace, projects, tasks, comments, app roles
future_app_db -> доменная логика будущих приложений
```
@@ -91,6 +100,8 @@ future_app_db -> доменная логика будущих приложе
Launcher является источником бизнес-пользователя. Authentik хранит техническую identity, необходимую для SSO, но не заменяет Launcher в администрировании клиентов, команд, доступов и профиля.
Notification recipient определяется как распознанный platform subject. Для email без platform user record delivery не создается: source flow может хранить pending intent/invite, а delivery появляется после регистрации/создания platform identity. Pending access-request user, который уже может войти в Hub и видеть витрину, считается допустимым recipient для `hub` delivery. Surface-specific delivery, например `engine`, создается только когда пользователь имеет доступ к этой surface.
## App standalone rule
Подключаемые приложения не должны становиться невынимаемыми частями NODE.DC.