import type { Decision } from '@/lib/types' export function decisionStatus(decision: Decision) { return decision.status === 'decided' || decision.status === 'pending_verification' ? (decision.response ? 'pending_review' : 'open') : decision.status } export const decisionLabels = { open: '等待决定', pending_review: '等待检查', accepted: '已接受,待落实', completed: '已完成', needs_reconsideration: '需要重新考虑' } export type DecisionDraft = { option: string | null; comment: string; revision: number; conflict: boolean; attempt?: { signature: string; key: string }; sending?: boolean } export type ChatDraft = { text: string; sending: boolean; error: string; attempt?: { text: string; key: string } } export function writable(decision: Decision) { return ['open', 'needs_reconsideration'].includes(decisionStatus(decision)) } export function submissionBody(decision: Decision, draft: DecisionDraft) { const revision = decision.revision if (!Number.isInteger(revision) || (revision ?? 0) < 1) return null if (!writable(decision) || draft.sending || draft.conflict || draft.revision !== revision) return null if (draft.option && !decision.options.some(option => option.id === draft.option)) return null if (!draft.option && !draft.comment.trim()) return null return { expected_revision: revision, option_id: draft.option, comment: draft.comment } } export function confirmDraft(decision: Decision, draft: DecisionDraft) { draft.revision = decision.revision ?? 1; draft.conflict = false; draft.option = null; draft.attempt = undefined }