import { Timestamp } from 'firebase-admin/firestore';

// 문서 상태 (기존 'draft'|'review'|'published' 확장)
export type ReviewDocumentStatus =
  | 'draft'
  | 'in_review'
  | 'approved'
  | 'rejected'
  | 'revision_requested'
  | 'needs_re_review'
  | 'published'; // legacy, treat as approved

export type RiskLevel = 'low' | 'high';

export type ReviewDecision = 'approve' | 'reject' | 'request_revision';

// documents/{docId}/reviews/{reviewId} 서브컬렉션
export interface Review {
  id: string;
  docId: string;
  reviewerId: string;
  reviewerName: string;
  decision: ReviewDecision;
  comment: string;
  riskLevel: RiskLevel;
  createdAt: Timestamp;
}

// documents/{docId}/auditLogs/{logId} 서브컬렉션
export type AuditAction =
  | 'status_change'
  | 'review_submitted'
  | 'lightweight_edit_exempted'
  | 'reviewer_assigned'
  | 'risk_level_assessed';

export interface AuditLogEntry {
  id: string;
  docId: string;
  action: AuditAction;
  actorId: string;
  actorName?: string;
  previousStatus?: ReviewDocumentStatus;
  newStatus?: ReviewDocumentStatus;
  metadata?: Record<string, unknown>;
  createdAt: Timestamp;
}

// 상태 전이 테이블
export const VALID_TRANSITIONS: Record<ReviewDocumentStatus, ReviewDocumentStatus[]> = {
  draft: ['in_review'],
  in_review: ['approved', 'rejected', 'revision_requested'],
  approved: ['needs_re_review'],
  rejected: ['draft'],
  revision_requested: ['draft', 'in_review'],
  needs_re_review: ['in_review'],
  published: ['needs_re_review'],
};

// 고위험 sourceType 목록
export const HIGH_RISK_SOURCE_TYPES = ['court_ruling', 'regulation', 'policy_pdf'] as const;
