/*
 * M15 공사/장치 옥션 시연용 샘플 데이터.
 * ★ M15 역경매 엔진은 백엔드 실구현 완료(auctionApi 실배선). 본 파일은 오프라인/미연결 강등 시 시연용 폴백 데이터일 뿐이며 정상 경로는 실 API 를 소비한다.
 *   존재하지 않는 엔드포인트를 fetch 하지 않으며, 모든 화면 상단에 "샘플 데이터" 배지를 노출한다.
 *   응찰/낙찰 등 뮤테이션은 로컬 상태 데모로만 처리한다.
 * 보안 도메인 규칙(UI 반영):
 *   - 등록업체만 응찰(초대·응찰 게이트) — verified 플래그.
 *   - 봉인 입찰: 마감 전 경쟁 견적 금액 비공개, 현재 최저가(공개 벤치마크)와 내 견적만 노출.
 *   - 낙찰 비교(SCR-29)는 마감 후 발주자 뷰 — 전 견적 공개.
 */

export type AuctionCategory =
  | '전시디자인설치'
  | '구조물 임대'
  | '전기/조명'
  | '영상/음향'
  | '네트워크';

export type AuctionType = '역경매' | 'RFQ';
export type AuctionStatus = '진행중' | '마감' | '정산중';
export type AwardCriteria = 'lowest' | 'comprehensive';

/** M2~M5 AI 자료 첨부 종류. */
export type MaterialKind = 'layout' | 'design' | 'boq' | 'aiimage';

export interface AuctionSummary {
  id: string;
  title: string;
  category: AuctionCategory;
  type: AuctionType;
  status: AuctionStatus;
  round: number;
  dday: number; // 음수면 마감 경과
  bidderCount: number;
  lowestPrice: number | null; // 공개 최저가(역경매 벤치마크)
  awardedCompany: string | null; // 정산중/마감 낙찰 업체
  finalPrice: number | null;
  materials: MaterialKind[];
  accent: 'primary' | 'secondary' | 'tertiary';
}

export interface RankRow {
  rank: number;
  /** 익명 표기(업체 A/B/C). 실명은 마감 후 발주자 뷰에서만. */
  alias: string;
  price: number;
  isMe: boolean;
  isLowest: boolean;
}

export interface QuoteColumn {
  alias: string;
  subtitle: string; // 종합 1위 등
  recommended: boolean;
  totalPrice: number;
  priceDeltaPct: number; // 최저가 대비 %
  isLowestPrice: boolean;
  leadDays: number;
  isShortestLead: boolean;
  reputation: number; // 5점 만점
  score: number; // 종합 점수
}

export const MATERIAL_LABEL: Record<MaterialKind, string> = {
  layout: '배치',
  design: '설계',
  boq: '물량서',
  aiimage: '예상이미지',
};

/** SCR-26 옥션 목록. */
export const SAMPLE_AUCTIONS: AuctionSummary[] = [
  {
    id: 'AUC-2026-0102',
    title: 'A-102 독립부스 시공',
    category: '전시디자인설치',
    type: '역경매',
    status: '진행중',
    round: 2,
    dday: 2,
    bidderCount: 5,
    lowestPrice: 8_400_000,
    awardedCompany: null,
    finalPrice: null,
    materials: ['layout', 'design', 'boq', 'aiimage'],
    accent: 'primary',
  },
  {
    id: 'AUC-2026-0405',
    title: 'B-405 트러스 구조물 설치',
    category: '구조물 임대',
    type: '역경매',
    status: '진행중',
    round: 1,
    dday: 1,
    bidderCount: 12,
    lowestPrice: 4_250_000,
    awardedCompany: null,
    finalPrice: null,
    materials: ['layout', 'boq'],
    accent: 'secondary',
  },
  {
    id: 'AUC-2026-0210',
    title: 'C-10 공용 통로 조명 공사',
    category: '전기/조명',
    type: '역경매',
    status: '정산중',
    round: 1,
    dday: -3,
    bidderCount: 7,
    lowestPrice: 12_000_000,
    awardedCompany: '(주)테크라이팅',
    finalPrice: 12_000_000,
    materials: ['layout', 'boq'],
    accent: 'tertiary',
  },
  {
    id: 'AUC-2026-0311',
    title: '제2전시장 외벽 래핑',
    category: '영상/음향',
    type: 'RFQ',
    status: '진행중',
    round: 1,
    dday: 6,
    bidderCount: 3,
    lowestPrice: 6_800_000,
    awardedCompany: null,
    finalPrice: null,
    materials: ['design', 'aiimage'],
    accent: 'secondary',
  },
];

/** SCR-26 개설 패널 — 초대 후보 업체(등록 여부 게이트). */
export const INVITABLE_COMPANIES: { name: string; verified: boolean }[] = [
  { name: '(주)에이치디자인', verified: true },
  { name: '(주)공간창작', verified: true },
  { name: 'K-전시산업', verified: true },
  { name: '한빛부스시공', verified: false }, // 미등록 — 초대 불가
];

/** SCR-27 실시간 순위(봉인 — 최저가·내 견적만 금액 공개). */
export const SAMPLE_RANKS: RankRow[] = [
  { rank: 1, alias: '업체 A', price: 8_400_000, isMe: false, isLowest: true },
  { rank: 2, alias: '나의 응찰 (ME)', price: 8_700_000, isMe: true, isLowest: false },
  { rank: 3, alias: '업체 C', price: 8_900_000, isMe: false, isLowest: false },
  { rank: 4, alias: '업체 D', price: 9_050_000, isMe: false, isLowest: false },
  { rank: 5, alias: '업체 E', price: 9_400_000, isMe: false, isLowest: false },
];

/** SCR-27 자료 뷰어 탭. */
export const REFERENCE_TABS: { kind: MaterialKind; label: string }[] = [
  { kind: 'layout', label: '배치도' },
  { kind: 'design', label: '부스 설계안' },
  { kind: 'boq', label: '물량서(BOQ)' },
  { kind: 'aiimage', label: '예상 이미지' },
];

/** SCR-29 낙찰 비교표(마감 후 발주자 뷰 — 전 견적 공개). */
export const SAMPLE_QUOTES: QuoteColumn[] = [
  {
    alias: '업체 A',
    subtitle: '종합 1위 (추천)',
    recommended: true,
    totalPrice: 8_400_000,
    priceDeltaPct: 0,
    isLowestPrice: true,
    leadDays: 12,
    isShortestLead: false,
    reputation: 4.8,
    score: 92.4,
  },
  {
    alias: '업체 B',
    subtitle: '종합 2위',
    recommended: false,
    totalPrice: 8_700_000,
    priceDeltaPct: 3.5,
    isLowestPrice: false,
    leadDays: 10,
    isShortestLead: true,
    reputation: 4.6,
    score: 89.1,
  },
  {
    alias: '업체 C',
    subtitle: '종합 3위',
    recommended: false,
    totalPrice: 8_900_000,
    priceDeltaPct: 5.9,
    isLowestPrice: false,
    leadDays: 14,
    isShortestLead: false,
    reputation: 4.2,
    score: 84.7,
  },
];

/** SCR-29 리스크 분석 바(AI 시뮬레이션). */
export const RISK_BARS: { label: string; pct: number; tone: 'success' | 'ai' | 'warn' }[] = [
  { label: '시공 지연 확률', pct: 2.4, tone: 'success' },
  { label: '예산 초과 위험', pct: 12.8, tone: 'ai' },
  { label: '자재 품질 신뢰도', pct: 96.5, tone: 'success' },
];

/** 원 금액 → ₩ 구분자 포맷. */
export function formatWon(v: number): string {
  return `₩${v.toLocaleString('ko-KR')}`;
}
