3.2 KiB
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
generateSoundRecipestub 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_catalogalso has school-scoped, org-scoped, and shared/global content types. Truly-global personality and classroom-timer catalogs live in frontend constants, not DB rows.
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, andguardian; contacts are discovered through linked students, and conversations are separated by staff/guardian/student context viadirect_messages. content_catalogreads go through authenticatedGET /api/content-catalog/read/:typeand 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:
UserAdminPagealready manages user accounts and uses the seededroles/permissionslists as selectors. New roles/permissions are code-seeded, not UI-created.Organizations & Locationsmanages existing organizations, schools, campuses, and classes in the current scope; new organizations are created only through Owner creation onUsers.- Parent Communication uses
direct_messages; the generatedmessages/message_recipientstables 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.