Files
ahp-decision-analysis/public/js/cases.js
T
2026-07-03 20:26:58 +09:00

117 lines
4.3 KiB
JavaScript

const CASES = [
{
id: 1, industry: '헬스케어', industryEn: 'Healthcare',
안정성: 85, 수익_가능성: 82, 자금_효율성: 80,
사업_계획_완성도: 88, 사회적_가치: 84,
type: 'baseline', note: '명확 선발'
},
{
id: 2, industry: '물류', industryEn: 'Logistics',
안정성: 18, 수익_가능성: 22, 자금_효율성: 15,
사업_계획_완성도: 20, 사회적_가치: 25,
type: 'baseline', note: '명확 탈락'
},
{
id: 3, industry: '교육', industryEn: 'Education',
안정성: 68, 수익_가능성: 72, 자금_효율성: 65,
사업_계획_완성도: 70, 사회적_가치: 66,
type: 'baseline', note: '무난 중상'
},
{
id: 4, industry: '제조', industryEn: 'Manufacturing',
안정성: 35, 수익_가능성: 38, 자금_효율성: 42,
사업_계획_완성도: 30, 사회적_가치: 35,
type: 'baseline', note: '무난 중하'
},
{
id: 5, industry: '핀테크', industryEn: 'Fintech',
안정성: 5, 수익_가능성: 68, 자금_효율성: 72,
사업_계획_완성도: 70, 사회적_가치: 65,
type: 'spike', spike_var: '안정성', spike_dir: 'down'
},
{
id: 6, industry: '에너지', industryEn: 'Energy',
안정성: 70, 수익_가능성: 97, 자금_효율성: 68,
사업_계획_완성도: 65, 사회적_가치: 72,
type: 'spike', spike_var: '수익 가능성', spike_dir: 'up'
},
{
id: 7, industry: 'IT', industryEn: 'IT',
안정성: 65, 수익_가능성: 70, 자금_효율성: 4,
사업_계획_완성도: 68, 사회적_가치: 72,
type: 'spike', spike_var: '자금 효율성', spike_dir: 'down'
},
{
id: 8, industry: '바이오', industryEn: 'Biotech',
안정성: 68, 수익_가능성: 65, 자금_효율성: 70,
사업_계획_완성도: 96, 사회적_가치: 66,
type: 'spike', spike_var: '사업 계획 완성도', spike_dir: 'up'
},
{
id: 9, industry: '미디어', industryEn: 'Media',
안정성: 72, 수익_가능성: 68, 자금_효율성: 65,
사업_계획_완성도: 70, 사회적_가치: 6,
type: 'spike', spike_var: '사회적 가치', spike_dir: 'down'
},
{
id: 10, industry: '소셜', industryEn: 'Social',
안정성: 95, 수익_가능성: 95, 자금_효율성: 15,
사업_계획_완성도: 20, 사회적_가치: 25,
type: 'conflict', note: '수익·안정성 최고 vs 나머지 최저'
},
{
id: 11, industry: '복지', industryEn: 'Welfare',
안정성: 20, 수익_가능성: 18, 자금_효율성: 22,
사업_계획_완성도: 25, 사회적_가치: 95,
type: 'conflict', note: '사회가치만 최고 나머지 최저'
},
{
id: 12, industry: '환경', industryEn: 'Environment',
안정성: 88, 수익_가능성: 85, 자금_효율성: 90,
사업_계획_완성도: 92, 사회적_가치: 12,
type: 'conflict', note: '사회가치만 최저 나머지 모두 최고'
},
{
id: 13, industry: '문화', industryEn: 'Culture',
안정성: 15, 수익_가능성: 92, 자금_효율성: 18,
사업_계획_완성도: 20, 사회적_가치: 88,
type: 'conflict', note: '수익·사회가치 높음 나머지 낮음'
},
{
id: 14, industry: '농업', industryEn: 'Agriculture',
안정성: 90, 수익_가능성: 22, 자금_효율성: 88,
사업_계획_완성도: 85, 사회적_가치: 82,
type: 'conflict', note: '수익만 최저 나머지 모두 높음'
},
{
id: 15, industry: '패션', industryEn: 'Fashion',
안정성: 48, 수익_가능성: 52, 자금_효율성: 50,
사업_계획_완성도: 47, 사회적_가치: 53,
type: 'conflict', note: '모든 변인 50점대 경계선'
},
];
const TEAM_LETTERS = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'];
const VARS = ['안정성', '수익_가능성', '자금_효율성', '사업_계획_완성도', '사회적_가치'];
function shuffleCases() {
const indices = CASES.map((_, i) => i);
// Fisher-Yates shuffle
for (let i = indices.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[indices[i], indices[j]] = [indices[j], indices[i]];
}
return indices.map((origIdx, newIdx) => ({
...CASES[origIdx],
teamLetter: TEAM_LETTERS[newIdx],
presentedOrder: newIdx + 1,
}));
}
function getScoreLevel(score) {
if (score < 35) return 'low';
if (score < 65) return 'mid';
return 'high';
}