| import type { Program, EventVerification } from '../types'; |
|
|
| |
| |
| |
|
|
| export const mockProgramAliases: Record<string, string> = { |
| |
| '6bc3e55e-55fc-42c6-9b65-046a090c46c8': 'wando-model-001', |
| }; |
|
|
| export function resolveMockProgramId(id?: string | null) { |
| if (!id) return id; |
| return mockProgramAliases[id] ?? id; |
| } |
|
|
| export function findMockProgramById(id?: string | null) { |
| const resolvedId = resolveMockProgramId(id); |
| return mockPrograms.find((program) => program.id === resolvedId); |
| } |
|
|
| const ploggingVerifications: EventVerification[] = [ |
| { |
| id: 'ev-001', |
| participantName: '๊น๋ฏผ์', |
| participantTeam: '๋ชจ๋น๋ฆฌํฐํ๋ซํผํ', |
| verifiedAt: '2026-04-14 09:15', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 3.2kg, ์ฌ์ง 2์ฅ', |
| status: 'approved', |
| confidenceScore: 98, |
| co2ContributionKg: 1.73, |
| wasteKg: 3.2, |
| locationName: '์ฑ๋จ์ ํ๊ต๊ณต์', |
| reviewer: 'AI ์๋ + ๊น์ฃผ์', |
| }, |
| { |
| id: 'ev-002', |
| participantName: '์ด์งํ', |
| participantTeam: 'UX์ค', |
| verifiedAt: '2026-04-14 08:42', |
| type: 'weight', |
| value: '์๊ฑฐ๋ฐฑ 1.8kg', |
| status: 'approved', |
| confidenceScore: 95, |
| co2ContributionKg: 0.97, |
| wasteKg: 1.8, |
| locationName: '์ฑ๋จ์ ํ์ฒ ์ฐ์ฑ
๋ก', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-003', |
| participantName: '๋ฐ์คํธ', |
| participantTeam: '์์ ๊ธฐ์ ํ', |
| verifiedAt: '2026-04-14 10:05', |
| type: 'photo', |
| value: '์๊ฑฐ ์ /ํ ์ฌ์ง 4์ฅ', |
| status: 'pending', |
| confidenceScore: 72, |
| co2ContributionKg: 2.16, |
| wasteKg: 4.0, |
| locationName: '์ฑ๋จ์ ์จ๋๊ณต์', |
| fraudFlags: ['low_confidence'], |
| }, |
| { |
| id: 'ev-004', |
| participantName: '์ต์์ฐ', |
| participantTeam: '๋ชจ๋น๋ฆฌํฐํ๋ซํผํ', |
| verifiedAt: '2026-04-13 16:30', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 4.5kg, ์ฌ์ง 3์ฅ', |
| status: 'approved', |
| confidenceScore: 99, |
| co2ContributionKg: 2.43, |
| wasteKg: 4.5, |
| locationName: '์ฑ๋จ์ ํ๊ต๊ณต์', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-005', |
| participantName: '์ ํ์
', |
| participantTeam: '๊ฒฐ์ ํ', |
| verifiedAt: '2026-04-13 15:20', |
| type: 'photo', |
| value: '์ฌ์ง ๋ถ๋ช
ํ โ ์ฌ์ดฌ์ ์์ฒญ', |
| status: 'rejected', |
| confidenceScore: 34, |
| fraudFlags: ['low_confidence', 'metadata_stripped'], |
| reviewer: '๊น์ฃผ์', |
| rejectionReason: '์ฌ์ง EXIF ๋ฉํ๋ฐ์ดํฐ ๋๋ฝ ๋ฐ ํ๋
๋ถ๊ฐ', |
| }, |
| { |
| id: 'ev-006', |
| participantName: '๊น๋ฏผ์', |
| participantTeam: '๋ชจ๋น๋ฆฌํฐํ๋ซํผํ', |
| verifiedAt: '2026-04-13 11:00', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 2.8kg, ์ฌ์ง 2์ฅ', |
| status: 'approved', |
| confidenceScore: 96, |
| co2ContributionKg: 1.51, |
| wasteKg: 2.8, |
| locationName: '์ฑ๋จ์ ํ์ฒ ์ฐ์ฑ
๋ก', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-007', |
| participantName: 'ํ์ง์ฐ', |
| participantTeam: '์ง๋ํ๋ซํผํ', |
| verifiedAt: '2026-04-13 10:45', |
| type: 'weight', |
| value: '์๊ฑฐ๋ฐฑ 22.5kg (์ด์์น)', |
| status: 'pending', |
| confidenceScore: 41, |
| fraudFlags: ['weight_outlier'], |
| wasteKg: 22.5, |
| locationName: '์ฑ๋จ์ ํ๊ต๊ณต์', |
| }, |
| { |
| id: 'ev-008', |
| participantName: '๋ฐ์ ์ฐ', |
| participantTeam: 'UX์ค', |
| verifiedAt: '2026-04-12 17:22', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 3.8kg, ์ฌ์ง 3์ฅ', |
| status: 'approved', |
| confidenceScore: 94, |
| co2ContributionKg: 2.05, |
| wasteKg: 3.8, |
| locationName: '์ฑ๋จ์ ์จ๋๊ณต์', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-009', |
| participantName: '์ฐจ์ ๋', |
| participantTeam: '์์ ๊ธฐ์ ํ', |
| verifiedAt: '2026-04-12 14:10', |
| type: 'gps', |
| value: 'GPS ๊ฒฝ๋ก ์ดํ ๊ฐ์ง (3.2km ๋ฐ)', |
| status: 'rejected', |
| confidenceScore: 22, |
| fraudFlags: ['gps_mismatch'], |
| reviewer: '์ด์ ์', |
| rejectionReason: '์ด๋ฒคํธ ์ง์ ๊ตฌ์ญ ๋ฐ๊ฒฝ ๋ฐ ์ธ์ฆ', |
| }, |
| { |
| id: 'ev-010', |
| participantName: '์ต์์ฐ', |
| participantTeam: '๋ชจ๋น๋ฆฌํฐํ๋ซํผํ', |
| verifiedAt: '2026-04-12 09:30', |
| type: 'weight', |
| value: '์๊ฑฐ๋ฐฑ 3.5kg', |
| status: 'approved', |
| confidenceScore: 93, |
| co2ContributionKg: 1.89, |
| wasteKg: 3.5, |
| locationName: '์ฑ๋จ์ ํ๊ต๊ณต์', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-011', |
| participantName: '์ค๋ํ', |
| participantTeam: '๊ฒฐ์ ํ', |
| verifiedAt: '2026-04-11 16:05', |
| type: 'photo', |
| value: '๋์ผ ์ฌ์ง ์ฌ์ ์ถ ์์ฌ', |
| status: 'pending', |
| confidenceScore: 28, |
| fraudFlags: ['duplicate_photo', 'low_confidence'], |
| }, |
| { |
| id: 'ev-012', |
| participantName: '์ด์งํ', |
| participantTeam: 'UX์ค', |
| verifiedAt: '2026-04-11 10:15', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 2.4kg, ์ฌ์ง 2์ฅ', |
| status: 'approved', |
| confidenceScore: 97, |
| co2ContributionKg: 1.3, |
| wasteKg: 2.4, |
| locationName: '์ฑ๋จ์ ํ์ฒ ์ฐ์ฑ
๋ก', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-013', |
| participantName: '๊น๋ฏผ์', |
| participantTeam: '๋ชจ๋น๋ฆฌํฐํ๋ซํผํ', |
| verifiedAt: '2026-04-10 17:40', |
| type: 'combo', |
| value: '์๊ฑฐ๋ฐฑ 3.9kg, ์ฌ์ง 2์ฅ', |
| status: 'approved', |
| confidenceScore: 95, |
| co2ContributionKg: 2.11, |
| wasteKg: 3.9, |
| locationName: '์ฑ๋จ์ ํ๊ต๊ณต์', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-014', |
| participantName: '๋ฐ์คํธ', |
| participantTeam: '์์ ๊ธฐ์ ํ', |
| verifiedAt: '2026-04-10 14:22', |
| type: 'weight', |
| value: '์๊ฑฐ๋ฐฑ 2.1kg, ์ฐ์ 4๊ฑด (10๋ถ ์ด๋ด)', |
| status: 'pending', |
| confidenceScore: 48, |
| fraudFlags: ['rapid_submission'], |
| wasteKg: 2.1, |
| }, |
| ]; |
|
|
| const afforestationVerifications: EventVerification[] = [ |
| { |
| id: 'ev-101', |
| participantName: 'ํ์ง๋ฏผ', |
| participantTeam: 'CSRํ', |
| verifiedAt: '2026-04-14 11:00', |
| type: 'gps', |
| value: '์์ธ ๋
ธ์๊ตฌ ๋ถ์์ฐ ์๋ฝ (37.6542, 127.0568)', |
| status: 'approved', |
| confidenceScore: 99, |
| locationName: '๋ถ์์ฐ ์๋ฝ', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-102', |
| participantName: '์ค์นํ', |
| participantTeam: 'CSRํ', |
| verifiedAt: '2026-04-14 10:30', |
| type: 'combo', |
| value: 'GPS + ์๋๋ฌด ๋ฌ๋ชฉ ์ฌ์ง', |
| status: 'approved', |
| confidenceScore: 97, |
| locationName: '๋ถ์์ฐ ์๋ฝ', |
| reviewer: 'AI ์๋', |
| }, |
| { |
| id: 'ev-103', |
| participantName: '์ค์์', |
| participantTeam: 'ESG์ ๋ตํ', |
| verifiedAt: '2026-04-13 14:15', |
| type: 'photo', |
| value: '๋ฌ๋ชฉ ์์ฌ ์ฌ์ง 3์ฅ', |
| status: 'pending', |
| confidenceScore: 74, |
| }, |
| ]; |
|
|
| const energySavingVerifications: EventVerification[] = [ |
| { |
| id: 'ev-201', |
| participantName: '๊ฐ๋คํฌ', |
| verifiedAt: '2026-03-31 17:00', |
| type: 'photo', |
| value: '์ ๋ ฅ ์ฌ์ฉ๋ ๊ณ์ธก๊ธฐ ์คํฌ๋ฆฐ์ท', |
| status: 'approved', |
| confidenceScore: 93, |
| reviewer: 'AI ์๋', |
| }, |
| ]; |
|
|
| export const mockPrograms: Program[] = [ |
| |
| { |
| id: 'prg-001', |
| title: '2026 ๋ด๋ง์ด ์ฌ๋ด ํ๋ก๊น
๋ํ', |
| programType: 'corporate_event', |
| organizationName: '์นด์นด์ค๋ชจ๋น๋ฆฌํฐ', |
| organizationType: 'enterprise', |
| activityType: 'plogging', |
| status: 'active', |
| startDate: '2026-04-10', |
| endDate: '2026-04-20', |
| targetParticipants: 500, |
| currentParticipants: 347, |
| totalVerifications: 892, |
| approvedVerifications: 845, |
| rejectedVerifications: 2, |
| pendingVerifications: 45, |
| co2ReductionKg: 1267.5, |
| budgetKRW: 0, |
| pointsDistributed: 845000, |
| wasteCollectedKg: 2340, |
| saasFeePaid: 3500000, |
| verifications: ploggingVerifications, |
| }, |
| { |
| id: 'prg-002', |
| title: '์ฐฝ๋ฆฝ 30์ฃผ๋
๊ธฐ๋
๋๋ฌด ์ฌ๊ธฐ', |
| programType: 'corporate_event', |
| organizationName: 'SKํ
๋ ์ฝค', |
| organizationType: 'enterprise', |
| activityType: 'afforestation', |
| status: 'active', |
| startDate: '2026-04-05', |
| endDate: '2026-04-30', |
| targetParticipants: 300, |
| currentParticipants: 214, |
| totalVerifications: 214, |
| approvedVerifications: 198, |
| rejectedVerifications: 0, |
| pendingVerifications: 16, |
| co2ReductionKg: 0, |
| budgetKRW: 0, |
| pointsDistributed: 594000, |
| treesPlanted: 198, |
| saasFeePaid: 5000000, |
| verifications: afforestationVerifications, |
| }, |
| { |
| id: 'prg-003', |
| title: '๊ทธ๋ฆฐ์๋์ง ์๋์ง ์ ์ฝ ์ฑ๋ฆฐ์ง', |
| programType: 'corporate_event', |
| organizationName: '(์ฃผ)๊ทธ๋ฆฐ์๋์ง', |
| organizationType: 'enterprise', |
| activityType: 'energy_saving', |
| status: 'completed', |
| startDate: '2026-03-01', |
| endDate: '2026-03-31', |
| targetParticipants: 1000, |
| currentParticipants: 876, |
| totalVerifications: 4380, |
| approvedVerifications: 4215, |
| rejectedVerifications: 165, |
| pendingVerifications: 0, |
| co2ReductionKg: 8430, |
| budgetKRW: 0, |
| pointsDistributed: 4215000, |
| saasFeePaid: 8000000, |
| verifications: energySavingVerifications, |
| }, |
| { |
| id: 'prg-004', |
| title: '์์ธ์ ์นํ๊ฒฝ ํต๊ทผ ์บ ํ์ธ', |
| programType: 'corporate_event', |
| organizationName: '์์ธํน๋ณ์', |
| organizationType: 'municipality', |
| activityType: 'commute_green', |
| status: 'active', |
| startDate: '2026-05-01', |
| endDate: '2026-05-31', |
| targetParticipants: 5000, |
| currentParticipants: 0, |
| totalVerifications: 0, |
| approvedVerifications: 0, |
| rejectedVerifications: 0, |
| pendingVerifications: 0, |
| co2ReductionKg: 0, |
| budgetKRW: 0, |
| pointsDistributed: 0, |
| saasFeePaid: 12000000, |
| verifications: [], |
| }, |
| { |
| id: 'prg-005', |
| title: 'ํํ Earth Day ํ๋ก๊น
', |
| programType: 'corporate_event', |
| organizationName: 'ํํ์๋ฃจ์
', |
| organizationType: 'enterprise', |
| activityType: 'plogging', |
| status: 'draft', |
| startDate: '2026-04-22', |
| endDate: '2026-04-22', |
| targetParticipants: 200, |
| currentParticipants: 0, |
| totalVerifications: 0, |
| approvedVerifications: 0, |
| rejectedVerifications: 0, |
| pendingVerifications: 0, |
| co2ReductionKg: 0, |
| budgetKRW: 0, |
| pointsDistributed: 0, |
| wasteCollectedKg: 0, |
| saasFeePaid: 0, |
| verifications: [], |
| }, |
|
|
| |
| { |
| id: 'prg-101', |
| title: '์ ํต์์ฅ ๋คํ์ฉ๊ธฐ ์บ ํ์ธ', |
| programType: 'public_caas', |
| organizationName: '์์ธํน๋ณ์', |
| organizationType: 'municipality', |
| status: 'active', |
| methodology: 'GS โ ํ๊ธฐ๋ฌผ ๋ฐ์ ์ต์ ๋ฐฉ๋ฒ๋ก v3.2', |
| methodologyAutoAssigned: true, |
| startDate: '2026-04-01', |
| endDate: '2026-06-30', |
| targetParticipants: 20000, |
| currentParticipants: 12480, |
| totalVerifications: 44270, |
| approvedVerifications: 42150, |
| rejectedVerifications: 1230, |
| pendingVerifications: 890, |
| co2ReductionKg: 15670, |
| budgetKRW: 250000000, |
| pointsDistributed: 42150000, |
| apiCallsTotal: 187320, |
| apiCallsToday: 3420, |
| fraudDetected: 47, |
| }, |
| { |
| id: 'prg-102', |
| title: '์ฒญ์ฌ ๋ด ์๋์ง ์ ์ฝ ์ฑ๋ฆฐ์ง', |
| programType: 'public_caas', |
| organizationName: 'ํ๊ตญ์๋์ง๊ณต๋จ', |
| organizationType: 'public_corp', |
| activityType: 'energy_saving', |
| status: 'active', |
| methodology: 'AMS-II.L โ ์๋์งํจ์จ ๊ฐ์ ํ๋', |
| methodologyAutoAssigned: true, |
| startDate: '2026-03-01', |
| endDate: '2026-05-31', |
| targetParticipants: 5000, |
| currentParticipants: 3200, |
| totalVerifications: 10270, |
| approvedVerifications: 9800, |
| rejectedVerifications: 320, |
| pendingVerifications: 150, |
| co2ReductionKg: 28400, |
| budgetKRW: 80000000, |
| pointsDistributed: 9800000, |
| apiCallsTotal: 45600, |
| apiCallsToday: 890, |
| fraudDetected: 12, |
| }, |
| { |
| id: 'prg-103', |
| title: 'ํ์์ค๋ฆฝ ํฌ์ธํธ - ์์ ๊ฑฐ ์ถํด๊ทผ', |
| programType: 'public_caas', |
| organizationName: '์ธ์ข
ํน๋ณ์์น์', |
| organizationType: 'municipality', |
| activityType: 'commute_green', |
| status: 'active', |
| methodology: 'VM0042 โ ๋น๋๋ ฅ ๊ตํต์๋จ ์ ํ ๋ฐฉ๋ฒ๋ก ', |
| methodologyAutoAssigned: true, |
| startDate: '2026-04-10', |
| endDate: '2026-10-31', |
| targetParticipants: 15000, |
| currentParticipants: 8750, |
| totalVerifications: 38390, |
| approvedVerifications: 35200, |
| rejectedVerifications: 890, |
| pendingVerifications: 2300, |
| co2ReductionKg: 8920, |
| budgetKRW: 150000000, |
| pointsDistributed: 35200000, |
| apiCallsTotal: 124500, |
| apiCallsToday: 2100, |
| fraudDetected: 31, |
| }, |
| { |
| id: 'prg-104', |
| title: '๊ณต๊ณต๊ฑด๋ฌผ ํ์๊ด ๋ชจ๋ํฐ๋ง', |
| programType: 'public_caas', |
| organizationName: 'ํ๊ตญ์ ๋ ฅ๊ณต์ฌ', |
| organizationType: 'public_corp', |
| status: 'completed', |
| methodology: 'GS โ ์๊ท๋ชจ ์ฌ์์๋์ง ๋ฐ์ ํ๋ก์ ํธ', |
| methodologyAutoAssigned: true, |
| startDate: '2025-10-01', |
| endDate: '2026-03-31', |
| targetParticipants: 0, |
| currentParticipants: 0, |
| totalVerifications: 180500, |
| approvedVerifications: 178400, |
| rejectedVerifications: 2100, |
| pendingVerifications: 0, |
| co2ReductionKg: 456200, |
| budgetKRW: 500000000, |
| pointsDistributed: 0, |
| apiCallsTotal: 892000, |
| apiCallsToday: 0, |
| fraudDetected: 0, |
| }, |
| { |
| id: 'wando-model-001', |
| title: '[๊ธฐ๋ณธ์๋ํ] ์ ๊ตฐ๋ฏผ ๋ฐ๋ค ์ฐ๊ธ ๋ธ๋ฃจ ํฌ๋ ๋ง', |
| programType: 'public_caas', |
| organizationName: '์ ๋ผ๋จ๋ ์๋๊ตฐ์ฒญ', |
| organizationType: 'municipality', |
| status: 'active', |
| methodology: 'K-VER โ ํด์กฐ๋ฅ ํ์ ํก์ ๋ฐฉ๋ฒ๋ก v1.0', |
| methodologyAutoAssigned: true, |
| startDate: '2026-05-01', |
| endDate: '2027-04-30', |
| targetParticipants: 50000, |
| currentParticipants: 12500, |
| totalVerifications: 25000, |
| approvedVerifications: 24800, |
| rejectedVerifications: 50, |
| pendingVerifications: 150, |
| co2ReductionKg: 6789000, |
| budgetKRW: 200000000, |
| pointsDistributed: 50000000, |
| apiCallsTotal: 85000, |
| apiCallsToday: 1200, |
| fraudDetected: 5, |
| }, |
| { |
| id: 'wando-model-002', |
| title: '[์ฐ์
ํ์ ํ] ๋ฐ๋ค๊ณ ๋ฆฌํ ์ด๋ชจ์ ์ถ์ฐ ๋ฉํ ์ ๊ฐ', |
| programType: 'public_caas', |
| organizationName: '์ ๋ผ๋จ๋ ์๋๊ตฐ์ฒญ', |
| organizationType: 'municipality', |
| status: 'active', |
| methodology: 'CDM โ ๊ฐ์ถ ๋ถ๋จ ๋ฐ ๋ฉํ ์ ๊ฐ ๋ฐฉ๋ฒ๋ก ', |
| methodologyAutoAssigned: true, |
| startDate: '2026-05-15', |
| endDate: '2026-09-30', |
| targetParticipants: 5000, |
| currentParticipants: 850, |
| totalVerifications: 1200, |
| approvedVerifications: 1150, |
| rejectedVerifications: 10, |
| pendingVerifications: 40, |
| co2ReductionKg: 50000, |
| budgetKRW: 100000000, |
| pointsDistributed: 15000000, |
| apiCallsTotal: 15000, |
| apiCallsToday: 450, |
| fraudDetected: 2, |
| }, |
| { |
| id: 'wando-model-004', |
| title: '[์์ํ๋ ฅํ] ๊ธฐ์
๋งค์นญ ๋ฐ๋ค์ฒ ์ํ๊ณ ์๋น์ค ์ง๋ถ์ ', |
| programType: 'corporate_event', |
| organizationName: '์๋๊ตฐ์ฒญ X (์ฃผ)ํ๋์๋์ฐจ', |
| organizationType: 'enterprise', |
| status: 'active', |
| methodology: '์ํผ(Sea-grass) ํด์ ์ํ๊ณ ๋ณต์ ๋ฐ ๋ณด์ ', |
| methodologyAutoAssigned: true, |
| startDate: '2026-07-01', |
| endDate: '2027-06-30', |
| targetParticipants: 1000, |
| currentParticipants: 320, |
| totalVerifications: 540, |
| approvedVerifications: 535, |
| rejectedVerifications: 2, |
| pendingVerifications: 3, |
| co2ReductionKg: 150000, |
| budgetKRW: 500000000, |
| pointsDistributed: 120000000, |
| apiCallsTotal: 12000, |
| apiCallsToday: 150, |
| fraudDetected: 0, |
| }, |
| ]; |
|
|