import type { UploadedFile, ActivityDataRow, ValidationError } from '../types'; /* ─── 업로드 파일 이력 ─── */ export const mockUploadedFiles: UploadedFile[] = [ { id: 'uf-001', fileName: '서울시_다회용기_202603.csv', organization: '서울특별시', uploadedAt: '2026-04-14 09:32', rows: 1847, validationStatus: 'valid', errors: 0, warnings: 2, fileSize: '2.4 MB', validationStep: 5, matchedMethodology: 'CDM-AMS-III.AJ', totalCo2Reduction: 12.45, }, { id: 'uf-002', fileName: '세종시_자전거출퇴근_202603.csv', organization: '세종특별자치시', uploadedAt: '2026-04-14 08:10', rows: 3240, validationStatus: 'valid', errors: 0, warnings: 0, fileSize: '4.1 MB', validationStep: 5, matchedMethodology: 'CDM-AMS-III.C', totalCo2Reduction: 6.82, }, { id: 'uf-003', fileName: '그린마켓_에코백_202603.xlsx', organization: '(주)그린마켓', uploadedAt: '2026-04-13 14:20', rows: 423, validationStatus: 'validating', errors: 1, warnings: 3, fileSize: '0.8 MB', validationStep: 3, matchedMethodology: 'K-VER-Waste', }, { id: 'uf-004', fileName: '한국에너지공단_절전_202603.xlsx', organization: '한국에너지공단', uploadedAt: '2026-04-13 11:05', rows: 562, validationStatus: 'valid', errors: 0, warnings: 1, fileSize: '1.2 MB', validationStep: 5, matchedMethodology: 'K-VER-Energy', totalCo2Reduction: 4.87, }, { id: 'uf-005', fileName: '한화솔루션_태양광_202603.xlsx', organization: '한화솔루션', uploadedAt: '2026-04-12 16:45', rows: 340, validationStatus: 'invalid', errors: 8, warnings: 5, fileSize: '0.6 MB', validationStep: 2, }, ]; /* ─── 파일별 활동 데이터 행 ─── */ export const mockActivityRows: ActivityDataRow[] = [ // uf-001: 서울시 다회용기 { id: 'ar-001', fileId: 'uf-001', rowNumber: 1, date: '2026-03-01', category: '폐기물', activity: '다회용기 사용 (텀블러)', quantity: 312, unit: '회', co2Reduction: 0.062, status: 'valid', matchedMethodology: 'CDM-AMS-III.AJ' }, { id: 'ar-002', fileId: 'uf-001', rowNumber: 2, date: '2026-03-02', category: '폐기물', activity: '다회용기 사용 (도시락통)', quantity: 287, unit: '회', co2Reduction: 0.057, status: 'valid', matchedMethodology: 'CDM-AMS-III.AJ' }, { id: 'ar-003', fileId: 'uf-001', rowNumber: 3, date: '2026-03-03', category: '폐기물', activity: '다회용기 사용 (텀블러)', quantity: 345, unit: '회', co2Reduction: 0.068, status: 'valid', matchedMethodology: 'CDM-AMS-III.AJ' }, { id: 'ar-004', fileId: 'uf-001', rowNumber: 4, date: '2026-03-04', category: '폐기물', activity: '다회용기 사용 (에코백)', quantity: 198, unit: '회', co2Reduction: 0.039, status: 'valid', matchedMethodology: 'CDM-AMS-III.AJ', note: '시장 행사일 — 참여자 감소' }, { id: 'ar-005', fileId: 'uf-001', rowNumber: 5, date: '2026-03-05', category: '폐기물', activity: '다회용기 사용 (텀블러)', quantity: 401, unit: '회', co2Reduction: 0.079, status: 'valid', matchedMethodology: 'CDM-AMS-III.AJ' }, // uf-002: 세종시 자전거 { id: 'ar-006', fileId: 'uf-002', rowNumber: 1, date: '2026-03-01', category: '교통', activity: '자전거 출퇴근', quantity: 4520, unit: 'km', co2Reduction: 0.633, status: 'valid', matchedMethodology: 'CDM-AMS-III.C' }, { id: 'ar-007', fileId: 'uf-002', rowNumber: 2, date: '2026-03-02', category: '교통', activity: '자전거 출퇴근', quantity: 4380, unit: 'km', co2Reduction: 0.613, status: 'valid', matchedMethodology: 'CDM-AMS-III.C' }, { id: 'ar-008', fileId: 'uf-002', rowNumber: 3, date: '2026-03-03', category: '교통', activity: '자전거 출퇴근', quantity: 3890, unit: 'km', co2Reduction: 0.545, status: 'valid', matchedMethodology: 'CDM-AMS-III.C' }, { id: 'ar-009', fileId: 'uf-002', rowNumber: 4, date: '2026-03-04', category: '교통', activity: '자전거 출퇴근', quantity: 4210, unit: 'km', co2Reduction: 0.589, status: 'valid', matchedMethodology: 'CDM-AMS-III.C' }, { id: 'ar-010', fileId: 'uf-002', rowNumber: 5, date: '2026-03-05', category: '교통', activity: '자전거 출퇴근', quantity: 4640, unit: 'km', co2Reduction: 0.650, status: 'valid', matchedMethodology: 'CDM-AMS-III.C' }, // uf-003: 그린마켓 에코백 { id: 'ar-011', fileId: 'uf-003', rowNumber: 1, date: '2026-03-01', category: '폐기물', activity: '에코백/장바구니 사용', quantity: 85, unit: '회', co2Reduction: 0.017, status: 'valid', matchedMethodology: 'K-VER-Waste' }, { id: 'ar-012', fileId: 'uf-003', rowNumber: 2, date: '2026-03-02', category: '폐기물', activity: '에코백/장바구니 사용', quantity: 92, unit: '회', co2Reduction: 0.018, status: 'valid', matchedMethodology: 'K-VER-Waste' }, { id: 'ar-013', fileId: 'uf-003', rowNumber: 3, date: '2026-03-03', category: '폐기물', activity: '에코백/장바구니 사용', quantity: -5, unit: '회', co2Reduction: 0.0, status: 'invalid', matchedMethodology: 'K-VER-Waste', note: '음수값 — 데이터 오류' }, { id: 'ar-014', fileId: 'uf-003', rowNumber: 4, date: '2026-03-04', category: '폐기물', activity: '에코백/장바구니 사용', quantity: 78, unit: '회', co2Reduction: 0.015, status: 'validating', matchedMethodology: 'K-VER-Waste' }, // uf-004: 한국에너지공단 절전 { id: 'ar-015', fileId: 'uf-004', rowNumber: 1, date: '2026-03-01', category: '에너지', activity: 'LED 교체 절감', quantity: 34200, unit: 'kWh', co2Reduction: 15.72, status: 'valid', matchedMethodology: 'K-VER-Energy' }, { id: 'ar-016', fileId: 'uf-004', rowNumber: 2, date: '2026-03-08', category: '에너지', activity: '대기전력 차단', quantity: 12800, unit: 'kWh', co2Reduction: 5.88, status: 'valid', matchedMethodology: 'K-VER-Energy' }, { id: 'ar-017', fileId: 'uf-004', rowNumber: 3, date: '2026-03-15', category: '에너지', activity: '고효율 기기 교체', quantity: 18500, unit: 'kWh', co2Reduction: 8.50, status: 'valid', matchedMethodology: 'K-VER-Energy' }, // uf-005: 한화솔루션 태양광 (오류 다수) { id: 'ar-018', fileId: 'uf-005', rowNumber: 1, date: '2026-03-01', category: '에너지', activity: '태양광 자가발전', quantity: 5600, unit: 'kWh', co2Reduction: 2.77, status: 'valid', matchedMethodology: 'GS-PWR-v3.2' }, { id: 'ar-019', fileId: 'uf-005', rowNumber: 2, date: '2026-03-02', category: '에너지', activity: '태양광 자가발전', quantity: 0, unit: 'kWh', co2Reduction: 0.0, status: 'invalid', note: '발전량 0 — 센서 오류 의심' }, { id: 'ar-020', fileId: 'uf-005', rowNumber: 3, date: '2026-03-03', category: '에너지', activity: '태양광 자가발전', quantity: -1200, unit: 'kWh', co2Reduction: -0.59, status: 'invalid', note: 'CO₂ 감축량 음수 — 데이터 역전' }, { id: 'ar-021', fileId: 'uf-005', rowNumber: 4, date: '', category: '에너지', activity: '태양광 자가발전', quantity: 4800, unit: 'kWh', co2Reduction: 2.38, status: 'invalid', note: '날짜 누락' }, ]; /* ─── 검증 오류/경고 상세 ─── */ export const mockValidationErrors: ValidationError[] = [ // uf-001 (warnings only) { id: 've-001', fileId: 'uf-001', rowNumber: 847, field: 'quantity', severity: 'warning', message: '수량 이상치: 일일 평균 대비 3σ 초과 (1,205회)', suggestion: '데이터 확인 후 수동 승인 가능' }, { id: 've-002', fileId: 'uf-001', rowNumber: 1203, field: 'date', severity: 'warning', message: '날짜 순서 비정상: 이전 행보다 이전 날짜', suggestion: '행 정렬 후 재업로드 권장' }, // uf-003 (1 error + 3 warnings) { id: 've-003', fileId: 'uf-003', rowNumber: 3, field: 'quantity', severity: 'error', message: '수량 음수값 (-5) — 0 이상이어야 합니다', suggestion: '절대값 또는 올바른 수량으로 수정 필요' }, { id: 've-004', fileId: 'uf-003', rowNumber: 156, field: 'unit', severity: 'warning', message: '단위 불일치: "건" → 표준 단위 "회"로 자동 변환됨', suggestion: '원본 데이터의 단위 표기 통일 권장' }, { id: 've-005', fileId: 'uf-003', rowNumber: 289, field: 'quantity', severity: 'warning', message: '수량 이상치: 일일 평균 대비 2.5σ 초과 (420회)', suggestion: '이벤트 기간 데이터인지 확인' }, { id: 've-006', fileId: 'uf-003', rowNumber: 401, field: 'date', severity: 'warning', message: '주말 데이터: 일요일(03-10) 기록 — 시장 휴무일 확인', suggestion: '특별 영업일이면 무시 가능' }, // uf-004 (1 warning) { id: 've-007', fileId: 'uf-004', rowNumber: 412, field: 'co2Reduction', severity: 'warning', message: '감축량 상한 초과: 단일 행 45.2t — 일반 범위(0.01~20t) 초과', suggestion: '집계 데이터인지 확인, 분할 기록 권장' }, // uf-005 (8 errors + 5 warnings) { id: 've-008', fileId: 'uf-005', rowNumber: 2, field: 'quantity', severity: 'error', message: '발전량 0 kWh — 유효 데이터 아님', suggestion: '센서 로그 확인 후 올바른 값 입력' }, { id: 've-009', fileId: 'uf-005', rowNumber: 3, field: 'quantity', severity: 'error', message: '발전량 음수 (-1,200 kWh) — 물리적 불가', suggestion: '양수값으로 수정 필요' }, { id: 've-010', fileId: 'uf-005', rowNumber: 3, field: 'co2Reduction', severity: 'error', message: 'CO₂ 감축량 음수 (-0.59t) — 양수여야 합니다', suggestion: '수량 수정 후 재산정 필요' }, { id: 've-011', fileId: 'uf-005', rowNumber: 4, field: 'date', severity: 'error', message: '날짜 필드 비어있음 — 필수 항목', suggestion: '정확한 활동 날짜 입력 필요' }, { id: 've-012', fileId: 'uf-005', rowNumber: 15, field: 'quantity', severity: 'error', message: '발전량 999,999 kWh — 물리적 불가 (설비 용량 초과)', suggestion: '소수점 또는 단위 오류 확인' }, { id: 've-013', fileId: 'uf-005', rowNumber: 78, field: 'unit', severity: 'error', message: '단위 "MW" — 지원 단위(kWh) 아님', suggestion: 'kWh 단위로 환산 후 재입력' }, { id: 've-014', fileId: 'uf-005', rowNumber: 120, field: 'activity', severity: 'error', message: '활동 유형 미기재 — 필수 항목', suggestion: '태양광 자가발전 등 활동명 입력' }, { id: 've-015', fileId: 'uf-005', rowNumber: 245, field: 'date', severity: 'error', message: '날짜 형식 오류: "3월5일" → "2026-03-05" 형식 필요', suggestion: 'ISO 8601 (YYYY-MM-DD) 형식으로 수정' }, { id: 've-016', fileId: 'uf-005', rowNumber: 10, field: 'quantity', severity: 'warning', message: '발전량 이상치: 일일 평균 대비 2.8σ 초과', suggestion: '맑은 날 최대 발전량인지 확인' }, { id: 've-017', fileId: 'uf-005', rowNumber: 55, field: 'co2Reduction', severity: 'warning', message: '감축량 0.001t — 최소 유효 단위(0.01t) 미달', suggestion: '집계 기간 확대 또는 행 병합 권장' }, { id: 've-018', fileId: 'uf-005', rowNumber: 180, field: 'category', severity: 'warning', message: '카테고리 "전력" → 표준 카테고리 "에너지"로 자동 매핑됨' }, { id: 've-019', fileId: 'uf-005', rowNumber: 200, field: 'date', severity: 'warning', message: '미래 날짜 (2026-04-15) — 보고 기간(03월) 범위 초과', suggestion: '올바른 기간 데이터인지 확인' }, { id: 've-020', fileId: 'uf-005', rowNumber: 310, field: 'quantity', severity: 'warning', message: '중복 의심: 행 309와 동일 날짜/수량', suggestion: '이중 기록 아닌지 확인' }, ];