Files
schulos/docs/PRD_STATUS_REPORT.md
T
Z User 9ce58565ba i18n: Fix 44 additional hardcoded English strings across 15 files
Fixed files:
- competitions-view.tsx: 10 strings (placeholders, labels)
- subjects-view.tsx: 11 strings (types, actions, placeholders)
- professional-calendar.tsx: 5 strings (event type labels)
- illness-reporting-view.tsx: 3 strings (status badges)
- student-detail-view.tsx: 4 strings (health form placeholders)
- data-table.tsx: 2 strings (search, empty state)
- compliance-wizard.tsx: 2 strings (name, state)
- settings-view.tsx: 1 string (Skipped)
- competence-flower-view.tsx: 1 string (Active)
- disciplinary-view.tsx: 1 string (All clear)
- district-management-view.tsx: 1 string (No recent activity)
- competitions-view.tsx: 1 string (Stock)
- ui/pagination.tsx: 3 strings (Previous, Next, More pages)
- ui/breadcrumb.tsx: 1 string (More)
- ui/carousel.tsx: 2 strings (Previous/Next slide)
- ui/sidebar.tsx: 1 string (Sidebar title)

Total: 44 hardcoded English strings replaced with German
2026-09-06 15:11:41 +00:00

469 lines
13 KiB
Markdown
Executable File

# SchulOS PRD Status Report
**Date:** August 1, 2026
**PRD Reference:** SchulOS Consolidated PRD (12 Modules: A-L)
**Current Status:** 25-30% implementation complete
---
## Executive Summary
The project has **partial implementations** across multiple modules but lacks cohesive architecture. Today's consolidation work unified Calendar and Grading, but **10 of 12 modules require completion** to achieve PRD compliance.
**Current Coverage:**
- Module A (Academics): ~40% (competency grids, grading logic, basic assessments)
- Module C (Communication): ~30% (basic messaging, no escalation policy engine)
- Module D (Learning Hub): ~20% (videos/exercises exist, not fully integrated)
- Module F (Exam Mode): ~35% (exam-proctoring view exists, not kiosk-compliant)
- Module K (Identity): ~50% (auth exists, but not full GDPR integration)
- **Modules B, E, G, H, I, J, L:** ~0% (missing or stub implementations)
---
## Module-by-Module Status
### Module A: Academics Core
**Status:** Partially Complete (40%)
**Implemented:**
- Competency templates and grids
- Learning progress entry logging
- Assessment creation and results
- Grading scheme configuration
- Grade computation logic
- Report generation framework
**Missing:**
- Mastery level definitions (DB schema incomplete)
- Competence Flower radar chart (partially done)
- Report PDF generation (framework exists, not production-ready)
- Clone-on-customize for templates
- Phrase-template system for narrative text
- Full audit trail for grade changes
**Database Tables:** 18 of 22 required tables exist
**Action Needed:** Complete mastery levels, implement report PDF, audit logging
---
### Module B: Signage & Emergency Alerts
**Status:** Stub Only (5%)
**Exists:**
- Basic signage admin view in `/admin/signage`
- Minimal DB schema
**Missing:**
- TV/kiosk display client
- Emergency alert system
- Priority-based rotation logic
- Real-time alert override
- Integration with notifications (Module H)
- Counseling notice privacy (§11.3)
- Fire/lockdown/medical/general emergency types
**Database Tables:** 2 of 4 required tables
**Action Needed:** Build complete signage system from scratch
---
### Module C: Communication & Escalation
**Status:** Partially Complete (30%)
**Implemented:**
- Direct messaging
- Class announcements
- Social room stubs
- Basic message threading
- DisciplinaryRecord model
**Missing:**
- **Escalation policy engine** (this is the heart of Module C)
- No `EscalationPolicy` table
- No business-day calculator
- No "eligible to escalate at" computation
- No escalation workflow UI
- Parent→Admin escalation gate
- Student→Counseling escalation
- Class-hours messaging lock
- Auto-unlock at period end (requires Module I integration)
- Moderation workflow for social rooms
**Database Tables:** 5 of 8 required tables
**Action Needed:** Implement full escalation policy engine, add missing DB tables
---
### Module D: Learning Hub
**Status:** Partially Complete (20%)
**Implemented:**
- Video upload and playback (stub)
- Exercise/worksheet storage
- Basic vocabulary trainer
- Learning game framework
**Missing:**
- Curriculum alignment tracking
- Content tagging system
- Search/discovery interface
- Student progress tracking
- AI content authoring (partial, in Module E)
- Assignment linking to competencies
- Bulk content import
**Database Tables:** 4 of 8 required tables
**Action Needed:** Complete content tagging, search, progress tracking
---
### Module E: AI Tutor
**Status:** Partially Complete (20%)
**Implemented:**
- AI chat widget (basic)
- AI test generation
- Grading audit trail
**Missing:**
- Homework-help context (knows class, student, competencies)
- Hint-only policy enforcement
- Lockout during exams (requires Module F integration)
- Content translation for ELL students
- Structured hint progression
- RAG (retrieval-augmented generation) for Learning Hub content
- Token usage tracking/limits
**Action Needed:** Build context-aware homework help, integrate with Module F
---
### Module F: Exam Mode
**Status:** Partially Complete (35%)
**Implemented:**
- Exam proctoring admin view
- Session monitor component
- Basic warning system
- Live teacher controls
**Missing:**
- **Full-screen browser lockdown** (critical feature)
- Kiosk mode enforcement (no URL bar, no task switcher)
- Timer display
- Copy-paste detection and blocking
- Tab-switch detection and warning
- Screenshot/screenshare blocking
- Answer auto-submission on time limit
- Incident logging per exam
- Student warning escalation
- Integration with Module F's `Assessment.deliveryMode = DIGITAL_LOCKED`
**Database Tables:** 3 of 5 required tables
**Action Needed:** Implement browser lockdown using Web API, complete kiosk flow
---
### Module G: Digital Notebook
**Status:** Stub Only (10%)
**Exists:**
- Drawing canvas component
- Basic drawing view
- Drawing storage (no persistence)
**Missing:**
- **Per-subject notebook per student** (core data model)
- Stylus/pen support with pressure sensitivity
- Teacher pen annotation on tests/homework
- Student search within notebook
- Export to PDF
- Syncing across devices
- Offline-first architecture
- Web Worker for stroke processing (needs Comlink integration)
- Notebook versioning and history
**Database Tables:** 1 of 4 required tables
**Action Needed:** Rebuild from scratch with proper data model, stylus support
---
### Module H: Notifications
**Status:** Missing (0%)
**Exists:**
- Announcements model (repurposed as partial notification)
- Basic read/unread tracking
**Missing:**
- **Unified notification hub** (single place all alerts render)
- Push notifications (Web Push API)
- In-app notification center
- Notification templates (data-driven)
- Delivery channels (in-app, push, email)
- Read/unread state management
- Notification grouping and threading
- Urgent override for safety alerts
- Integration points with all other modules
**Database Tables:** 3 of 5 required tables
**Action Needed:** Build complete notification system from scratch
---
### Module I: Calendar
**Status:** Recently Consolidated (70% → Target 100%)
**Implemented (Today):**
- Unified calendar component (`professional-calendar.tsx`)
- Calendar manager utilities (`calendar-manager.ts`)
- Multi-view support (month, week, agenda, day)
- Drag-and-drop rescheduling
- Event type system
**Missing:**
- School holiday/weekend calendar
- Recurring event engine (basic pattern exists)
- Business-day calculator (needed by Module C)
- Period/class-hour mapping
- Calendar synchronization with other modules
- Holiday/term seed data
- Integration with exam scheduling
**Action Needed:** Add school calendar configuration, complete recurring logic
---
### Module J: Dashboard Widgets
**Status:** Partially Complete (40%)
**Implemented:**
- Dashboard customization stubs
- Widget library framework
- Drag-and-drop widget arrangement (partial)
**Missing:**
- **Unified widget system** pulling from other modules
- Read-only widgets (no data mutation from dashboard)
- Widget state persistence
- Mobile-responsive grid layout
- Widget refresh/cache strategy
- Performance optimization (lazy loading)
- Custom widget builder for admins
- Widget context (class, student, time-period)
**Database Tables:** 2 of 4 required tables
**Action Needed:** Complete widget architecture, integrate with Modules A-I
---
### Module K: Identity & Admin
**Status:** Partially Complete (50%)
**Implemented:**
- User model and authentication
- Role-based access control (basic)
- School/ClassGroup/Student entities
- Audit logging (basic)
- Admin dashboard stubs
**Missing:**
- Role permission matrix (fine-grained access control)
- School Year entity and lifecycle
- Multi-school support
- Teacher role variants (HOMEROOM_TEACHER, SUBJECT_TEACHER)
- Parent-student relationship tracking
- Staff co-determination features (Personalrat/union access)
- Audit log completeness (many actions not logged)
- Session management hardening
- TOTP 2FA implementation
- Rate limiting on login
**Database Tables:** 8 of 10 required tables
**Action Needed:** Complete role/permission matrix, implement 2FA, enhance audit
---
### Module L: Legal & Data Protection
**Status:** Missing (0% - Critical!)
**Exists:**
- Compliance wizard (stub)
- DPIA gating (minimal)
- Compliance overview admin view
**Missing:**
- **GDPR/DSGVO compliance engine** (gate feature availability)
- Data retention policies
- Data export on request
- Right to erasure with cascading deletes
- RoPA (Records of Processing Activities) generation
- Consent management per feature/module
- Data controller vs processor tracking
- Student privacy shield (data not exposed to unauthorized parties)
- Parent rights management
- DPO (Datenschutzbeauftragter) audit interface
- Breach notification workflow
- Data classification (sensitive, PII, etc.)
- Access logging per sensitive data access
- Integration with all modules (gates their availability)
**Database Tables:** 5 of 8 required tables
**Action Needed:** Build full GDPR compliance engine (non-negotiable before go-live)
---
## Architecture Issues
### 1. Missing API Standardization
- 264 API routes with inconsistent response formats
- No centralized error handling
- No request validation middleware
- No audit logging middleware
**Fix:** Create `src/lib/api-response.ts` + middleware stack
### 2. Duplicate Fetching Logic
- 160+ duplicate fetch patterns using useEffect
- No caching/deduplication
**Fix:** Universal `useApi()` hook (already planned, needs completion)
### 3. No Module Isolation
- Components reach across module boundaries
- Shared state management not centralized
- Tight coupling between modules
**Fix:** Enforce module APIs, move to facade pattern
### 4. Database Schema Gaps
- Missing 15+ tables required by PRD
- No enforcement of soft deletes
- No audit trail on sensitive changes
- No data classification column
**Fix:** Complete Prisma schema, add migrations
---
## Critical Path to PRD Compliance
### Phase 1: Foundation (Weeks 1-2) — Must Complete
- [x] Consolidate Calendar (done today)
- [x] Consolidate Grading (done today)
- [ ] Standardize API responses
- [ ] Build useApi hook
- [ ] Complete Module A (Academics)
- [ ] Complete Module K (Identity)
**Blocking:** Everything else depends on solid foundation
### Phase 2: Core Modules (Weeks 3-5) — Must Complete
- [ ] Module C (Escalation engine — requires Module I calendar)
- [ ] Module F (Exam Mode lockdown)
- [ ] Module H (Notifications hub)
- [ ] Module L (GDPR compliance engine)
**Blocking:** Legal go-live
### Phase 3: Extended Modules (Weeks 6-8) — Nice-to-Have
- [ ] Module B (Signage)
- [ ] Module D (Learning Hub)
- [ ] Module E (AI Tutor)
- [ ] Module G (Digital Notebook)
- [ ] Module J (Dashboard Widgets)
---
## Missing Database Tables (Urgent)
```sql
-- Module A (Academics)
MasteryLevelDefinition
ClassCompetencyAssignment (clone-on-customize)
-- Module C (Communication)
EscalationPolicy
EscalationRequest
SocialRoom
ClassMessagingLock
-- Module H (Notifications)
Notification
NotificationTemplate
NotificationDeliveryLog
-- Module I (Calendar)
SchoolCalendar (holidays, terms)
ClassPeriod (class hours)
RecurrencePattern
-- Module J (Widgets)
DashboardWidget
UserWidgetPreference
-- Module L (Legal)
DataRetentionPolicy
ConsentRecord
DataExportRequest
AccessLog
```
---
## Code Metrics
| Metric | Current | Target | Gap |
|--------|---------|--------|-----|
| Components | 72 | 45 | Consolidate 27 |
| API Routes | 264 | 80 | Reduce 184 |
| LOC (total) | ~200K | ~140K | Remove 60K |
| Test Coverage | <50% | 70% | Add 2000+ tests |
| Module Completeness | 30% | 100% | Build 70% |
---
## Immediate Next Steps (This Week)
1. **Review and Test** today's consolidation (calendar + grading)
2. **Create API standardization** layer
3. **Complete Module A** (Academics) — add missing DB tables, complete report PDF
4. **Start Module L** (Legal/GDPR) — non-negotiable for German school deployment
5. **Add 12 missing DB tables** and migrations
---
## Risk Assessment
| Risk | Severity | Mitigation |
|------|----------|-----------|
| PRD too large | HIGH | Use phase approach, prioritize Modules A, C, F, K, L first |
| GDPR non-compliance (Module L) | CRITICAL | Start Module L week 1, not week 8 |
| Browser lockdown impossible | MEDIUM | Use Electron or Kiosk.js if Web API insufficient |
| SQLite outgrown | LOW | Keep ORM abstract, upgrade path to Postgres ready |
| Missing data model | HIGH | Complete all 50 DB tables before coding UI |
---
## Conclusion
SchulOS is **30% complete** against the 12-module PRD. Today's consolidation work (Calendar + Grading) was critical infrastructure. To reach **100% PRD compliance in 8 weeks**, the team must:
1. Complete Module A (Academics Core) — foundation for all others
2. Build Module L (GDPR compliance) in parallel — non-negotiable
3. Implement Modules C, F, H in weeks 3-5
4. Defer Modules B, D, E, G, J to weeks 6-8 if resources tight
**Critical blocker:** Module L must be complete before go-live at any German school.