feat(ui): synthesis/superseded badges + merge provenance in lessons-tab (#162)
עוצב ואושר דרך שער-העיצוב (Claude Design 12c-training-lessons.html). - lessons-tab: SOURCE_BADGE['synthesis']="סינתזה" (navy מלא) · REVIEW_BADGE['superseded']="מוזג" (אפור-מעומעם, לא נדחה); שורות superseded מעומעמות (opacity). - provenance: לקח-על מציג "⤷ מוזג מ-N לקחים · דחייה תשחזר אותם". - backend: list_decision_lessons + _lesson_to_json מחזירים synthesized_from; training.ts DecisionLesson — 'synthesis'/'superseded' ל-unions + synthesized_from?: string[]. הבאדג'ים היו מוגנים-fallback קודם (ללא קריסה) — כעת מתויגים נכון. closes #162. בדיקות: py_compile ✓ · leak-guard ✓ · tsc --noEmit ✓. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1544,6 +1544,9 @@ def _lesson_to_json(row: dict) -> dict:
|
||||
"created_by": row.get("created_by", ""),
|
||||
"created_at": row["created_at"].isoformat() if row.get("created_at") else "",
|
||||
"updated_at": row["updated_at"].isoformat() if row.get("updated_at") else "",
|
||||
# #158/INV-LRN8: source lessons a 'synthesis' super-lesson merged (provenance);
|
||||
# empty for non-synthesis rows. Lets the UI show "מוזג מ-N לקחים".
|
||||
"synthesized_from": [str(x) for x in (row.get("synthesized_from") or [])],
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user