File size: 11,756 Bytes
5c98911
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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: '이쀑 기둝 μ•„λ‹Œμ§€ 확인' },
];