import fs from 'fs'; import Papa from 'papaparse'; const csv = fs.readFileSync('./src/data/cards.csv', 'utf-8'); const parsed = Papa.parse(csv, { header: true }); parsed.data.forEach(row => { if (!row.id) return; // Auto-generate some basic keyword and question based on text if (row.text.includes('시위')) { row.keyword = '요원들의 시위 발생'; row.question = '시위를 어떻게 처리하시겠습니까?'; } else if (row.text.includes('격리실')) { row.keyword = '격리실 오염 발생'; row.question = '오염을 어떻게 정화하시겠습니까?'; } else if (row.text.includes('촉수')) { row.keyword = '촉수 괴물 출현'; row.question = '출동 승인하시겠습니까?'; } else if (row.text.includes('DNA')) { row.keyword = '변이 DNA 이식 제안'; row.question = '실험을 승인하시겠습니까?'; } else if (row.text.includes('폭격')) { row.keyword = '전술 폭격 건의'; row.question = '폭격을 승인하시겠습니까?'; } else if (row.text.includes('암시장')) { row.keyword = '부산물 암시장 매각'; row.question = '매각을 허가하시겠습니까?'; } else if (row.text.includes('대중 매체')) { row.keyword = '존재 양지화 프로젝트'; row.question = '프로젝트를 승인하시겠습니까?'; } else if (row.text.includes('도서관')) { row.keyword = '대규모 도서관 건립'; row.question = '예산을 배정하시겠습니까?'; } else if (row.text.includes('마녀사냥')) { row.keyword = '이단 색출 마녀사냥'; row.question = '어떻게 개입하시겠습니까?'; } else if (row.text.includes('유튜버')) { row.keyword = '변칙 현상 영상 유출'; row.question = '어떻게 처리하시겠습니까?'; } else if (row.text.includes('인신 공양')) { row.keyword = '사이비 종교 인신 공양'; row.question = '어떻게 대응하시겠습니까?'; } else if (row.text.includes('감사')) { row.keyword = '의회의 긴급 감사'; row.question = '어떻게 대처하시겠습니까?'; } else if (row.text.includes('초과 근무')) { row.keyword = '연구 부서 파업 조짐'; row.question = '요구를 수용하시겠습니까?'; } else if (row.text.includes('무역로')) { row.keyword = '이계 무역로 개방'; row.question = '무역로를 개방하시겠습니까?'; } else if (row.text.includes('비밀 금고')) { row.keyword = '전임 국장 비밀 금고'; row.question = '금고를 개방하시겠습니까?'; } else if (row.text.includes('메가코프')) { row.keyword = '메가코프 협박 작전'; row.question = '작전을 실행하시겠습니까?'; } else if (row.text.includes('시민')) { row.keyword = '민간인 구역 붕괴 위기'; row.question = '어떻게 명령하시겠습니까?'; } else if (row.text.includes('파업')) { row.keyword = '행정부 파업 예고'; row.question = '어떻게 대응하시겠습니까?'; } else if (row.text.includes('뇌를 결합')) { row.keyword = '불침번 요원 개발'; row.question = '배치하시겠습니까?'; } else if (row.text.includes('스파이')) { row.keyword = '내부 스파이 첩보'; row.question = '어떻게 조사하시겠습니까?'; } else if (row.text.includes('수용소')) { row.keyword = '변이 요원 수용소'; row.question = '건립을 승인하시겠습니까?'; } else if (row.text.includes('유물')) { row.keyword = '이계의 유물 인양'; row.question = '유물을 어떻게 처리하시겠습니까?'; } else if (row.text.includes('눈동자')) { row.keyword = '이계의 주시자 출현'; row.question = '대중을 어떻게 통제하시겠습니까?'; } else if (row.text.includes('트라우마')) { row.keyword = '요원 집단 트라우마'; row.question = '어떻게 지원하시겠습니까?'; } else if (row.text.includes('폭로')) { row.keyword = '내부 고발자 발생'; row.question = '어떻게 막으시겠습니까?'; } else if (row.text.includes('타이머')) { row.keyword = '차원 붕괴 폭탄 오작동'; row.question = '어떻게 대응하시겠습니까?'; } else if (row.text.includes('군사 기업')) { row.keyword = 'PMC 흡수 합병'; row.question = '결탁하시겠습니까?'; } else if (row.text.includes('관찰')) { row.keyword = '대규모 거주 구역 실험장화'; row.question = '제안을 승인하시겠습니까?'; } else if (row.text.includes('이계의 군주')) { row.keyword = '이계 군주의 외교'; row.question = '제안을 수락하시겠습니까?'; } else if (row.text.includes('믹스 커피')) { row.keyword = '믹스 커피 재고 고갈'; row.question = '어떻게 해결하시겠습니까?'; } else if (row.text.includes('신화적 존재')) { row.keyword = '신화적 존재 강림'; row.question = '어떻게 대적하시겠습니까?'; } else { row.keyword = '비정상적 위기 발생'; row.question = '국장님, 결단이 필요합니다.'; } }); const newCsv = Papa.unparse(parsed.data, { columns: [ 'id','type','keyword','question','text','flavor', 'left_text','left_res','left_ent','left_pan','left_rsk','left_bud','left_per','left_inf','left_wea','left_for','left_sur', 'right_text','right_res','right_ent','right_pan','right_rsk','right_bud','right_per','right_inf','right_wea','right_for','right_sur' ] }); fs.writeFileSync('./src/data/cards.csv', newCsv); console.log('CSV updated with keyword and question');