web_vuln_dashboard/
│
├── app.py
├── config.py
├── requirements.txt
│
├── data/
│ ├── manual_results.csv
│ └── auto_results.json
│
├── utils/
│ ├── __init__.py
│ ├── loader.py
│ ├── comparator.py
│ └── metrics.py
│
└── ui/
├── __init__.py
└── dashboard_ui.py
① 데이터 생성
EC2 취약 웹앱
→ ② 수집
수동 진단 / Python 자동 진단
→ ③ 연결
check_id 기준 병합
→ ④ 분석
일치·오탐·미탐 계산
→ ⑤ 시각화
Streamlit 대시보드
총 진단 항목: 6개 수동 취약: 6개 자동 취약: 5개 결과 일치율: 83.3% 오탐: 0개 미탐: 1개
1. 수동 vs 자동 취약점 수 비교 막대그래프
2. 일치 / 오탐 / 미탐 / 판단불가 분포 도넛 차트
3. High / Medium / Low 위험도 분포 파이 차트
| 구분 | 색상 |
|---|---|
| 일치 | 파랑 또는 초록 |
| 오탐 | 노랑 |
| 미탐 | 빨강 |
| 판단불가 | 회색 |
| High | 빨강 |
| Medium | 노랑 |
| Low | 하늘색(파랑에서 다운down) |

색이 반대되도록 구성해 바로 취약한 부분이 어디인지 확인 할 수 있도록.?
표 컬럼
AI 설명이나 대응 방안은 별도 상세 보기로
check_id
category
item
manual_result
auto_result
comparison
risk
manual_evidence
evidence
AI 설명은 테이블에 길게 넣지 말고 st.expander() 로 빼기


| 취약 비율 | 상태 | 색상 |
|---|---|---|
| 0~10% | 양호 | 파랑 |
| 10~30% | 보통 | 하늘색 |
| 30~50% | 주의 | 노랑 |
| 50% 이상 | 위험 | 빨강 |
| 일치율 | 상태 | 색상 |
|---|---|---|
| 90% 이상 | 우수 | 파랑 |
| 75~89% | 양호 | 하늘색 |
| 50~74% | 주의 | 노랑 |
| 50% 미만 | 낮음 | 빨강 |