Programme added

This commit is contained in:
2026-05-01 20:44:46 +02:00
parent bfd367f3d8
commit 40bdf95e99
71 changed files with 3561 additions and 3 deletions

View File

@@ -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,

View File

@@ -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)