feat: Round 22 - Exam calendar, parent portal, teacher grading, deep styling
- Exam calendar integration: Plan Exam button, countdown badges, exam filter - Parent portal: Children overview, illness approvals, grades, attendance - Teacher grading: Stylus annotation, AI review, bulk grading mode - Deep schlaukopf crawling: AI-powered content extraction from schlaukopf.de - Dashboard: Upcoming exams, AI tips section - Settings: AI provider config, virtual character toggle, management tabs - Layout: Favorites section, notification badges on sidebar items - Auth: VICE_PRINCIPAL demo account, feature showcase - Attendance: Illness report integration - Assessments: Plan exam button, AI test generation - Fixed schoolId auto-detect in counseling and disciplinary APIs - Added MessageSquare import to settings-view - 150+ new i18n keys
This commit is contained in:
1 parent
f1776932d7
commit
2f266a2143
21 files changed
+3140
-34
No files matched your search
+22
-1
@@ -560,6 +560,27 @@ export function createGradingScheme(data: {
|
||||
return apiPost<GradingScheme>('/api/grading', data);
|
||||
}
|
||||
|
||||
/* ── Grading Annotations ─────────────────────────────────────────── */
|
||||
|
||||
export interface GradingAnnotation {
|
||||
id: string;
|
||||
annotationData: string;
|
||||
annotationImage: string | null;
|
||||
}
|
||||
|
||||
export function fetchGradingAnnotation(assessmentId: string, studentId: string): Promise<{ annotation: GradingAnnotation | null }> {
|
||||
return apiGet(`/api/grading/annotate?assessmentId=${assessmentId}&studentId=${studentId}`);
|
||||
}
|
||||
|
||||
export function saveGradingAnnotation(data: {
|
||||
assessmentId: string;
|
||||
studentId: string;
|
||||
annotationData: string;
|
||||
annotationImage?: string;
|
||||
}): Promise<{ annotation: GradingAnnotation }> {
|
||||
return apiPost('/api/grading/annotate', data);
|
||||
}
|
||||
|
||||
/* ── Reports ──────────────────────────────────────────────────────── */
|
||||
|
||||
export interface ReportSection {
|
||||
@@ -1648,7 +1669,7 @@ export function fetchCalendarEvents(schoolId: string, month: string): Promise<Ca
|
||||
|
||||
/* ── Calendar Events (Custom) ──────────────────────────────────── */
|
||||
|
||||
export type CalendarEventItemType = 'assessment' | 'lesson' | 'reminder';
|
||||
export type CalendarEventItemType = 'assessment' | 'lesson' | 'reminder' | 'exam';
|
||||
|
||||
export interface RecurrencePattern {
|
||||
type: 'none' | 'daily' | 'weekly' | 'monthly' | 'yearly';
|
||||
|
||||
Reference in new issue
Block a user