feat: תיקון-ציטוט בדלי-החילוץ + קישור-לתור מדף-פרט (#133 follow-ups)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
אושר ב-Claude Design (כרטיס 20-halacha-followups). א׳ תיקון-חילוץ אמיתי ל-quote_unverified: - `update_halacha` מקבל `supporting_quote`; בעדכונו מריץ `_verify_quote` הקיים מול `case_law.full_text` השמור (דטרמיניסטי — בלי OCR/LLM מחדש, feedback_no_reocr_retrofit) ומסנכרן `quote_verified` + מוסיף/מסיר את הדגל `quote_unverified`. יו"ר שמדביק את הנוסח הנכון מהמקור → הדגל נמחק → ההלכה עוזבת את דלי-החילוץ. `HalachaUpdateRequest`+handler מעבירים את השדה; `HalachaPatch` + מצב-העריכה ב-HalachaCard כוללים textarea-ציטוט (נשלח רק כששונה) + hint. ב׳ דף-פרט פסיקה — ביטול כפילות-המשטח: - הלכה pending ב-`ExtractedHalachotSection` מציגה קישור "עבור לתור הלכות" במקום כפתורי אשר/דחה כפולים (שער-אישור יחיד, INV-IA/G10). - `/precedents` Tabs הפך נשלט וקורא `?tab=review` (post-mount, בלי hydration-mismatch) כדי שהקישור ינחת על טאב-התור. display-only ל-G10 (האימות מסנכרן מטא-איכות, לא review_status). ולידציה: py_compile + tsc + eslint נקיים. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
"use client";
|
||||
|
||||
import { useMemo, useState } from "react";
|
||||
import { Check, X, RotateCcw } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { Check, X, RotateCcw, ArrowLeft } from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Button } from "@/components/ui/button";
|
||||
@@ -250,23 +251,19 @@ export function ExtractedHalachotSection({ halachot }: { halachot: Halacha[] })
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
{/* #133 — the chair approves in the unified queue, not here:
|
||||
a pending halacha links to the queue instead of duplicating the
|
||||
approve/reject card (single gate, INV-IA/G10). */}
|
||||
{h.review_status === "pending_review" && (
|
||||
<>
|
||||
<Button size="sm" variant="ghost" disabled={update.isPending}
|
||||
onClick={() => {
|
||||
if (window.confirm("לדחות הלכה זו?")) setStatus(h, "rejected");
|
||||
}}
|
||||
className="text-danger hover:text-danger hover:bg-danger-bg">
|
||||
<X className="w-3.5 h-3.5 me-1" />
|
||||
דחה
|
||||
</Button>
|
||||
<Button size="sm" disabled={update.isPending}
|
||||
onClick={() => setStatus(h, "approved")}
|
||||
className="bg-gold text-navy hover:bg-gold-deep">
|
||||
<Check className="w-3.5 h-3.5 me-1" />
|
||||
אשר
|
||||
</Button>
|
||||
</>
|
||||
<Link
|
||||
href="/precedents?tab=review"
|
||||
className="inline-flex items-center gap-1.5 text-[0.78rem] font-semibold
|
||||
text-gold-deep bg-gold-wash border border-gold/40 rounded-md px-3 py-1.5
|
||||
hover:bg-gold-wash/70 transition-colors"
|
||||
>
|
||||
עבור לתור הלכות
|
||||
<ArrowLeft className="w-3.5 h-3.5" />
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user