Notifications
Nothing here — you're all caught up.
Project Gaia — static mockup in Filament v3 idiom. No backend. Laravel database notifications rendered by Filament's notifications panel; which events reach you is set per-user in Profile settings → Notifications.
Field manifest — Notifications
| Field | Filament component | Type | Source | FK / table + engine notes |
|---|---|---|---|---|
| Notification row | notifications list item | record | notifications | notifications table (type, notifiable_id = user, data json, read_at); Laravel database notification channel. |
| Category chip | Badge | enum | data.category | data.category enum — approval · gmp · production · sell · stock; drives chip colour + Approvals/GMP filter tabs. |
| Mark all read | Action (header) | bulk | read_at | read_at = now() bulk update on all unread notifiable rows. |
| Bell badge | topbar icon | count | read_at IS NULL | unread count via Filament $user->databaseNotifications(); red dot when > 0. |
| Routing prefs | CheckboxList | json | users.notification_prefs | profile.html checkbox card — approvals waiting · GMP-critical maintenance overdue · machine down / production blocked · daily summary. |
Engine: events (below-floor price, receipt-blocked, QA disposition due, MO milestones, stocktake variance) fan out via Laravel notifications on the database channel; Filament's notifications panel renders them and the bell polls the unread count. Per-user routing filters which events land (Profile settings → Notifications).