feat(citation-verify): frontend "אימות פסיקה" tab in the decision editor (#154)
Frontend half of the citation-verification panel (backend in #323), as the agreed third tab in /compose — matching the approved X17 mockup 24-citation-verification: - lib/api/citation-verification.ts: hand-written types + useCitationVerification query + useVerifyCitation mutation (POST verify, invalidates the view). - components/compose/citation-verification-panel.tsx: per legal argument → supporting corpus precedents with the cited_by authority chips (אומץ ×N / אובחן ×N), the exact supporting_quote, ✓ מאמת / ✗ לא רלוונטי verify actions, a per-citation chair-note field, and the per-issue 📡 radar (unlinked digests, pointer-only). Summary strip + INV-AH/INV-DIG1 reminders. - compose page: third tab "אימות פסיקה" alongside עורך הבלוקים / עמדות וטענות. No api:types regen needed (endpoints return assembled dicts; types hand-written per the lib/api convention). tsc + eslint clean. Invariants: INV-AH (writer cites only verified), INV-DIG1 (digest never cited), G2 (consumes the one backend view). Visual matches the gate-approved mockup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import { Button } from "@/components/ui/button";
|
||||
import { Skeleton } from "@/components/ui/skeleton";
|
||||
import { SubsectionCard } from "@/components/compose/subsection-card";
|
||||
import { PrecedentsSection } from "@/components/compose/precedents-section";
|
||||
import { CitationVerificationPanel } from "@/components/compose/citation-verification-panel";
|
||||
import { DecisionBlocksPanel } from "@/components/cases/decision-blocks-panel";
|
||||
import { Markdown } from "@/components/ui/markdown";
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||
@@ -276,6 +277,7 @@ export default function ComposePage({
|
||||
<TabsList className="bg-rule-soft/60">
|
||||
<TabsTrigger value="blocks">עורך הבלוקים</TabsTrigger>
|
||||
<TabsTrigger value="positions">עמדות וטענות</TabsTrigger>
|
||||
<TabsTrigger value="verify">אימות פסיקה</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
{/* Tab 1 — the 12-block decision editor (reused DecisionBlocksPanel) */}
|
||||
@@ -283,6 +285,11 @@ export default function ComposePage({
|
||||
<DecisionBlocksPanel caseNumber={caseNumber} />
|
||||
</TabsContent>
|
||||
|
||||
{/* Tab 3 — citation verification: per-argument support + verify gate (#154) */}
|
||||
<TabsContent value="verify" className="mt-5">
|
||||
<CitationVerificationPanel caseNumber={caseNumber} />
|
||||
</TabsContent>
|
||||
|
||||
{/* Tab 2 — chair positions on the analyst's threshold-claims + issues */}
|
||||
<TabsContent value="positions" className="mt-5">
|
||||
{analysis.isPending ? (
|
||||
|
||||
Reference in New Issue
Block a user