feat: integrate client requirements (courseware, communication, notifications, FAQ, enhanced approvals)
Add 4 new Odoo modules coverage: - encoach_courseware: chapters, materials, chapter progress, AI workbench - encoach_communication: discussion boards, announcements, messaging - encoach_notification: notification engine, rules, preferences - encoach_faq: FAQ categories and items, role-filtered Frontend changes: - 4 new type files (courseware, communication, notification, faq) - 5 new service files (courseware, communication, notification, faq, plagiarism) - 4 new hook files (useCourseware, useCommunication, useNotifications, useFaq) - 15 new page components (teacher: chapters, chapter detail, AI workbench, discussions, announcements; student: chapter view, discussions, announcements, messages, journey; admin: FAQ manager, notification rules, approval config; public: official exam access, FAQ page) - Updated App.tsx routing with all new pages - Updated TeacherLayout, StudentLayout, AdminLmsLayout sidebars SRS updates: - ENCOACH_UNIFIED_SRS.md: added Parts IX-XI (Courseware, Communication, Notifications/FAQ), enhanced exam management (exercise vs exam, official access modes), enhanced approval workflows (timed stages, escalation, bypass), enhanced assignments (late submissions, extensions), plagiarism detection. Total modules: 35 - ENCOACH_ODOO19_BACKEND_SRS.md v2.0: added sections 26-31, updated module inventory to 35, updated endpoint count to 280+, added enhanced assignment models with late submission/extension support Made-with: Cursor
This commit is contained in:
@@ -153,4 +153,20 @@ export const queryKeys = {
|
||||
list: (params?: Record<string, unknown>) => ["subject-registrations", "list", params] as const,
|
||||
available: (params?: Record<string, unknown>) => ["subject-registrations", "available", params] as const,
|
||||
},
|
||||
chapters: (courseId: number) => ["chapters", "list", courseId] as const,
|
||||
chapter: (id: number) => ["chapters", "detail", id] as const,
|
||||
chapterMaterials: (chapterId: number) => ["chapter-materials", chapterId] as const,
|
||||
chapterProgress: (chapterId: number) => ["chapter-progress", chapterId] as const,
|
||||
discussionBoards: (params?: Record<string, unknown>) => ["discussion-boards", params] as const,
|
||||
posts: (boardId: number, params?: Record<string, unknown>) => ["posts", boardId, params] as const,
|
||||
announcements: (params?: Record<string, unknown>) => ["announcements", params] as const,
|
||||
messages: (params?: Record<string, unknown>) => ["messages", params] as const,
|
||||
sentMessages: (params?: Record<string, unknown>) => ["messages", "sent", params] as const,
|
||||
unreadMessages: ["messages", "unread-count"] as const,
|
||||
notifications: (params?: Record<string, unknown>) => ["notifications", params] as const,
|
||||
unreadNotifications: ["notifications", "unread-count"] as const,
|
||||
notificationRules: ["notification-rules"] as const,
|
||||
notificationPreferences: ["notification-preferences"] as const,
|
||||
faqCategories: (audience?: string) => ["faq", "categories", audience] as const,
|
||||
faqItems: (params?: Record<string, unknown>) => ["faq", "items", params] as const,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user