78 lines
1.4 KiB
TypeScript
78 lines
1.4 KiB
TypeScript
|
|
// Course types
|
||
|
|
export interface Course {
|
||
|
|
id: string;
|
||
|
|
title: string;
|
||
|
|
description: string;
|
||
|
|
category: CourseCategory;
|
||
|
|
difficulty: Difficulty;
|
||
|
|
estimatedHours: number;
|
||
|
|
createdAt: Date;
|
||
|
|
updatedAt: Date;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface Chapter {
|
||
|
|
id: string;
|
||
|
|
courseId: string;
|
||
|
|
title: string;
|
||
|
|
order: number;
|
||
|
|
content: string; // Markdown content
|
||
|
|
createdAt: Date;
|
||
|
|
updatedAt: Date;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface LearningPath {
|
||
|
|
id: string;
|
||
|
|
name: string;
|
||
|
|
description: string;
|
||
|
|
targetAudience: string;
|
||
|
|
pathItems: PathItem[];
|
||
|
|
createdAt: Date;
|
||
|
|
updatedAt: Date;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface PathItem {
|
||
|
|
id: string;
|
||
|
|
pathId: string;
|
||
|
|
courseId: string;
|
||
|
|
chapterId?: string;
|
||
|
|
order: number;
|
||
|
|
type: 'course' | 'chapter';
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface UserProgress {
|
||
|
|
id: string;
|
||
|
|
userId: string;
|
||
|
|
courseId: string;
|
||
|
|
chapterId?: string;
|
||
|
|
completed: boolean;
|
||
|
|
lastAccessed: Date;
|
||
|
|
createdAt: Date;
|
||
|
|
updatedAt: Date;
|
||
|
|
}
|
||
|
|
|
||
|
|
export enum CourseCategory {
|
||
|
|
ML_BASICS = 'ML_BASICS',
|
||
|
|
DEEP_LEARNING = 'DEEP_LEARNING',
|
||
|
|
NLP = 'NLP',
|
||
|
|
LLM = 'LLM',
|
||
|
|
AI_TOOLS = 'AI_TOOLS'
|
||
|
|
}
|
||
|
|
|
||
|
|
export enum Difficulty {
|
||
|
|
BEGINNER = 'BEGINNER',
|
||
|
|
INTERMEDIATE = 'INTERMEDIATE',
|
||
|
|
ADVANCED = 'ADVANCED'
|
||
|
|
}
|
||
|
|
|
||
|
|
// API Request/Response types
|
||
|
|
export interface GeneratePathRequest {
|
||
|
|
interests: CourseCategory[];
|
||
|
|
currentLevel: Difficulty;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface UpdateProgressRequest {
|
||
|
|
courseId: string;
|
||
|
|
chapterId?: string;
|
||
|
|
completed: boolean;
|
||
|
|
}
|