feat/ai-roadmap
Arik Chakma 3 weeks ago
parent 18fbd03cde
commit fe4125dcb4
  1. 4
      src/components/GenerateCourse/AICourseRoadmapView.tsx
  2. 15
      src/lib/ai.ts

@ -84,13 +84,13 @@ export function AICourseRoadmapView(props: AICourseRoadmapViewProps) {
setIsGenerating(true);
await readAIRoadmapStream(reader, {
onStream: async (result) => {
const roadmap = generateAICourseRoadmapStructure(result);
const roadmap = generateAICourseRoadmapStructure(result, true);
const { nodes, edges } = generateAIRoadmapFromText(roadmap);
const svg = await renderFlowJSON({ nodes, edges });
replaceChildren(containerEl.current!, svg);
},
onStreamEnd: async (result) => {
const roadmap = generateAICourseRoadmapStructure(result);
const roadmap = generateAICourseRoadmapStructure(result, true);
const { nodes, edges } = generateAIRoadmapFromText(roadmap);
const svg = await renderFlowJSON({ nodes, edges });
replaceChildren(containerEl.current!, svg);

@ -238,7 +238,10 @@ export type Title = {
export type ResultItem = Title | Topic | Label;
export function generateAICourseRoadmapStructure(data: string): ResultItem[] {
export function generateAICourseRoadmapStructure(
data: string,
isCourseRoadmap: boolean = false,
): ResultItem[] {
const lines = data.split('\n');
const result: ResultItem[] = [];
@ -274,9 +277,13 @@ export function generateAICourseRoadmapStructure(data: string): ResultItem[] {
} else if (line.startsWith('-')) {
if (currentTopic) {
const label = line.replace('-', '').trim();
const currentTopicIndex = result.length - 1;
const subTopicIndex = currentTopic.children?.length || 0;
const id = `${currentTopicIndex}-${subTopicIndex}`;
let id = nanoid();
if (isCourseRoadmap) {
const currentTopicIndex = result.length - 1;
const subTopicIndex = currentTopic.children?.length || 0;
id = `${currentTopicIndex}-${subTopicIndex}`;
}
currentTopic.children?.push({
id,

Loading…
Cancel
Save