48 lines
3.3 KiB
Markdown
48 lines
3.3 KiB
Markdown
# Backlog — Open Gaps and Remaining Work
|
|
|
|
Persistent list of deferred work and known gaps so they are not forgotten. **This is the single source for open/remaining work**. Completed phase history belongs in git, not in this file.
|
|
|
|
## Current Open Work
|
|
|
|
- ⛔ **Design-gated:** generic-CRUD management UIs for the remaining entities, including the SIS-kept academic groups.
|
|
- **Audio library:** wire the binary upload affordance; replace the local `generateSoundRecipe` stub with a real AI generation call when credentials/product decision are available.
|
|
|
|
## Scope Context
|
|
|
|
Hierarchy: **Global → Organization → School → Campus → Class**, plus
|
|
**External** for student/guardian accounts.
|
|
|
|
Scope tiers → roles:
|
|
|
|
- Global: `super_admin`, `system_admin`
|
|
- Organization: `owner`, `superintendent`
|
|
- School: `principal`, `registrar`
|
|
- Campus: `director`, `office_manager`
|
|
- Class: `teacher`, `support_staff`
|
|
|
|
Two scoping modes coexist:
|
|
|
|
- **Aggregate / subtree:** statistics and attendance roll up through class → campus → school → org.
|
|
- **Owned content:** FRAME, policy documents, walkthrough content, and per-tenant catalog rows are owned by the current tenant. Class-scoped users read/write campus-level content; class scope is reserved for roster/attendance-style data.
|
|
- **Catalog-specific scope:** `content_catalog` also has school-scoped, org-scoped, and shared/global content types. Organization-owned quiz content and classroom support strategies live in DB rows; product-static personality directory and classroom-timer catalogs live in frontend constants.
|
|
|
|
Important page/content rules:
|
|
|
|
- Global users have platform/business pages at their own scope and use tenant drill/switching for support/onboarding.
|
|
- Leadership Dashboard shows current-scope data for owner/superintendent/principal/registrar/director; platform admins use drill-down for tenant-scoped views.
|
|
- Class roles read campus-level educational content; class scope is used for attendance and My Class.
|
|
- Messages / Parent Communication is limited to `office_manager`, `teacher`, and `guardian`; contacts are discovered through linked students, and conversations are separated by staff/guardian/student context via `direct_messages`.
|
|
- `content_catalog` reads go through authenticated `GET /api/content-catalog/read/:type` and are scoped by content type.
|
|
|
|
## Generic CRUD UI Wiring
|
|
|
|
The backend exposes generated CRUD for these kept entities, but full list/edit/delete frontend management UI is still design-gated. This is separate from the existing workflow UIs:
|
|
|
|
- `UserAdminPage` already manages user accounts and uses the seeded `roles` / `permissions` lists as selectors. New roles/permissions are code-seeded, not UI-created.
|
|
- `Organizations & Locations` manages existing organizations, schools, campuses, and classes in the current scope; new organizations are created only through Owner creation on `Users`.
|
|
- Parent Communication uses `direct_messages`; the generated `messages` / `message_recipients` tables are legacy/reserved CRUD slices, not the current guardian/staff chat implementation.
|
|
|
|
Entities still awaiting generic management UI:
|
|
|
|
`academic_years`, `grades`, `subjects`, `class_enrollments`, `class_subjects`, `assessments`, `assessment_results`, `attendance_sessions`, `attendance_records`, `timetables`, `timetable_periods`, `messages`, `message_recipients`.
|