/** Dialogs: record a human finding; acknowledge unknowns to complete a stage. */ import { useState } from 'react'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import MenuItem from '@mui/material/MenuItem'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import type { FindingStatus, Severity } from '../../types/rca'; export function RecordFindingDialog({ open, stageTitle, onClose, onSubmit }: { open: boolean; stageTitle: string; onClose: () => void; onSubmit: (f: { title: string; status: FindingStatus; severity: Severity; detail: string }) => void; }) { const [title, setTitle] = useState(''); const [status, setStatus] = useState('MISMATCH'); const [severity, setSeverity] = useState('WARN'); const [detail, setDetail] = useState(''); const reset = () => { setTitle(''); setStatus('MISMATCH'); setSeverity('WARN'); setDetail(''); }; return ( Record finding — {stageTitle} setTitle(e.target.value)} placeholder="e.g. Confirmed with infra team: feature pipeline fp-2.5 deployed online only" /> setStatus(e.target.value as FindingStatus)}> {(['PASS', 'MISMATCH', 'UNKNOWN'] as FindingStatus[]).map((s) => {s})} setSeverity(e.target.value as Severity)}> {(['INFO', 'WARN', 'CRITICAL'] as Severity[]).map((s) => {s})} setDetail(e.target.value)} /> ); } export function AcknowledgeUnknownsDialog({ open, stageTitle, unknownTitles, onClose, onAcknowledge }: { open: boolean; stageTitle: string; unknownTitles: string[]; onClose: () => void; onAcknowledge: (note: string) => void; }) { const [note, setNote] = useState(''); return ( Proceed with unknowns? — {stageTitle} This stage has critical UNKNOWN findings. Completing it without resolving them will be permanently recorded on the investigation ("proceeding with unknowns") and will appear in the final report. {unknownTitles.map((t) => ( ? {t} ))} setNote(e.target.value)} /> ); }