Didactopus/src/didactopus/curriculum.py

22 lines
575 B
Python

from dataclasses import dataclass
import networkx as nx
@dataclass
class RoadmapStage:
title: str
concepts: list[str]
mastery_goal: str
def generate_stages_from_learning_graph(graph: nx.DiGraph) -> list[RoadmapStage]:
sequence = list(nx.topological_sort(graph))
return [
RoadmapStage(
title=f"Stage {i+1}: {concept.split('::')[-1].replace('-', ' ').title()}",
concepts=[concept],
mastery_goal=f"Demonstrate applied understanding of {concept}.",
)
for i, concept in enumerate(sequence)
]