Programme added
This commit is contained in:
@@ -16,7 +16,7 @@ from .auth import (
|
||||
verify_password,
|
||||
)
|
||||
from .curriculum import QUESTIONS
|
||||
from .program_content import decode_asset_token, get_lesson, list_lessons_for_grade, normalize_grade
|
||||
from .program_content import decode_asset_token, get_content_status, get_lesson, list_lessons_for_grade, normalize_grade
|
||||
from .services import (
|
||||
build_llm_reply,
|
||||
ensure_student_mastery,
|
||||
@@ -193,6 +193,13 @@ def list_program_lessons(
|
||||
return schemas.ProgramLessonListResponse(lessons=list_lessons_for_grade(grade))
|
||||
|
||||
|
||||
@app.get("/program/status")
|
||||
def get_program_status(
|
||||
current_user: models.User = Depends(require_roles("teacher", "maintenance")),
|
||||
):
|
||||
return get_content_status()
|
||||
|
||||
|
||||
@app.get("/program/assets/{asset_token}")
|
||||
def get_program_asset(
|
||||
asset_token: str,
|
||||
|
||||
@@ -8,12 +8,14 @@ from urllib.parse import quote
|
||||
def default_content_root() -> Path:
|
||||
current = Path(__file__).resolve()
|
||||
candidates = [
|
||||
parent / "Programme" / "contenus_pedagogiques"
|
||||
for parent in current.parents
|
||||
current.parents[1] / "contenus_pedagogiques",
|
||||
current.parents[1] / "Programme" / "contenus_pedagogiques",
|
||||
]
|
||||
candidates.extend(parent / "Programme" / "contenus_pedagogiques" for parent in current.parents)
|
||||
candidates.extend(
|
||||
[
|
||||
Path("/programme/contenus_pedagogiques"),
|
||||
Path("/app/contenus_pedagogiques"),
|
||||
Path("/app/Programme/contenus_pedagogiques"),
|
||||
]
|
||||
)
|
||||
@@ -134,5 +136,18 @@ def list_lessons_for_grade(grade: str) -> list[dict]:
|
||||
return [lesson for lesson in list_lessons() if lesson["grade"] == normalized]
|
||||
|
||||
|
||||
def get_content_status() -> dict:
|
||||
lessons = list_lessons()
|
||||
by_grade: dict[str, int] = {}
|
||||
for lesson in lessons:
|
||||
by_grade[lesson["grade"]] = by_grade.get(lesson["grade"], 0) + 1
|
||||
return {
|
||||
"content_root": str(CONTENT_ROOT),
|
||||
"content_root_exists": CONTENT_ROOT.exists(),
|
||||
"lesson_count": len(lessons),
|
||||
"lessons_by_grade": by_grade,
|
||||
}
|
||||
|
||||
|
||||
def get_lesson(lesson_id: str) -> dict | None:
|
||||
return next((lesson for lesson in list_lessons() if lesson["id"] == lesson_id), None)
|
||||
|
||||
Reference in New Issue
Block a user