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:
@@ -504,14 +504,20 @@ export type DecisionLesson = {
|
||||
category: "style" | "structure" | "lexicon" | "tabular" | "general";
|
||||
// "panel:deepseek+gemini" — the two-judge style panel; (string) keeps it open
|
||||
// to future panel sources without a type break.
|
||||
source: "manual" | "curator" | "chair" | "style_analyzer" | (string & {});
|
||||
// "synthesis" — a super-lesson merging overlapping lessons (#158/INV-LRN8);
|
||||
// "panel:deepseek+gemini" — the two-judge style panel; (string) keeps it open.
|
||||
source: "manual" | "curator" | "chair" | "style_analyzer" | "synthesis" | (string & {});
|
||||
// review gate (INV-LRN1/G10): only "approved" lessons flow to the writer.
|
||||
// Panel-written lessons start as "proposed" and wait for the chair here.
|
||||
// "superseded" — a source lesson merged into a synthesis (#158); kept as
|
||||
// provenance, no longer fed to the writer.
|
||||
// (applied_to_skill removed — LRN-1/INV-IA3: review_status is the single gate.)
|
||||
review_status: "proposed" | "approved" | "rejected";
|
||||
review_status: "proposed" | "approved" | "rejected" | "superseded";
|
||||
created_by: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
// #158/INV-LRN8: ids of the source lessons a 'synthesis' row merged (provenance).
|
||||
synthesized_from?: string[];
|
||||
};
|
||||
|
||||
export type LessonReviewStatus = DecisionLesson["review_status"];
|
||||
|
||||
Reference in New Issue
Block a user