Skip to content

Latest commit

Β 

History

173 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘€ 눈길 (Nun-Gil)

μ›ΉμΊ μœΌλ‘œ 집쀑도λ₯Ό μΈ‘μ •ν•˜κ³ , AIκ°€ 곡뢀λ₯Ό λ„μ™€μ£ΌλŠ” ν•™μŠ΅ 보쑰 μ„œλΉ„μŠ€

HSU Capstone Supabase Claude AI Vanilla JS pdf.js D3.js


μ›ΉμΊ λ§Œ 있으면 β€” μ‹œμ„ μ΄ λ‹ΏλŠ” κ³³μ—μ„œ 집쀑이 μ‹œμž‘λ©λ‹ˆλ‹€.


πŸ“‘ λͺ©μ°¨


🎯 ν”„λ‘œμ νŠΈ μ†Œκ°œ

λˆˆκΈΈμ€ μ›ΉμΊ  μ‹œμ„  좔적과 Claude AIλ₯Ό κ²°ν•©ν•œ 슀마트 ν•™μŠ΅ 보쑰 μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
PDF / PPT λ¬Έμ„œλ₯Ό μ—…λ‘œλ“œν•˜λ©΄, AIκ°€ μš”μ•½Β·λ§ˆμΈλ“œλ§΅Β·ν€΄μ¦ˆλ₯Ό μžλ™ μƒμ„±ν•˜κ³ 
κ³΅λΆ€ν•˜λŠ” λ™μ•ˆ μ‹œμ„ μ΄ μ–Όλ§ˆλ‚˜ μ§‘μ€‘λλŠ”μ§€λ₯Ό 집쀑도 점수둜 뢄석해 λ³΄μ—¬μ€λ‹ˆλ‹€.

πŸ’‘ 핡심 β€” 흩어진 ν•™μŠ΅ 도ꡬλ₯Ό ν•˜λ‚˜μ˜ νλ¦„μœΌλ‘œ

κΈ°μ‘΄μ—λŠ” λ¬Έμ„œ λ·°μ–΄ Β· μš”μ•½/정리 Β· 문제 풀이 Β· 집쀑도 관리λ₯Ό 각각 λ‹€λ₯Έ μ•±μ—μ„œ λ”°λ‘œ ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. λˆˆκΈΈμ€ 이 λͺ¨λ“  단계λ₯Ό ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€ μ•ˆμ—μ„œ λŠκΉ€ 없이 μ—°κ²°ν•©λ‹ˆλ‹€ β€” λ¬Έμ„œλ₯Ό 읽으며 κ³§λ°”λ‘œ AI ν•™μŠ΅ 자료λ₯Ό λ§Œλ“€κ³ , 같은 ν™”λ©΄μ—μ„œ μ‹œμ„ μœΌλ‘œ 집쀑도λ₯Ό μΈ‘μ •ν•˜λ©°, ν•™μŠ΅μ΄ λλ‚˜λ©΄ 레포트둜 λŒμ•„λ΄…λ‹ˆλ‹€.

λ¬Έμ„œ μ—…λ‘œλ“œ  β†’  읽기(μ‹œμ„  좔적)  β†’  AI μš”μ•½Β·λ§ˆμΈλ“œλ§΅Β·ν€΄μ¦ˆ  β†’  집쀑도 레포트
   └─────────────── ν•œ ν™”λ©΄, λŠκΉ€ μ—†λŠ” 단일 ν•™μŠ΅ 흐름 β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
μ‚¬μš©μžκ°€ PDFλ₯Ό μ—΄κ³  κ³΅λΆ€ν•œλ‹€
      ↓
웹캠이 μ‹œμ„ μ„ μΆ”μ ν•œλ‹€ (EyeDID SDK)
      ↓
화면을 λ²—μ–΄λ‚˜λ©΄ κ²½κ³  β†’ 집쀑도λ₯Ό μ‹€μ‹œκ°„ 기둝
      ↓
Claude AIκ°€ λ¬Έμ„œλ₯Ό 뢄석 β†’ μš”μ•½ / λ§ˆμΈλ“œλ§΅ / ν€΄μ¦ˆ 생성
      ↓
μ„Έμ…˜ μ’…λ£Œ β†’ 집쀑도 레포트둜 ν•™μŠ΅ νŒ¨ν„΄ 확인

✨ μ£Όμš” κΈ°λŠ₯

πŸ“„ 슀마트 λ¬Έμ„œ λ·°μ–΄

κΈ°λŠ₯ μ„€λͺ…
PDF / PPT μ—…λ‘œλ“œ PPTλŠ” Cloud Edge Function으둜 μžλ™ PDF λ³€ν™˜
μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ¬Έμ„œλ₯Ό μ£Όμ œλ³„λ‘œ λ¬Άμ–΄ 관리
인라인 μ „ν™˜ λ·°μ–΄ μ•ˆμ—μ„œ λ¬Έμ„œ μ „ν™˜ (νŽ˜μ΄μ§€ 이동 μ—†μŒ)
뢁마크 5κ°€μ§€ 색상, λ©”λͺ¨ 첨뢀, λΆλ§ˆν¬ν•¨μ—μ„œ 톡합 쑰회
λ©”λͺ¨μž₯ λ¬Έμ„œλ³„ 독립 λ©”λͺ¨ Β· 계정과 DB 동기화

πŸ‘ μ•„μ΄νŠΈλž˜ν‚Ή & 집쀑도 μΈ‘μ •

  • EyeDID SDK (WASM) β€” μ›ΉμΊ μœΌλ‘œ μ‹€μ‹œκ°„ μ‹œμ„  μ’Œν‘œ 좔적
  • 6포인트 μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜ + μžλ™ μ˜€ν”„μ…‹ 보정 β€” μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜ 직후 쀑앙 μ‘μ‹œλ‘œ μ‹œμ„  였차λ₯Ό μΈ‘μ •ν•΄ μžλ™ ꡐ정
  • μ‹œμ„  μ•ˆμ •ν™” νŒŒμ΄ν”„λΌμΈ β€” κΉœλΉ‘μž„ νŒμ • Β· μ›Œλ°μ—… Β· 속도 μ œν•œ Β· μ§€μˆ˜μ΄λ™ν‰κ·  μŠ€λ¬΄λ”©
  • ν™”λ©΄ μ΄νƒˆ 5초 감지 β†’ κ²½κ³  μœ„μ ― νŒμ—…, λ°˜μ‘ μ‹œκ°„ 기둝
  • 집쀑도 점수 (100점 만점) μžλ™ μ‚°μΆœ
집쀑도 점수 = 정상 μ‘μ‹œ λΉ„μœ¨ (40점)
            + 경고 감점       (25점)
            + λ°˜μ‘ 속도       (15점)
            + μž¬λ… νŒ¨ν„΄       (20점, μ§€μˆ˜ 감쇠 β€” μž¬λ…μ΄ λ§Žμ„μˆ˜λ‘ μ™„λ§Œνžˆ 감점)

🧠 AI 지식 μžμ‚°ν™”

λ¬Έμ„œ μ—…λ‘œλ“œ λ˜λŠ” λ·°μ–΄ μ‹€μ‹œκ°„ 생성 β€” 두 κ°€μ§€ 경둜둜 μžλ™ν™”

λ¬Έμ„œ μ—…λ‘œλ“œ
  └─ analyze-document Edge Function
       └─ Claude API β†’ SUMMARY + MINDMAP + QUIZ λ™μ‹œ 생성

λ·°μ–΄ μ‹€μ‹œκ°„
  └─ μ‚¬μ΄λ“œλ°” λ²„νŠΌ 클릭
       └─ λ¬Έμ„œ μ²­ν‚Ή β†’ κ°œλ… μΆ”μΆœ β†’ Claude API 호좜
μžμ‚° μœ ν˜• λ‚΄μš©
πŸ“ μš”μ•½ 핡심 κ°œλ… μΉ΄λ“œ + 클릭 μ‹œ AI 심화 μ„€λͺ…
πŸ—Ί λ§ˆμΈλ“œλ§΅ D3.js 계측 트리, λ…Έλ“œ 펼치기/μ ‘κΈ°, 쀌/νŒ¨λ‹
❓ ν€΄μ¦ˆ 객관식·O/XΒ·λ‹¨λ‹΅ν˜• + λ‚œμ΄λ„ 3단계 + μ¦‰μ‹œ μ±„μ Β·ν•΄μ„€Β·λΆλ§ˆν¬ + ν€΄μ¦ˆ μ‚­μ œ

πŸ“Š 집쀑도 레포트

  • λ¬Έμ„œλ³„λ‘œ 묢인 ν•™μŠ΅ 기둝 λͺ©λ‘
  • λ‚ μ§œλ³„ 집쀑도 좔이 차트 β€” 데이터가 λŠ˜μ–΄λ‚˜λ©΄ κ°€λ‘œ 슀크둀 (κ³ μ • 간격 μœ μ§€)
  • 차트 포인트 클릭 β†’ ν•΄λ‹Ή μ„Έμ…˜ 상세 μ§€ν‘œ 확인
    • κ²½κ³  횟수, 평균 λ°˜μ‘ μ‹œκ°„, 정상 μ‘μ‹œ λΉ„μœ¨, μž¬λ… 횟수
    • ꡬ간별 집쀑 점수 κ·Έλž˜ν”„

πŸ— μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Browser                          β”‚
β”‚                                                         β”‚
β”‚  start β†’ signup β†’ mainpage β†’ workspace β†’ viewer        β”‚
β”‚                                           β”‚             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ viewer.html β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚
β”‚  β”‚  μ‚¬μ΄λ“œλ°”          PDF λ·°μ–΄              νˆ΄λ°”         β”‚
β”‚  β”‚  β”œ μƒˆ λ¬Έμ„œ μΆ”κ°€    β”œ pdf.js λ Œλ”λ§       β”œ ν•™μŠ΅ μ‹œμž‘ β”‚
β”‚  β”‚  β”œ λ¬Έμ„œ λͺ©λ‘       β”œ λ ˆμ΄μ•„μ›ƒ μ˜€λ²„λ ˆμ΄   β”œ ν™•λŒ€/μΆ•μ†Œ β”‚
β”‚  β”‚  β”œ μš”μ•½/λ§ˆμΈλ“œλ§΅   β”” μ‹œμ„  좔적 λ ˆμ΄μ–΄    β”” λ©”λͺ¨/λΆλ§ˆν¬β”‚
β”‚  β”‚  β”” ν€΄μ¦ˆ                                              β”‚
β”‚  └──────────────────────────────────────────────────────│
β”‚                           β”‚                             β”‚
β”‚         EyeDID SDK (WASM) β€” μ›ΉμΊ  μ‹œμ„  좔적              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚ HTTPS
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚          Supabase               β”‚
          β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
          β”‚  β”‚  Edge Functions (Deno)   β”‚   β”‚
          β”‚  β”‚  β”œ ask-claude            β”‚   β”‚
          β”‚  β”‚  β”œ analyze-document      β”‚   β”‚
          β”‚  β”‚  β”œ convert-ppt           β”‚   β”‚
          β”‚  β”‚  β”” parse-document        β”‚   β”‚
          β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
          β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
          β”‚  β”‚   Auth   β”‚ β”‚  PostgreSQL  β”‚  β”‚
          β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
          β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
          β”‚  β”‚ Storage  β”‚  (PDF, layout JSON)β”‚
          β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                    Claude API (Anthropic)
                    CloudConvert API

πŸ—„ λ°μ΄ν„°λ² μ΄μŠ€

ν…Œμ΄λΈ” μ—­ν• 
users μ‚¬μš©μž ν”„λ‘œν•„ (이름)
workspaces μ›Œν¬μŠ€νŽ˜μ΄μŠ€
documents μ—…λ‘œλ“œ λ¬Έμ„œ (PDF/PPT, νŒŒμ‹± μƒνƒœ, layout JSON 경둜)
study_sessions ν•™μŠ΅ μ„Έμ…˜ (집쀑도 점수, κ²½κ³  횟수, μ‘μ‹œ μ‹œκ°„)
session_snapshots 10초 λ‹¨μœ„ 집쀑도 μŠ€λƒ…μƒ· (ꡬ간별 차트용)
learning_assets AI 생성 μžμ‚° (SUMMARY / MINDMAP / QUIZ)
bookmarks 뢁마크 (μœ„μΉ˜, 색상, λ©”λͺ¨)
document_notes λ¬Έμ„œλ³„ λ©”λͺ¨μž₯

πŸ›  기술 μŠ€νƒ

μ˜μ—­ 기술
ν”„λ‘ νŠΈμ—”λ“œ Vanilla JS (ES Modules, λ²ˆλ“€λŸ¬ μ—†μŒ), HTML5, CSS3
μ•„μ΄νŠΈλž˜ν‚Ή EyeDID SDK (WASM)
PDF λ Œλ”λ§ pdf.js + μ»€μŠ€ν…€ λ ˆμ΄μ•„μ›ƒ λ·°μ–΄
λ§ˆμΈλ“œλ§΅ D3.js (κ³„μΈ΅ν˜• 트리)
AI Claude API β€” claude-haiku-4-5-20251001
λ°±μ—”λ“œ / DB Supabase (Auth Β· PostgreSQL Β· RLS Β· Storage)
Edge Functions Deno (TypeScript)
PPT λ³€ν™˜ CloudConvert API
λ¬Έμ„œ νŒŒμ‹± Upstage Document Parse API
개발 μ„œλ²„ Node.js

πŸ“‚ 디렉토리 ꡬ쑰

Nun-Gil/
β”œβ”€β”€ ui/                          # ν”„λ‘ νŠΈμ—”λ“œ
β”‚   β”œβ”€β”€ start.html               # λžœλ”© νŽ˜μ΄μ§€
β”‚   β”œβ”€β”€ signup.html              # νšŒμ›κ°€μž… / 둜그인
β”‚   β”œβ”€β”€ mainpage.html            # μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘
β”‚   β”œβ”€β”€ workspace.html           # μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ¬Έμ„œ λͺ©λ‘
β”‚   β”œβ”€β”€ viewer.html              # β˜… 핡심 β€” λ·°μ–΄ + μ•„μ΄νŠΈλž˜ν‚Ή + AI
β”‚   β”œβ”€β”€ calibration.html         # μ‹œμ„  μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜
β”‚   β”œβ”€β”€ processing.html          # AI 사전 뢄석 λŒ€κΈ° ν™”λ©΄
β”‚   β”œβ”€β”€ report.html              # 집쀑도 레포트
β”‚   β”œβ”€β”€ profile.html             # 계정 μ„€μ •
β”‚   β”œβ”€β”€ script.js                # 뢁마크 / λ©”λͺ¨ UI
β”‚   β”œβ”€β”€ style.css                # κΈ€λ‘œλ²Œ μŠ€νƒ€μΌ
β”‚   β”œβ”€β”€ ai/                      # AI κΈ°λŠ₯ λͺ¨λ“ˆ (ES Modules)
β”‚   β”‚   β”œβ”€β”€ index.js             # λ·°μ–΄ ↔ AI μ—°κ²° μ§„μž…μ 
β”‚   β”‚   β”œβ”€β”€ common.js            # μ²­ν‚Ή Β· Claude 호좜 Β· μΊμ‹œ
β”‚   β”‚   β”œβ”€β”€ summary.js           # μš”μ•½
β”‚   β”‚   β”œβ”€β”€ mindmap.js           # λ§ˆμΈλ“œλ§΅
β”‚   β”‚   β”œβ”€β”€ quiz.js              # ν€΄μ¦ˆ
β”‚   β”‚   └── prompt.js            # ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ
β”‚   └── viewer/
β”‚       β”œβ”€β”€ layoutViewer.js      # λ ˆμ΄μ•„μ›ƒ 기반 PDF λ·°μ–΄
β”‚       └── pdfRenderer.js       # pdf.js λ Œλ”λŸ¬
β”‚
β”œβ”€β”€ src/lib/                     # 곡톡 ν΄λΌμ΄μ–ΈνŠΈ 라이브러리
β”‚   β”œβ”€β”€ supabase.js
β”‚   β”œβ”€β”€ auth.js
β”‚   β”œβ”€β”€ storage.js
β”‚   └── db/                      # DB μ ‘κ·Ό ν•¨μˆ˜
β”‚
β”œβ”€β”€ supabase/functions/          # Edge Functions (Deno)
β”‚   β”œβ”€β”€ ask-claude/              # λ·°μ–΄ AI 호좜 ν”„λ‘μ‹œ
β”‚   β”œβ”€β”€ analyze-document/        # μ—…λ‘œλ“œ μ‹œ AI 사전 뢄석
β”‚   β”œβ”€β”€ convert-ppt/             # PPT β†’ PDF λ³€ν™˜
β”‚   └── parse-document/          # Upstage λ¬Έμ„œ νŒŒμ‹±
β”‚
β”œβ”€β”€ seeso/                       # EyeDID SDK
β”œβ”€β”€ easy-seeso.js                # EyeDID 래퍼
β”œβ”€β”€ devServer.js                 # 개발 μ„œλ²„ (port 3000)
└── package.json

πŸ“± ν™”λ©΄ 흐름

start.html
  └─▢ signup.html              둜그인 / νšŒμ›κ°€μž…
        └─▢ mainpage.html      μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘
              └─▢ viewer.html  ─────────────────────────────────┐
                    β”‚                                            β”‚
                    β”œβ”€ μ‚¬μ΄λ“œλ°”                                  β”‚
                    β”‚   β”œβ”€ μƒˆ λ¬Έμ„œ μΆ”κ°€ ─▢ processing.html     β”‚
                    β”‚   β”œβ”€ λ¬Έμ„œ 선택 (in-place μ „ν™˜)            β”‚
                    β”‚   β”œβ”€ 원본 / μš”μ•½ / λ§ˆμΈλ“œλ§΅ / ν€΄μ¦ˆ        β”‚
                    β”‚   └─ 지식 μžμ‚° λͺ©λ‘                        β”‚
                    β”‚                                            β”‚
                    β”œβ”€ ν•™μŠ΅ μ‹œμž‘ (μ•„μ΄νŠΈλž˜ν‚Ή μ„Έμ…˜)               β”‚
                    β”œβ”€ 집쀑도 레포트 ─▢ report.html             β”‚
                    └─ 계정 μ„€μ • ─▢ profile.html                β”‚
                                                                 β”‚
                    calibration.html ◀─ μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜ ν•„μš” μ‹œ β”€β”€β”€β”˜

πŸ‘¨β€πŸ’» νŒ€

ν•œμ„±λŒ€ν•™κ΅ 2026 μΊ‘μŠ€ν†€λ””μžμΈ

이름 ν•™λ²ˆ 전곡 이메일
μ‹ μ€€ν˜Έ 2171080 λͺ¨λ°”μΌμ†Œν”„νŠΈμ›¨μ–΄ Β· 웹곡학 junho020122@hansung.ac.kr
μ„œμœ μ§„ 2371195 웹곡학 Β· λͺ¨λ°”μΌμ†Œν”„νŠΈμ›¨μ–΄ sseo08267@gmail.com
μ›μž¬μ—° 2371263 빅데이터 Β· 웹곡학 016420@naver.com
μ‹ μ˜μ„œ 2371225 λͺ¨λ°”μΌμ†Œν”„νŠΈμ›¨μ–΄ Β· 웹곡학 ss0125@hansung.ac.kr

πŸ‘€ 눈길 β€” μ‹œμ„ μ΄ λ‹ΏλŠ” κ³³μ—μ„œ 집쀑이 μ‹œμž‘λ©λ‹ˆλ‹€

About

2026 HSU Capstone Design

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages