seawolf2357 commited on
Commit
b8d5079
โ€ข
1 Parent(s): 7046efa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -238
app.py CHANGED
@@ -1,240 +1,52 @@
1
  import gradio as gr
2
- import matplotlib.pyplot as plt
3
- import numpy as np
4
- import requests
5
 
6
-
7
- # ์งˆ๋ฌธ ๋ฐ ์„ ํƒ์ง€ ์„ค์ •
8
- questions = ["1. ๋น„์ฆ๊ถŒ์„ฑ์œผ๋กœ ํŒ๋‹จ๋ฐ›์€ ๋ฒ•๋ฅ ์ž๋ฌธ ๊ฒ€ํ† ์„œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‚˜์š”?",
9
- "2. TOP 10 Holder ๋ฐฐ๋ถ„์œจ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”(TOP 10 Holder)๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‚˜์š”?)",
10
- "3. ํ† ํฐ ๋ฐœํ–‰์„ ํ•œ ์ดํ›„ ์–ผ๋งˆ๋‚˜ ์ง€๋‚ฌ์Šต๋‹ˆ๊นŒ?",
11
- "4. ํ”„๋กœ์ ํŠธ ๊ณต์‹œ๊ด€๋ จ ๊ทœ์ •(or ๋งค๋‰ด์–ผ)์ด ์žˆ์Šต๋‹ˆ๋‹ค",
12
- "5. ์ž์ฒด ์šด์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ํฌํ•จ ๋‹ค์–‘ํ•œ ์ฑ„๋„์— ๊ฐ์ข… ์ด์Šˆ, ๊ณต์ง€, ๊ณต์‹œ ๋“ฑ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?",
13
- "6. ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€๋ จ ๋ฒ•๋ฅ  ์ด์Šˆ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ค€๋น„์ƒํƒœ๋ฅผ ์„ ํƒํ•ด ์ฃผ์„ธ์š”. ",
14
- "7. ํ”„๋กœ์ ํŠธ์—์„œ ์šด์˜์ค‘์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ(์„œ๋น„์Šค ๊ฐ€์ž…์ž ํฌํ•จ) ์ธ์› ์ด ํ•ฉ์„ ์„ ํƒํ•ด ์ฃผ์„ธ์š”. ",
15
- "8. ํ”„๋กœ์ ํŠธ ํ™๋ณด๋ฅผ ์œ„ํ•œ ๋‰ด์Šค, ์–ธ๋ก  ๋“ฑ ๋ฏธ๋””์–ด ๋…ธ์ถœ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•ด ์ฃผ์„ธ์š”",
16
- "9. ๋ฐ‹์—… ๋“ฑ ๋งˆ์ผ€ํŒ… ์‹ค์ ์„ ์„ ํƒํ•ด ์ฃผ์„ธ์š”",
17
- "10. ์–ด๋“œ๋ฐ”์ด์ € ๋˜๋Š” ํŒŒํŠธ๋„ˆ์˜ ์ „๋ฌธ์„ฑ ์ˆ˜์ค€์„ ์„ ํƒํ•ด ์ฃผ์„ธ์š” ",
18
- "11. ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๋™๋œ ์ „์ž์ง€๊ฐ‘ ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ",
19
- "12. ๋ฉ€ํ‹ฐ์ฒด์ธ ์ง€์›์˜ ์ •๋„๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
20
- "13. GitHub์— ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ํ™œ๋™ํ•˜๊ณ  ์žˆ๋‚˜์š”?",
21
- "14. ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๊ธฐ์ˆ  ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€๋ จ ํŠนํ—ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?",
22
- "15. ๊ธฐ์ˆ  ์ธ๋ ฅ(in-house)์ค‘ ๊ด€๋ จ ๋ถ€๋ถ„ ๋ฐ•์‚ฌ ๋˜๋Š” ๊ธฐ์ˆ ์ž ์ž๊ฒฉ ๋ณด์œ ์ž๊ฐ€ ์žˆ๋‚˜์š”?",
23
- "16. ํ”Œ๋žซํผ/์„œ๋น„์Šค ์šด์šฉ๊ธฐ๊ฐ„์ด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?",
24
- "17. ๋ณด์•ˆ ๊ธฐ์ˆ  ๊ฐ์‚ฌ ๊ธฐ๊ด€์˜ ๋ณด์•ˆ๊ฐ์‚ฌ์„œ(Audit)๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‚˜์š”? ",
25
- "18. ๋ณด์•ˆ๊ฐ์‚ฌ์„œ๊ฐ€ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ",
26
- "19. ๋ณด์•ˆ๋ฉ”๋‰ด์–ผ์— ๋”ฐ๋ฅธ ์ •๊ธฐ์ ์ธ ์ทจ์•ฝ์  ์ ๊ฒ€ ํ™œ๋™์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ",
27
- "20. ๋ฒ„๊ทธ๋ฐ”์šดํ‹ฐ ์„œ๋น„์Šค๋ฅผ ํ–ˆ๊ฑฐ๋‚˜ ํ˜„์žฌ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ",
28
- "21. ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ์กฐ์น˜ ์ˆ˜์ค€์„ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
29
- "22. ์ฝ”์ธ๋งˆ์ผ“์บก ๋˜๋Š” ์ฝ”์ธ๊ฒŒ์ฝ”์—์„œ ์กฐํšŒ๋œ ์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์‹œ์ด ์ˆœ์œ„ ์„ ํƒํ•ด์ฃผ์„ธ์š”",
30
- "23. ์ƒ์žฅ ๊ฑฐ๋ž˜์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ƒ์žฅ๊ฐ€ ๋Œ€๋น„ ํ˜„์žฌ ์‹œ์„ธ๋ฅผ ์„ ํƒํ•ด ์ฃผ์„ธ์š”",
31
- "24. ์ƒ์žฅ๋˜์–ด ์žˆ๋Š” ๊ฑฐ๋ž˜์†Œ๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”",
32
- "25. ์ง€๋‚œ 52์ฃผ ๊ธฐ์ค€ ์˜จ์ฒด์ธ ์ฑ ํŠธ์ƒ ํŠธ๋žœ์žญ์…˜ ์ถ”์„ธ๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”",
33
- "26. ํ”Œ๋žซํผ ์ด์šฉ์ž ์ด๋Ÿ‰, (ํ”Œ๋žซํผ ์ด์šฉ์ž ์ˆ˜ + )์˜จ์ฒด์ธ ํ™€๋” ์ˆ˜(=์ง€๊ฐ‘์ˆ˜)์„ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
34
- "27. ๋กœ๋“œ๋งต ๋ฐ ํžˆ์Šคํ† ๋ฆฌ ๊ณต๊ฐœ ์ˆ˜์ค€์„ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
35
- "28. ๋กœ๋“œ๋งต ๋‹ฌ์„ฑ ์ˆ˜์ค€์„ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
36
- "29. ์žฌ๋‹จ ๋ฐ ์šด์˜์‚ฌ(์ง€๋ฐฐ๊ตฌ์กฐ ํฌํ•จ)์˜ ํ˜•ํƒœ๋ฅผ ์„ ํƒํ•ด ์ฃผ์„ธ์š”",
37
- "30. ๊ฒฝ์˜์ง„์„ ํฌํ•จํ•œ ํ•ต์‹ฌ์ธ๋ ฅ์˜ ์ „๋ฌธ์„ฑ ๋˜๋Š” ์˜ํ–ฅ๋ ฅ ์ˆ˜์ค€์„ ์„ ํƒํ•ด์ฃผ์„ธ์š” ",
38
- "31. Cash runway(์žฌ๋‹จ์˜ ํ˜„๊ธˆ์œ ๋™์„ฑ ๋˜๋Š” ์žฌ๋ฌด๊ฑด์ „์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์—…์ง€์† ๊ฐ€๋Šฅ๊ธฐ๊ฐ„)๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?"
39
- ]
40
-
41
- options = [["๋„ค", "์•„๋‹ˆ์˜ค"],
42
- ["30% ์ดํ•˜", "31~69%์ดํ•˜", "70% ์ด์ƒ"],
43
- ["2๋…„ ์ด์ƒ", "1๋…„ ๋ฏธ๋งŒ", "6๊ฐœ์›” ๋ฏธ๋งŒ"],
44
- ["๋„ค", "์•„๋‹ˆ์˜ค"],
45
- ["๋„ค", "์•„๋‹ˆ์˜ค"],
46
- ["์ค€๋ฒ•๊ด€๋ฆฌํŒ€(๋ณ€ํ˜ธ์‚ฌ ๊ณ ์šฉ) ๋ณด์œ (์„ ํƒ)", "์ค€๋ฒ•ํ”„๋กœ์„ธ์Šค ๋ฐ ์ž์ฒด ๋ฉ”๋‰ด์–ผ ๋ณด์œ  ๋˜๋Š” ์ •๊ธฐ์ ์œผ๋กœ ๋ฒ•๋ฅ ์ž๋ฌธ์„ ๋ฐ›๊ณ  ์žˆ์Œ(์„ ํƒ)", "๋ฒ•๋ฅ ์ž๋ฌธ์„ ๋ฐ›์€ ์ด๋ ฅ ์žˆ์Œ(์„ ํƒ)", "์—†์Œ"],
47
- ["์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ์›์ˆ˜ ํ•ฉ 5๋งŒ ์ด์ƒ", "์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ์›์ˆ˜ ํ•ฉ 1๋งŒ ์ด์ƒ", "์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ์›์ˆ˜ ํ•ฉ 1์ฒœ ์ด์ƒ","์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ์›์ˆ˜ ํ•ฉ 1์ฒœ ์ดํ•˜"],
48
- ["๊ธ€๋กœ๋ฒŒ ์ƒ์œ„ ์–ธ๋ก  ๋ฐ ๋ฏธ๋””์–ด ๋‰ด์Šค์— ๋…ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค", "๊ตญ๋‚ด ๋Œ€ํ˜• ์–ธ๋ก  ๋ฐ ๋ฏธ๋””์–ด ๋‰ด์Šค์— ๋…ธ์ถœ๋˜์žˆ์Šต๋‹ˆ๋‹ค", "๊ตญ๋‚ด ์ค‘์†Œํ˜• ์ผ๋ฐ˜ ์–ธ๋ก  ๋ณด๋„์ž๋ฃŒ์— ๋…ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค","๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"],
49
- ["์ง€์†์ ์ด๊ณ  ์ •๊ธฐ์ ์ธ ์˜จ์˜คํ”„ ๋งˆ์ผ€ํŒ… ์ง„ํ–‰ ","๊ฐ„ํ—์  ๋งˆ์ผ€ํŒ… ์‹คํ–‰ ์ˆ˜์ค€: ๋ฐ‹์—…ํฌํ•จ ์˜จ์˜คํ”„ ๋งˆ์ผ€ํŒ… ์ง„ํ–‰","๋งˆ์ผ€ํŒ… ์‹คํ–‰ ์ด๋ ฅ์—†์Œ"],
50
- ["๊ธ€๋กœ๋ฒŒ ์ˆ˜์ค€","๋กœ์ปฌ ํƒ‘ ์ˆ˜์ค€","๋กœ์ปฌ ์ผ๋ฐ˜ ์ˆ˜์ค€"],
51
- ["์ž์ฒด๊ฐœ๋ฐœํ•œ ์ง€๊ฐ‘์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์„œ๋น„์Šค ์ค‘์ž…๋‹ˆ๋‹ค ","์™ธ๋ถ€๊ฐœ๋ฐœํ•œ ์ง€๊ฐ‘์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์„œ๋น„์Šค ์ค‘์ž…๋‹ˆ๋‹ค ","์ง€๊ฐ‘ ์„œ๋น„์Šค๋ฅผ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค"],
52
- ["๋ณต์ˆ˜(3์ข… ์ด์ƒ) ์ฒด์ธ์„ ์ง€์›ํ•˜๊ณ  ์ง€์› API ๋˜๋Š” ๋ธŒ๋ฆฟ์ง€๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ","๋ณต์ˆ˜(2์ข… ์ด์ƒ) ์ฒด์ธ์„ ์ง€์› ๋ฐ ๋ธŒ๋ฆฟ์ง€๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค","๋‹จ์ผ ์ฒด์ธ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค"],
53
- ["๋„ค ", "์•„๋‹ˆ์˜ค"],
54
- ["๋“ฑ๋ก ์™„๋ฃŒ๋œ ํŠนํ—ˆ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ","ํŠนํ—ˆ๋ฅผ ๏ฟฝ๏ฟฝ๏ฟฝ๋Š” ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค (์ถœ์› ์ค‘)", "์—†์Œ"],
55
- ["๊ฒฝ๋ ฅ ํ”„๋กœํ•„ ๊ธฐ์ค€ ๋ฐ•์‚ฌ ๋ฐ ๊ธฐ์ˆ ์‚ฌ ์ž๊ฒฉ ์ธ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.", "๋ฐ•์‚ฌ๊ธ‰์€ ์•„๋‹ˆ์ง€๋งŒ ์„์‚ฌ๊ธ‰ ์ˆ˜์ค€, ๊ด€๋ จ ๊ฒฝ๋ ฅ 10๋…„ ์ด์ƒ์˜ ๊ฒฝ๋ ฅ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค","๊ด€๋ จ๋ถ„์•ผ ๊ฒฝ๋ ฅ 10๋…„ ๋ฏธ๋งŒ์˜ ์ผ๋ฐ˜์ ์ธ ์ˆ˜์ค€์˜ ๊ฒฝ๋ ฅ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค"],
56
- ["ํ”Œ๋žซํผ/์„œ๋น„์Šค ์šด์šฉ๊ธฐ๊ฐ„์ด 1๋…„ ์ด์ƒ ์ž…๋‹ˆ๋‹ค ","ํ”Œ๋žซํผ/์„œ๋น„์Šค ์šด์šฉ๊ธฐ๊ฐ„์ด 1๋…„ ๋ฏธ๋งŒ ์ž…๋‹ˆ๋‹ค","ํ”Œ๋žซํผ/์„œ๋น„์Šค ์šด์šฉ๊ธฐ๊ฐ„์ด 6๊ฐœ์›” ๋ฏธ๋งŒ ์ž…๋‹ˆ๋‹ค"],
57
- ["๊ธ€๋กœ๋ฒŒTOP ์ˆ˜์ค€.์Šฌ๋กœ์šฐ๋ฏธ์ŠคํŠธ/์จํ‹ฑ ๋“ฑ ์ƒ์œ„30% ๊ธฐ๊ด€์„ ํ†ตํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค ","์ผ๋ฐ˜์ˆ˜์ค€์˜ ๋ณด์•ˆ๊ฐ์‚ฌ๊ธฐ๊ด€์„ ํ†ตํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค","๋ณด์•ˆ๊ฐ์‚ฌ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."],
58
- ["๋ณด์•ˆ๊ฐ์‚ฌ์—…์ฒด ํ™ˆํŽ˜์ด์ง€, ์ฝ”์ธ๋งˆ์ผ“๊ฐญ ๋“ฑ ์‚ฌ์ดํŠธ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ","๊ณต๊ฐœ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค"],
59
- ["๋„ค ","์•„๋‹ˆ์˜ค"],
60
- ["๋„ค ", "์•„๋‹ˆ์˜ค"],
61
- ["๋‚ด๋ถ€ ์ง์› ์ค‘ CISO ๋“ฑ๋ก๋œ ์ž„์›์ด ์žˆ๋‹ค ","๋‚ด๋ถ€ ์ง์› ์ค‘ ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌ์ž๊ฐ€ ์žˆ๋‹ค", "์—†์Œ"],
62
- ["์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์ •๋Ÿ‰ํ™”๋œ ์ง€ํ‘œ์—์„œ ์‹œ์ด์ƒ์œ„ 500์œ„ ์ด๋‚ด์ธ๊ฐ€?(์„ ํƒ) ","์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์ •๋Ÿ‰ํ™”๋œ์ •๋Ÿ‰ํ™”๋œ ์ง€ํ‘œ์—์„œ ์‹œ์ด์ƒ์œ„ 500์œ„ ์ด์ƒ 1,000์œ„ ๋ฏธ๋งŒ์ธ๊ฐ€?(์„ ํƒ)","์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์ •๋Ÿ‰ํ™”๋œ ์ง€ํ‘œ์—์„œ ์‹œ์ด์ƒ์œ„ 1,000์œ„ ์ด์ƒ 5,000์œ„ ๋ฏธ๋งŒ์ธ๊ฐ€?(์„ ํƒ)","์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์ •๋Ÿ‰ํ™”๋œ ์ง€ํ‘œ์—์„œ ์‹œ์ด์ƒ์œ„ 5,000์œ„ ์ดˆ๊ณผ(๋˜๋Š” ๋ฏธํ‘œ์‹œ)์ธ๊ฐ€?(์„ ํƒ)","์ฝ”์ธ๋งˆ์ผ“๊ฐญ, ์ฝ”์ธ๊ฒŒ์ฝ” ์™ธ ๋‹ค๋ฅธ ๊ณณ(DEX ํฌํ•จ)์—์„œ ์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์‹œ์ด ์ˆœ์œ„๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค","์—†์Œ"],
63
- ["์ƒ์žฅ๊ฐ€ ๊ธฐ์ค€ 31% ์ด์ƒ ์ƒ์Šน ์œ ์ง€(๊ฑฐ๋ž˜์†Œ๋ณต์ˆ˜์‹œ ์ตœ๋Œ€๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜์†Œ ๊ธฐ์ค€) ","์ƒ์žฅ๊ฐ€ ๊ธฐ์ค€ -30~+30% ์œ ์ง€(๊ฑฐ๋ž˜์†Œ๋ณต์ˆ˜์‹œ ์ตœ๋Œ€๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜์†Œ ๊ธฐ์ค€)","์ƒ์žฅ๊ฐ€ ๊ธฐ์ค€ -31% ์ด์ƒ ํ•˜๋ฝ(๊ฑฐ๋ž˜์†Œ๋ณต์ˆ˜์‹œ ์ตœ๋Œ€๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜์†Œ ๊ธฐ์ค€)"],
64
- ["์„ ๋ฌผ/์˜๊ตฌ ๋งˆ์ผ“์— ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ","FIAT ๋งˆ์ผ“(1๊ฐœ ๊ธฐ์ค€) ํฌํ•จ 10๊ฐœ ๋ฏธ๋งŒ์˜ ํ˜„๋ฌผ ๋งˆ์ผ“์— ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค","์ค‘์•™ํ™” ๊ฑฐ๋ž˜์†Œ์— ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค","DEX ๊ฑฐ๋ž˜์†Œ์— ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค"],
65
- ["์ง€๋‚œ 52์ฃผ๊ฐ„ ์ƒ์Šน์ถ”์„ธ์˜ ํ๋ฆ„์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ","์ง€๋‚œ 52์ฃผ๊ฐ„ ์ผ์ •ํ•œ ์ˆ˜์ค€์˜ ํ๋ฆ„์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค","์ง€๋‚œ 52์ฃผ๊ฐ„ ํ•˜๋ฝ์ถ”์„ธ์˜ ํ๋ฆ„์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค"],
66
- ["100,000 ์ด์ƒ์ž…๋‹ˆ๋‹ค ","50,000 ์ด์ƒ 100,000 ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค","10,000 ์ด์ƒ 50,000 ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค","1,000 ์ด์ƒ 10,000๋ช… ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค","1,000 ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค"],
67
- ["์ฝ”์ธ๋งˆ์ผ“์บก ๋˜๋Š” ์ฝ”์ธ๊ฒŒ์ฝ” ๋“ฑ์— ๊ณต๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ","์ž์ฒด์ปค๋ฎค๋‹ˆํ‹ฐ์— ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค","ํ™ˆํŽ˜์ด์ง€ ๋˜๋Š” ๋ฐฑ์„œ์—์„œ๋งŒ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค"],
68
- ["๋งˆ์ผ์Šคํ†ค ๋‹ฌ์„ฑ 70% ์ด์ƒ์„ ๋‹ฌ์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค ","๋งˆ์ผ์Šคํ†ค ๋‹ฌ์„ฑ 20% ์ด์ƒ 70% ๋ฏธ๋งŒ์„ ๋‹ฌ์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค","๋งˆ์ผ์Šคํ†ค ๋‹ฌ์„ฑ 20% ๋ฏธ๋งŒ์„ ๋‹ฌ์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค"],
69
- ["์žฌ๋‹จ ๋ฐ ์šด์šฉ์‚ฌ(์ง€๋ฐฐ๊ตฌ์กฐ ํฌํ•จ)์ด IPO(์ƒ์žฅ) ๋ฒ•์ธ ","์žฌ๋‹จ ๋ฐ ์šด์šฉ์‚ฌ(์ง€๋ฐฐ๊ตฌ์กฐ ํฌํ•จ)์ด ์™ธ๊ฐ ๋˜๋Š” ๋ฒ•๋ฅ  ๋“ฑ๋ก(์˜ˆ, ์ „์ž๊ธˆ์œต์—…์ž, VASP ๋“ฑ)๋ฒ•์ธ","์žฌ๋‹จ ๋ฐ ์šด์šฉ์‚ฌ(์ง€๋ฐฐ๊ตฌ์กฐ ํฌํ•จ)์ด ์ผ๋ฐ˜ ๋ฒ•์ธ"],
70
- ["๊ธ€๋กœ๋ฒŒ ์ˆ˜์ค€์˜ ๋›ฐ์–ด๋‚œ ์ „๋ฌธ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ","๋กœ์ปฌ ์ˆ˜์ค€์˜ ์ „๋ฌธ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค"],
71
- ["1๋…„ ์ด์ƒ ","1๋…„ ์ด๋‚ด","6๊ฐœ์›” ์ด๋‚ด"]
72
- ]
73
-
74
- scores = [[1, 0],
75
- [3, 2, 1],
76
- [2, 1.5, 1],
77
- [1, 0],
78
- [1, 0],
79
- [3, 2, 1, 0],
80
- [3, 2, 1, 0],
81
- [3, 2, 1, 0],
82
- [2, 1, 0],
83
- [3, 2, 1],
84
- [2, 1, 0],
85
- [3, 2, 1],
86
- [1, 0],
87
- [2, 1, 0],
88
- [3, 2, 1],
89
- [2, 1, 0],
90
- [2, 1, 0],
91
- [1, 0],
92
- [1, 0],
93
- [1, 0],
94
- [2, 1, 0],
95
- [3, 2.5, 2, 1.5, 1, 0],
96
- [3, 2, 1],
97
- [4, 3, 2, 1],
98
- [1, 0.5, 0],
99
- [5, 4, 3, 2, 1],
100
- [1.5, 1, 0.5],
101
- [1.5, 1, 0.5],
102
- [3, 2, 1],
103
- [2, 1],
104
- [3, 2, 1]
105
- ]
106
-
107
- mquestions = [ "32. ํ† ํฐ ์œ ํ†ต๊ด€๋ จ ํˆฌ์ž์ž ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ์ค€๋น„์ƒํƒœ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•ด์ฃผ์„ธ์š”."]
108
- moptions = [["์™ธ๋ถ€ ์˜ˆ์น˜(์ปค์Šคํ„ฐ๋””) ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค", "์žฌ๋‹จ ๋ฝ์—… ์Šคํ…Œ์ดํ‚น์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค", "๋น…ํ™€๋” ๋ฝ์—… ์Šคํ…Œ์ดํ‚น์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค", "ํ•ด๋‹น์‚ฌํ•ญ ์—†์Šต๋‹ˆ๋‹ค"]]
109
- mscores = [[1, 1, 1, 0]]
110
-
111
-
112
- def get_grade(total_score):
113
- converted_score = (total_score)
114
-
115
- grades = {
116
- '์ˆ˜': (65.7, 73, "๋“ฑ๊ธ‰์ •์˜๏ผš ๋งค์šฐ ์–‘ํ˜ธํ•œ ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰ ์—ญ๋Ÿ‰๊ณผ ์ง„ํ–‰์„ ๋ณด์ด๊ณ  ์žˆ์œผ๋ฉฐ ํ–ฅํ›„ ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ง€์†์„ฑ ์—ญ์‹œ ๋†’์€ ๊ฒƒ์œผ๋กœ ํ‰๏ฟฝ๏ฟฝ๏ฟฝ๋ฉ๋‹ˆ๋‹ค.๋Œ€์™ธ์ ์ธ ํ™˜๊ฒฝ ๋ณ€ํ™”์—๋„ ์œ ์—ฐํ•œ ๋Œ€์‘๊ณผ ๋ณต์›๋ ฅ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค."),
117
- '์šฐ': (51.1, 65.6, "๋“ฑ๊ธ‰์ •์˜๏ผš ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰ ์—ญ๋Ÿ‰๊ณผ ์ง„ํ–‰์ด ์—…๊ณ„ ํ‰๊ท  ์ˆ˜์ค€์œผ๋กœ ๋ชฉํ‘œ๋‹ฌ์„ฑ ๋Šฅ๋ ฅ์ด ์žˆ๊ณ  ๋ฌธ์ œํ•ด๊ฒฐ ๋Šฅ๋ ฅ์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์–ด๋“œ๋ฐ”์ด์ €์™€ ์—ญ๋Ÿ‰ ์กฐ์„ฑ์„ ๊ฐ•ํ™”ํ•œ๋‹ค๋ฉด ๋ณด๋‹ค ๋ฐœ์ „์ ์ธ ์ƒํ™ฉ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค."),
118
- '๋ฏธ': (29.2, 51, "๋“ฑ๊ธ‰์ •์˜๏ผš ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ˆ ์  ํƒ€๋‹น์„ฑ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธํ‰๊ฐ€์—์„œ ๋ฏธํกํ•œ ํšจ์†Œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์œ„ํ—˜์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋ณด์™„๊ณผ ์ปจ์„คํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."),
119
- '์–‘': (21.9, 29.1, "๋“ฑ๊ธ‰์ •์˜๏ผš ํ”„๋กœ์ ํŠธ์˜ ์‹œ์ž‘์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์—ฌ๋Ÿฌ ์œ„ํ—˜ ์š”์†Œ๊ฐ€ ์‚ฐ์žฌ๋˜์–ด ์žˆ๊ธฐ์— ์ˆ˜ํ–‰์ด ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ทผ๋ณธ์ ์ธ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ƒ์žฅ์„ ์œ„ํ•œ ์ปจ์„คํŒ…์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."),
120
- '๊ฐ€': (0, 21.8, "๋“ฑ๊ธ‰์ •์˜๏ผš ํ”„๋กœ์ ํŠธ์˜ ์‹œ์ž‘์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์—ฌ๋Ÿฌ ์œ„ํ—˜ ์š”์†Œ๊ฐ€ ์‚ฐ์žฌ๋˜์–ด ์žˆ๊ธฐ์— ์ˆ˜ํ–‰์ด ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ทผ๋ณธ์ ์ธ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ƒ์žฅ์„ ์œ„ํ•œ ์ปจ์„คํŒ…์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.")
121
- }
122
-
123
- for grade, (low, high, definition) in grades.items():
124
- if low <= converted_score <= high:
125
- return grade, definition # ๋“ฑ๊ธ‰๊ณผ ์ •์˜๋ฅผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜
126
- return "No Grade", "" # ๋“ฑ๊ธ‰์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
127
-
128
-
129
-
130
- # ์ฐจํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
131
- def create_charts(project_name, contact_email, contact_number, *args):
132
- # Separate radio and checkbox choices
133
- radio_choices = args[:-1] # All except last argument
134
- checkbox_choices = args[-1] # Last argument
135
-
136
- # Zapier Webhook URL
137
- webhook_url = "https://hooks.zapier.com/hooks/catch/14523965/3egrs04/"
138
-
139
- # ์ „์†กํ•  ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ
140
- data = {
141
- "project_name": project_name,
142
- "contact_email": contact_email,
143
- "contact_number": contact_number,
144
- "responses": args
145
- }
146
-
147
- # Zapier Webhook์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก
148
- response = requests.post(webhook_url, json=data)
149
-
150
-
151
- total_score = 0
152
- choice_scores = []
153
- labels = []
154
-
155
- # Calculate score and labels for radio choices
156
- for i, choice in enumerate(radio_choices):
157
- if choice in options[i]:
158
- total_score += scores[i][options[i].index(choice)]
159
- choice_scores.append(scores[i][options[i].index(choice)])
160
- labels.append(options[i][options[i].index(choice)])
161
-
162
- # Calculate score and labels for checkbox choices
163
- for choice in checkbox_choices:
164
- for mopt, mscore in zip(moptions, mscores):
165
- if choice in mopt:
166
- total_score += mscore[mopt.index(choice)]
167
- choice_scores.append(mscore[mopt.index(choice)])
168
- labels.append(choice)
169
-
170
-
171
- # ์ตœ์ข… ์ ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋“ฑ๊ธ‰ ๊ฒฐ์ •
172
- # grade = get_grade(total_score)
173
-
174
- grade, definition = get_grade(total_score)
175
-
176
-
177
- # Create various plots
178
- fig, axs = plt.subplots(2, 2, figsize=(40, 30)) # ์„œ๋ธŒํ”Œ๋กฏ ๊ทธ๋ฆฌ๋“œ๋ฅผ 2x2๋กœ ์œ ์ง€
179
-
180
-
181
- # Bar chart for total score
182
- axs[0, 0].bar(["Total Score"], [total_score])
183
- axs[0, 0].set_ylim(0, max(72, total_score + 10))
184
-
185
- # Pie chart for individual choice scores
186
- axs[0, 1].pie(choice_scores, labels=labels, autopct='%1.1f%%', startangle=140)
187
-
188
- # Line chart for choice scores over time
189
- axs[1, 0].plot(choice_scores, marker='o') # ์ˆ˜์ •๋œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ
190
- axs[1, 0].set_title("Score Over Time")
191
-
192
- # Area chart for choice scores
193
- axs[1, 1].stackplot(range(len(choice_scores)), choice_scores) # ์ˆ˜์ •๋œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ
194
- axs[1, 1].set_title("Area Chart")
195
-
196
- plt.tight_layout()
197
- fig = plt.gcf()
198
-
199
-
200
- plt.figure()
201
- plt.bar(range(len(choice_scores)), choice_scores)
202
- plt.xlabel('Choices')
203
- plt.ylabel('Scores')
204
- plt.title('Scores for Choices')
205
- plt.show()
206
-
207
- return fig, total_score, f"{grade} ({definition})" # ๋“ฑ๊ธ‰๊ณผ ๋“ฑ๊ธ‰ ์ •์˜๋ฅผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜
208
-
209
-
210
-
211
- css = """
212
- footer {
213
- visibility: hidden;
214
- }
215
- """
216
-
217
- # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
218
- iface = gr.Interface(
219
- fn=create_charts,
220
- inputs=[
221
- gr.Textbox(label="ํ”„๋กœ์ ํŠธ ๋ช…์นญ(ํ† ํฐ๋ช…)"),
222
- gr.Textbox(label="๋‹ด๋‹น์ž ์„ฑํ•จ"),
223
- gr.Textbox(label="๋‹ด๋‹น์ž ์ด๋ฉ”์ผ"),
224
- gr.Textbox(label="๋‹ด๋‹น์ž ์—ฐ๋ฝ์ฒ˜")
225
- ] + [
226
- gr.Radio(choices=opts, label=ques) for ques, opts in zip(questions, options)
227
- ] + [
228
- gr.CheckboxGroup(choices=mopts, label=mques) for mques, mopts in zip(mquestions, moptions)
229
- ],
230
- outputs=[
231
- gr.Plot(),
232
- gr.Number(label="์ตœ์ข… ์ ์ˆ˜(73์  ๋งŒ์ )"),
233
- gr.Text(label="๋“ฑ๊ธ‰")
234
- ],
235
- title=" Korating: SELF(์ž๊ฐ€) ์ง„๋‹จ ์„œ๋น„์Šค",
236
- description = " ๋””์ง€ํ„ธ์ž์‚ฐ ์ธ์ฆํ‰๊ฐ€์˜ ๋ฆฌ๋”์ธ '์ฝ”๋ ˆ์ดํŒ…'์˜ '๊ฐ€์ƒ์ž์‚ฐ ์…€ํ”„ ์ž๊ฐ€์ง„๋‹จ' ์„œ๋น„์Šค๋Š”, ํˆฌ์ž์ž ๋ณดํ˜ธ ๋ฐ ๊ฑด์ „ํ•œ ๊ฐ€์ƒ์ž์‚ฐ ์ƒํƒœ๊ณ„ ๊ตฌ์ถ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.",
237
- css=css # CSS ์Šคํƒ€์ผ ์ ์šฉ
238
- )
239
-
240
- iface.launch()
 
1
  import gradio as gr
 
 
 
2
 
3
+ # ์˜ˆ์‹œ ๋ฌธ์ œ, ์„ ํƒ์ง€, ์ ์ˆ˜ ์ •์˜
4
+ questions = [
5
+ "1. ๋‹น์‹ ์˜ ์ข‹์•„ํ•˜๋Š” ์ƒ‰์€ ๋ฌด์—‡์ธ๊ฐ€์š”?",
6
+ "2. ์ฃผ๋ง์— ๊ฐ€์žฅ ํ•˜๊ณ  ์‹ถ์€ ํ™œ๋™์€?",
7
+ "3. ์ข‹์•„ํ•˜๋Š” ๊ณ„์ ˆ์€?",
8
+ "4. ์„ ํ˜ธํ•˜๋Š” ์Œ์‹ ์ข…๋ฅ˜๋Š”?",
9
+ "5. ์ฝ๊ณ  ์‹ถ์€ ์ฑ…์˜ ์žฅ๋ฅด๋Š”?",
10
+ "6. ์—ฌํ–‰ ๊ฐ€๊ณ  ์‹ถ์€ ๊ณณ์€?"
11
+ ]
12
+
13
+ options = [
14
+ ["๋นจ๊ฐ•", "ํŒŒ๋ž‘", "์ดˆ๋ก"],
15
+ ["์‚ฐ์ฑ…ํ•˜๊ธฐ", "์˜ํ™” ๋ณด๊ธฐ", "์ฑ… ์ฝ๊ธฐ"],
16
+ ["๋ด„", "์—ฌ๋ฆ„", "๊ฐ€์„", "๊ฒจ์šธ"],
17
+ ["ํ•œ์‹", "์ค‘์‹", "์–‘์‹", "์ผ์‹"],
18
+ ["์†Œ์„ค", "์ž๊ธฐ๊ณ„๋ฐœ", "์—ญ์‚ฌ", "๊ณผํ•™"],
19
+ ["์‚ฐ", "๋ฐ”๋‹ค", "๋„์‹œ", "์‹œ๊ณจ"]
20
+ ]
21
+
22
+ scores = [
23
+ [10, 20, 30],
24
+ [30, 20, 10],
25
+ [15, 15, 15, 15],
26
+ [25, 25, 25, 25],
27
+ [10, 20, 30, 40],
28
+ [40, 30, 20, 10]
29
+ ]
30
+
31
+ # ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์— ๋”ฐ๋ฅธ ์ ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ ๋“ฑ๊ธ‰์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•จ์ˆ˜
32
+ def calculate_score(*answers):
33
+ total_score = sum([scores[i][ans] for i, ans in enumerate(answers)])
34
+ feedback = f"์ด ์ ์ˆ˜๋Š” {total_score}์ ์ž…๋‹ˆ๋‹ค."
35
+ return total_score, feedback
36
+
37
+ with gr.Blocks() as demo:
38
+ with gr.Tabs():
39
+ for i in range(1, 4): # ์ด 3๊ฐœ์˜ ํƒญ(ํŽ˜์ด์ง€) ์ƒ์„ฑ
40
+ with gr.TabItem(f"๋ฌธ์ œ ์„ธํŠธ {i}"):
41
+ # ํ˜„์žฌ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ œ์™€ ์„ ํƒ์ง€ ์ถ”์ถœ
42
+ current_questions = questions[(i-1)*2:i*2]
43
+ current_options = options[(i-1)*2:i*2]
44
+ inputs = [gr.Radio(label=ques, choices=opts, value=0) for ques, opts in zip(current_questions, current_options)]
45
+ if i < 3:
46
+ next_button = gr.Button(f"๋‹ค์Œ: ๋ฌธ์ œ ์„ธํŠธ {i+1}")
47
+ next_button.click(None, inputs, gr.Tab(f"๋ฌธ์ œ ์„ธํŠธ {i+1}"))
48
+ else:
49
+ submit_button = gr.Button("์ œ์ถœ")
50
+ submit_button.click(calculate_score, inputs, [gr.Number(label="์ด ์ ์ˆ˜"), gr.Text(label="ํ”ผ๋“œ๋ฐฑ")])
51
+
52
+ demo.launch()