25 lines
1.3 KiB
Python
25 lines
1.3 KiB
Python
from pathlib import Path
|
|
import json, yaml
|
|
from .review_schema import ReviewSession
|
|
|
|
def export_review_state_json(session: ReviewSession, path):
|
|
Path(path).write_text(session.model_dump_json(indent=2), encoding="utf-8")
|
|
|
|
def export_promoted_pack(session: ReviewSession, outdir):
|
|
outdir = Path(outdir); outdir.mkdir(parents=True, exist_ok=True)
|
|
promoted = dict(session.draft_pack.pack)
|
|
promoted["version"] = str(promoted.get("version", "0.1.0-draft")).replace("-draft","-reviewed")
|
|
promoted["curation"] = {"reviewer": session.reviewer, "ledger_entries": len(session.ledger)}
|
|
concepts = []
|
|
for concept in session.draft_pack.concepts:
|
|
if concept.status == "rejected":
|
|
continue
|
|
concepts.append({
|
|
"id": concept.concept_id, "title": concept.title, "description": concept.description,
|
|
"prerequisites": concept.prerequisites, "mastery_signals": concept.mastery_signals,
|
|
"status": concept.status, "notes": concept.notes, "mastery_profile": {}
|
|
})
|
|
(outdir/"pack.yaml").write_text(yaml.safe_dump(promoted, sort_keys=False), encoding="utf-8")
|
|
(outdir/"concepts.yaml").write_text(yaml.safe_dump({"concepts": concepts}, sort_keys=False), encoding="utf-8")
|
|
(outdir/"review_ledger.json").write_text(json.dumps(session.model_dump(), indent=2), encoding="utf-8")
|