다크 모드
기능명세서 (Functional Specification)
1. 개요
1.1 시스템 목표
KELI (K-University AI EduTech and Learning Initiative)는 한림대학교 SW 교과목을 위한 AI 기반 코딩 교육 플랫폼으로, 학습자가 별도의 프로그램 설치 없이 웹 브라우저에서 코딩 학습, 자동 채점, AI 피드백, 학습 분석을 수행할 수 있는 통합 교육 환경을 제공합니다.
1.2 대상 사용자
| 사용자 유형 | 주요 역할 | 예상 규모 |
|---|---|---|
| 학생 (학습자) | 문제 풀이, 코드 제출, AI 피드백 확인, 학습 이력 조회 | 500~1,000명/학기 |
| 교수 (교수자) | 문제 출제, 강의 관리, 시험 운영, 학습 분석 확인 | 10~30명 |
| 관리자 | 시스템 관리, 테넌트 설정, 사용자 관리, 모니터링 | 2~5명 |
1.3 기술 스택
| 영역 | 기술 | 비고 |
|---|---|---|
| Frontend | Next.js + React + Monaco Editor | 웹 기반 IDE, 반응형 |
| Backend | Node.js + Fastify | REST API, WebSocket |
| Database | PostgreSQL + Redis | 관계형 DB + 캐시/세션 |
| AI/LLM | Claude API + OpenAI GPT + LangChain | 코드 분석, 피드백, 문제 생성 |
| 코드 실행 | Docker Container (격리 실행) | C, Python, Java |
| 인프라 | Docker Compose + GitHub Actions + Nginx | CI/CD, 리버스 프록시 |
| 국제화 | next-intl | i18n 표준 방식 |
2. 시스템 구성도
+-------------------------------------------------------------------+
| KELI Platform |
+-------------------------------------------------------------------+
| |
| +------------------+ +------------------+ +---------------+ |
| | 학생 웹 포털 | | 교수자 웹 포털 | | 관리자 포털 | |
| | - 문제 풀이 | | - 문제 출제/관리 | | - 시스템 설정 | |
| | - 코드 에디터 | | - 강의/시험 관리 | | - 테넌트 관리 | |
| | - AI 피드백 확인 | | - 학습 분석 대시보드| | - 사용자 관리 | |
| | - 학습 이력 | | - 실시간 모니터링 | | - 모니터링 | |
| | - 수업 속도 평가 | | - AI 채점 검증 | | | |
| +--------+---------+ +--------+---------+ +-------+-------+ |
| | | | |
| +--------+-----------------------+-----------------------+------+ |
| | API Gateway (Fastify) | |
| | 인증/인가 | 라우팅 | Rate Limiting | WebSocket | |
| +---+----------------+----------------+----------------+--------+ |
| | | | | |
| +---+---+ +-------+------+ +------+-------+ +----+-------+ |
| | 1.문제 | | 2.AI 문제 | | 3.코드 실행 | | 4.AI 분석 | |
| | 은행 | | 생성 | | 및 채점 | | 및 학습 | |
| | 관리 | | 시스템 | | 시스템 | | 지원 | |
| +---+---+ +-------+------+ +------+-------+ +----+-------+ |
| | | | | |
| +---+---+ +-------+------+ +------+-------+ +----+-------+ |
| | 5.학습 | | 6.교수자 | | 7.클라우드 | | xAPI/LRS | |
| | 데이터 | | 학습 관리 | | 운영 환경 | | 엔진 | |
| | 분석 | | 시스템 | | (Docker) | | | |
| +-------+ +--------------+ +--------------+ +-----------+ |
| |
| +---------------------------------------------------------------+ |
| | PostgreSQL Database | |
| | 문제은행 | 제출이력 | 채점결과 | 학습로그 | 사용자 | 테넌트 | |
| +---------------------------------------------------------------+ |
+-------------------------------------------------------------------+3. 기능 상세 명세
3.1 시스템 환경 (ECR-001 ~ ECR-003)
FN-SYS-001: 시스템 기본 환경 구축
| 항목 | 내용 |
|---|---|
| 기능ID | FN-SYS-001 |
| 기능명 | 시스템 기본 환경 구축 |
| 설명 | 클라우드 기반 운영 환경 구축 (Docker, CI/CD, PostgreSQL, 모니터링) |
| 관련 요구사항 | ECR-001, ECR-002 |
| 우선순위 | 필수 |
| 구현 방식 | Docker Compose 기반 컨테이너 오케스트레이션, GitHub Actions CI/CD, PostgreSQL + Redis, Nginx 리버스 프록시 |
FN-SYS-002: 보안 아키텍처
| 항목 | 내용 |
|---|---|
| 기능ID | FN-SYS-002 |
| 기능명 | 다층 방어 보안 아키텍처 |
| 설명 | 사용자 인증/인가, 데이터 암호화, 접근 제어, 개인정보 보호 정책 적용 |
| 관련 요구사항 | ECR-003 |
| 우선순위 | 필수 |
| 구현 방식 | JWT 기반 인증, RBAC(역할 기반 접근제어), HTTPS, 데이터 암호화(at-rest/in-transit), SQL Injection/XSS 방어, 코드 실행 샌드박스 격리 |
3.2 공통 기능 (SFR-001 ~ SFR-003)
FN-COM-001: 공통 UI/UX 프레임워크
| 항목 | 내용 |
|---|---|
| 기능ID | FN-COM-001 |
| 기능명 | 공통 사항 및 UI/UX 프레임워크 |
| 설명 | 반응형 웹, 직관적 UI, 접근성 준수 |
| 관련 요구사항 | SFR-001 |
| 우선순위 | 필수 |
| 구현 방식 | Next.js App Router, Tailwind CSS, 디자인 시스템 구축, 반응형 레이아웃 |
FN-COM-002: 사용자 인증 및 계정 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-COM-002 |
| 기능명 | 로그인, 사용자 계정 및 개인정보 관리 |
| 설명 | 회원가입/로그인, 역할 기반 접근제어, 개인정보 관리 |
| 입력 | 이메일, 비밀번호, 사용자 정보 |
| 출력 | JWT 토큰, 사용자 프로필, 권한 정보 |
| 관련 요구사항 | SFR-002 |
| 우선순위 | 필수 |
| 구현 방식 | OAuth 2.0 / 학교 SSO 연동 가능 설계, JWT 인증, 역할(학생/교수/관리자) 기반 라우팅 |
FN-COM-003: 멀티테넌트 아키텍처
| 항목 | 내용 |
|---|---|
| 기능ID | FN-COM-003 |
| 기능명 | 멀티테넌트 구축 |
| 설명 | 학과/강좌별 독립 테넌트 구성, 데이터 격리 |
| 관련 요구사항 | SFR-003 |
| 우선순위 | 필수 |
| 구현 방식 | 스키마 기반 테넌트 분리 (PostgreSQL Schema), 테넌트별 설정/데이터 격리, 공유 인프라 위 논리적 분리 |
3.3 문제은행 시스템 (SFR-004 ~ SFR-005, SFR-021)
FN-QB-001: 코딩 문제은행 구축
| 항목 | 내용 |
|---|---|
| 기능ID | FN-QB-001 |
| 기능명 | 코딩 문제은행 데이터베이스 구축 |
| 설명 | Python, Java, C 언어 기반 코딩 문제 수집/등록/관리, 메타데이터 기반 분류 |
| 입력 | 문제 설명, 입력/출력 예시, 테스트케이스, 정답 코드, 난이도, 태그, 이미지/영상 |
| 출력 | 문제 목록, 상세 정보, 통계(정답률, 평균 해결시간) |
| 관련 요구사항 | SFR-004, SFR-021 |
| 우선순위 | 필수 (Tier 1) |
| 구현 방식 | PostgreSQL JSONB 기반 유연한 문제 스키마, 마크다운 에디터(이미지/영상 첨부 지원), S3 호환 스토리지(미디어 파일) |
FN-QB-002: 문제 검색 및 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-QB-002 |
| 기능명 | 문제 검색 및 관리 시스템 |
| 설명 | 난이도, 유형, 태그 기반 문제 검색/필터링, 문제 활용 현황 분석 |
| 입력 | 검색 키워드, 필터 조건 (난이도, 유형, 태그, 언어) |
| 출력 | 검색 결과 목록, 문제 활용 통계 |
| 관련 요구사항 | SFR-005 |
| 우선순위 | 필수 (Tier 1) |
| 구현 방식 | PostgreSQL Full-Text Search + 인덱싱, 패싯(facet) 기반 필터, 문제별 사용 이력 추적 |
FN-QB-003: 문제 이미지 및 영상 첨부
| 항목 | 내용 |
|---|---|
| 기능ID | FN-QB-003 |
| 기능명 | 문제 생성 시 이미지 및 영상 첨부 |
| 설명 | 문제 설명에 이미지, 다이어그램, 영상 파일 첨부 지원 |
| 입력 | 이미지 파일(PNG/JPG/SVG), 영상 파일(MP4), 다이어그램 |
| 출력 | 미디어가 포함된 문제 렌더링 |
| 관련 요구사항 | SFR-021 |
| 우선순위 | 중간 (Tier 2) |
| 구현 방식 | S3 호환 오브젝트 스토리지 업로드, 마크다운 에디터 미디어 삽입, CDN 기반 미디어 서빙 |
3.4 학습자 기능 (SFR-006, SFR-009, SFR-011)
FN-LRN-001: 문제 풀이 시스템 (웹 IDE)
| 항목 | 내용 |
|---|---|
| 기능ID | FN-LRN-001 |
| 기능명 | 웹 기반 문제 풀이 시스템 |
| 설명 | 브라우저 기반 코드 에디터(IDE)에서 코드 작성, 실행, 제출까지 원스톱 수행 |
| 입력 | 소스 코드, 프로그래밍 언어 선택 |
| 출력 | 실행 결과 (stdout/stderr), 컴파일 에러, 테스트케이스 결과 |
| 관련 요구사항 | SFR-006 |
| 우선순위 | 필수 (Tier 1) |
| 구현 방식 | Monaco Editor 기반 웹 IDE, 구문 하이라이팅, 자동완성, C/Python/Java 언어 전환, 실시간 코드 실행(Docker 컨테이너), 시험 모드/일반 학습 모드 분리 |
FN-LRN-002: 학습 활동 기록
| 항목 | 내용 |
|---|---|
| 기능ID | FN-LRN-002 |
| 기능명 | 학습 활동 기록 시스템 |
| 설명 | 코드 제출 이력, 버전별 풀이 이력, 학습 행동 데이터 자동 수집 |
| 입력 | 코드 제출 이벤트, 에디터 상호작용 |
| 출력 | 제출 이력 타임라인, 학습 행동 통계 |
| 관련 요구사항 | SFR-009 |
| 우선순위 | 필수 (Tier 2) |
| 구현 방식 | xAPI 표준 기반 LRS(Learning Record Store) 엔진, 시계열 학습 행동 데이터 수집, 코드 수정 횟수/작성 시간/제출 패턴 추적 |
FN-LRN-003: 학습 목표 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-LRN-003 |
| 기능명 | 학습 목표 관리 |
| 설명 | 학습자별 목표 설정, 진도 추적, 달성도 시각화 |
| 입력 | 학습 목표, 기간, 대상 문제셋 |
| 출력 | 진도율, 달성도 그래프, 추천 학습 경로 |
| 관련 요구사항 | SFR-011 |
| 우선순위 | 중간 (Tier 2) |
| 구현 방식 | 학습 경로 엔진, 진도 추적 대시보드, 마일스톤 기반 목표 관리 |
3.5 자동 채점 시스템 (SFR-007)
FN-GRD-001: 자동 채점 시스템 (14단계)
| 항목 | 내용 |
|---|---|
| 기능ID | FN-GRD-001 |
| 기능명 | 다단계 자동 채점 시스템 |
| 설명 | 14단계 자동 채점 프로세스 — 코드 컴파일, 실행, 정확성 검증, 논리 완성도 평가 |
| 입력 | 제출된 소스 코드, 문제 ID, 테스트케이스 |
| 출력 | 채점 점수, 단계별 결과, 테스트케이스 통과/실패 상세, 오류 메시지, 실행 시간/메모리 |
| 관련 요구사항 | SFR-007 |
| 우선순위 | 필수 (Tier 1) |
| 구현 방식 | Docker 컨테이너 기반 격리 실행, 14단계 파이프라인 (구문검사 → 컴파일 → 실행 → 테스트케이스 매칭 → 경계값 검사 → 시간/메모리 제한 → 코드 품질 → ...), 채점 큐(Redis) 기반 비동기 처리, 채점 로그 영구 저장 |
14단계 채점 프로세스 (참고):
| 단계 | 검증 항목 | 설명 |
|---|---|---|
| 1 | 구문 검사 | 문법 오류 여부 |
| 2 | 컴파일 | 컴파일 성공 여부 (C/Java) |
| 3 | 기본 실행 | 런타임 오류 없이 실행 여부 |
| 4 | 샘플 테스트 | 문제 제시 예시 입출력 |
| 5 | 기본 테스트케이스 | 표준 입력/출력 매칭 |
| 6 | 경계값 테스트 | 최소/최대/특수 입력 |
| 7 | 대량 데이터 | 대용량 입력 처리 |
| 8 | 시간 제한 | 실행 시간 초과 검사 |
| 9 | 메모리 제한 | 메모리 사용량 검사 |
| 10 | 출력 형식 | 공백/줄바꿈 등 형식 검증 |
| 11 | 부분 점수 | 부분 정답 인정 |
| 12 | 코드 품질 | 코드 스타일/구조 |
| 13 | 논리 완성도 | 알고리즘 논리 평가 |
| 14 | 종합 평가 | 최종 점수 산출 |
3.6 AI 기능 (SFR-008, SFR-010, SFR-015, SFR-016, SFR-019)
FN-AI-001: AI 기반 학습 해설 제공
| 항목 | 내용 |
|---|---|
| 기능ID | FN-AI-001 |
| 기능명 | AI 기반 학습 해설 및 피드백 |
| 설명 | LLM이 코드 분석 결과를 바탕으로 단계별 학습 해설, 오류 원인 분석, 개선 방향 제시 |
| 입력 | 제출 코드, 문제 정보, 채점 결과, 학습자 수준 |
| 출력 | AI 해설(마크다운), 코드 오류 해석, 개선 제안, 추가 학습 가이드 |
| 관련 요구사항 | SFR-008 |
| 우선순위 | 필수 (Tier 1) |
| 구현 방식 | Claude API 기반 코드 분석, 프롬프트 엔지니어링으로 수준별 피드백 조절, RAG 파이프라인으로 문제 컨텍스트 주입, 해설 캐싱으로 비용 최적화 |
FN-AI-002: AI 기반 학습 분석
| 항목 | 내용 |
|---|---|
| 기능ID | FN-AI-002 |
| 기능명 | AI 기반 학습 패턴 분석 |
| 설명 | 학습자의 코드 제출 패턴, 오류 유형, 학습 진도를 AI가 분석하여 맞춤형 학습 경로 추천 |
| 입력 | 학습 이력 데이터, 채점 결과, 시계열 학습 행동 |
| 출력 | 학습 분석 리포트, 취약점 분석, 추천 학습 경로 |
| 관련 요구사항 | SFR-010 |
| 우선순위 | 필수 (Tier 2) |
| 구현 방식 | LLM 기반 학습 패턴 분석, 학습자 클러스터링, 취약 개념 자동 탐지, 맞춤형 추천 엔진 |
FN-AI-003: AI 기반 질의응답
| 항목 | 내용 |
|---|---|
| 기능ID | FN-AI-003 |
| 기능명 | AI 기반 질의응답 (AI 튜터) |
| 설명 | 학습자가 문제 풀이 중 AI에게 개념 질문, 코드 질의 가능 |
| 입력 | 질문 텍스트, 현재 코드 컨텍스트, 문제 정보 |
| 출력 | AI 답변, 관련 코드 예시, 참고 개념 링크 |
| 관련 요구사항 | SFR-015 |
| 우선순위 | 중간 (Tier 2) |
| 구현 방식 | Claude API 채팅 인터페이스, 문제+코드 컨텍스트 자동 주입, 답변 직접성 제어(힌트 모드 vs 정답 모드), AI 질의 로그 수집(교육 연구 데이터) |
FN-AI-004: AI 기반 문제 생성
| 항목 | 내용 |
|---|---|
| 기능ID | FN-AI-004 |
| 기능명 | AI 기반 문제 자동 생성 |
| 설명 | 교수자가 의도/조건을 입력하면 AI가 코딩 문제, 테스트케이스, 모범 답안을 자동 생성 |
| 입력 | 문제 의도(주제, 난이도, 알고리즘 유형), 루브릭 설정 |
| 출력 | 생성된 문제(설명, 입출력, 테스트케이스, 정답 코드), 교수자 승인 대기 상태 |
| 관련 요구사항 | SFR-016 |
| 우선순위 | 중간 (Tier 3) |
| 구현 방식 | LLM 기반 문제 생성 파이프라인, 루브릭 템플릿 적용, 교수자 승인 워크플로우(사용자 동의 없이 문제 생성 불가), 생성 문제 품질 자동 검증(테스트케이스 실행 확인) |
FN-AI-005: 코드 유사도 분석
| 항목 | 내용 |
|---|---|
| 기능ID | FN-AI-005 |
| 기능명 | AI 기반 코드 유사도 분석 (표절 탐지) |
| 설명 | 제출된 코드 간 유사도를 분석하여 표절 의심 사례 탐지 |
| 입력 | 동일 문제에 대한 복수 학생 제출 코드 |
| 출력 | 유사도 매트릭스, 의심 쌍 목록, 유사 코드 블록 하이라이트 |
| 관련 요구사항 | SFR-019 |
| 우선순위 | 중간 (Tier 3) |
| 구현 방식 | AST(Abstract Syntax Tree) 기반 구조적 유사도 분석 + LLM 의미론적 분석 병합, 토큰 기반 비교, 유사도 임계치 설정(교수자 조정 가능) |
3.7 교수자 기능 (SFR-012 ~ SFR-014, SFR-017 ~ SFR-018, SFR-020)
FN-TCH-001: 학생 학습 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-001 |
| 기능명 | 학생 학습 관리 |
| 설명 | 강의별 학생 목록 관리, 개별 학생 학습 현황 추적, 성적 관리 |
| 입력 | 학생 목록, 강의 정보 |
| 출력 | 학생별 학습 현황, 문제별 정답률, 제출 현황 분석 |
| 관련 요구사항 | SFR-013 |
| 우선순위 | 필수 (Tier 2) |
| 구현 방식 | 강의 그룹 생성, 학생 등록/초대, 개별 학습 이력 대시보드, 엑셀 내보내기 |
FN-TCH-002: 학습 리포트 생성
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-002 |
| 기능명 | 학습 리포트 자동 생성 |
| 설명 | 강의/시험별 종합 리포트 자동 생성, PDF 내보내기 |
| 입력 | 기간, 강의, 분석 대상 설정 |
| 출력 | 종합 리포트 (정답률 분포, 학생별 성취도, 문제 난이도 분석, 시계열 변화) |
| 관련 요구사항 | SFR-012 |
| 우선순위 | 중간 (Tier 2) |
| 구현 방식 | 차트 라이브러리(Chart.js/D3.js) 기반 시각화, PDF 리포트 자동 생성, 주기적 이메일 발송 옵션 |
FN-TCH-003: 문제별 학습 분석
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-003 |
| 기능명 | 문제별 학습 분석 |
| 설명 | 문제별 정답률, 제출 횟수, 평균 해결 시간, 주요 오류 패턴 분석 |
| 입력 | 문제 ID, 분석 기간 |
| 출력 | 문제별 통계 대시보드, 오류 패턴 리포트, 난이도 재산정 제안 |
| 관련 요구사항 | SFR-014 |
| 우선순위 | 중간 (Tier 2) |
| 구현 방식 | 문제별 집계 쿼리, 오류 유형 자동 분류, 난이도 자동 조정 제안 알고리즘 |
FN-TCH-004: 강의 및 과제 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-004 |
| 기능명 | 강의 및 과제 관리 |
| 설명 | 강의 그룹 생성, 문제 세트(문제지) 구성, 과제 배포 및 마감 관리 |
| 입력 | 강의명, 학생 목록, 문제 선택, 마감일 |
| 출력 | 과제 배포 완료, 제출 현황 대시보드 |
| 관련 요구사항 | SFR-017 |
| 우선순위 | 필수 (Tier 2) |
| 구현 방식 | 강의 그룹 CRUD, 문제 세트 빌더(드래그앤드롭), 과제 배포 일정 설정, 자동 마감 알림 |
FN-TCH-005: 시험 및 평가 관리
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-005 |
| 기능명 | 시험 및 평가 관리 |
| 설명 | 시험 모드 설정(시간 제한, 접근 제어), 시험 중 실시간 모니터링, AI 채점 + 수동 채점 병행 |
| 입력 | 시험 문제셋, 시간 제한, 참가 학생 |
| 출력 | 시험 결과, 개별 채점 결과, AI 채점 vs 수동 채점 비교 |
| 관련 요구사항 | SFR-018 |
| 우선순위 | 필수 (Tier 2) |
| 구현 방식 | 시험 모드 UI(복사/붙여넣기 제한 옵션, 시간 카운트다운), 실시간 제출 현황 WebSocket 스트리밍, 수동 채점 인터페이스, AI-수동 채점 비교 분석 |
FN-TCH-006: 실시간 수업 참여 반응 시스템
| 항목 | 내용 |
|---|---|
| 기능ID | FN-TCH-006 |
| 기능명 | 실시간 수업 속도 반응 시스템 |
| 설명 | 학생이 수업 속도를 실시간 평가, 교수자에게 취합 제공 |
| 입력 | 학생 수업 속도 평가 (빠름/적당/느림) |
| 출력 | 실시간 속도 분포 대시보드, 시계열 변화 |
| 관련 요구사항 | SFR-020 |
| 우선순위 | 낮음 (Tier 3) |
| 구현 방식 | 코드 에디터 상단 간편 투표 UI, WebSocket 기반 실시간 취합, 교수자 대시보드 실시간 표시 |
4. 화면 목록
4.1 학생용 화면
| # | 화면명 | 주요 기능 | 관련 기능ID |
|---|---|---|---|
| S-01 | 로그인/회원가입 | 인증, 계정 생성 | FN-COM-002 |
| S-02 | 대시보드 | 학습 현황 요약, 과제 목록, 최근 활동 | FN-LRN-003 |
| S-03 | 문제 목록 | 문제 검색/필터, 카테고리 브라우징 | FN-QB-002 |
| S-04 | 문제 풀이 (웹 IDE) | 코드 에디터 + 문제 설명 + 실행 결과 통합 | FN-LRN-001 |
| S-05 | 채점 결과 상세 | 14단계 채점 결과, 테스트케이스 상세 | FN-GRD-001 |
| S-06 | AI 피드백 | AI 해설, 코드 분석 결과, 학습 가이드 | FN-AI-001 |
| S-07 | AI 질의응답 | AI 튜터 채팅 인터페이스 | FN-AI-003 |
| S-08 | 학습 이력 | 제출 이력, 점수 변화 그래프 | FN-LRN-002 |
| S-09 | 학습 목표 | 목표 설정, 진도 추적 | FN-LRN-003 |
| S-10 | 수업 속도 평가 | 수업 속도 반응 투표 | FN-TCH-006 |
| S-11 | 프로필/설정 | 개인정보, 언어 설정 | FN-COM-002 |
4.2 교수자용 화면
| # | 화면명 | 주요 기능 | 관련 기능ID |
|---|---|---|---|
| T-01 | 교수 대시보드 | 강의 목록, 최근 활동, 알림 | FN-TCH-001 |
| T-02 | 강의 관리 | 강의 그룹 생성/수정, 학생 관리 | FN-TCH-004 |
| T-03 | 문제 출제 | 문제 등록/수정/삭제, 테스트케이스 관리 | FN-QB-001 |
| T-04 | AI 문제 생성 | AI 문제 생성 설정, 결과 검토/승인 | FN-AI-004 |
| T-05 | 문제 세트 구성 | 과제/시험 문제지 구성 | FN-TCH-004 |
| T-06 | 시험 관리 | 시험 모드 설정, 실시간 모니터링 | FN-TCH-005 |
| T-07 | 채점 관리 | AI 채점 결과 확인, 수동 채점, 비교 분석 | FN-TCH-005 |
| T-08 | 학생 현황 | 학생별 학습 현황, 성적 분석 | FN-TCH-001 |
| T-09 | 학습 리포트 | 종합 리포트 생성, PDF 내보내기 | FN-TCH-002 |
| T-10 | 문제 분석 | 문제별 정답률, 오류 패턴 분석 | FN-TCH-003 |
| T-11 | 코드 유사도 | 표절 탐지 결과 확인 | FN-AI-005 |
| T-12 | 수업 속도 모니터링 | 실시간 수업 속도 반응 대시보드 | FN-TCH-006 |
4.3 관리자용 화면
| # | 화면명 | 주요 기능 | 관련 기능ID |
|---|---|---|---|
| A-01 | 관리자 대시보드 | 시스템 현황, 사용자 통계 | FN-SYS-001 |
| A-02 | 테넌트 관리 | 테넌트 생성/설정/삭제 | FN-COM-003 |
| A-03 | 사용자 관리 | 사용자 CRUD, 역할 관리 | FN-COM-002 |
| A-04 | 시스템 모니터링 | 서버 상태, 채점 큐 현황, 에러 로그 | FN-SYS-001 |
| A-05 | LLM 사용 현황 | API 호출 통계, 비용 모니터링 | FN-AI-001 |
5. 데이터 모델
5.1 주요 엔티티
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Tenant │────<│ User │────<│ Lecture │
│ (테넌트) │ │ (사용자) │ │ (강의) │
│ │ │ role: enum │ │ │
└──────┬──────┘ └──────┬──────┘ └──────┬───────┘
│ │ │
│ ┌──────┴──────┐ ┌──────┴───────┐
│ │ Enrollment │ │ Assignment │
│ │ (수강 등록) │ │ (과제) │
│ └─────────────┘ └──────┬───────┘
│ │
┌──────┴──────┐ ┌─────────────┐ ┌──────┴───────┐
│ Problem │────<│ TestCase │ │ ProblemSet │
│ (문제) │ │(테스트케이스)│ │ (문제세트) │
│ metadata │ └─────────────┘ └──────────────┘
└──────┬──────┘
│
┌──────┴──────┐ ┌─────────────┐ ┌──────────────┐
│ Submission │────>│GradingResult│────>│ AIFeedback │
│ (제출) │ │ (채점결과) │ │ (AI 피드백) │
│ code, lang │ │ 14단계 결과 │ │ 해설, 분석 │
└──────┬──────┘ └─────────────┘ └──────────────┘
│
┌──────┴──────┐ ┌─────────────┐
│LearningLog │ │ AIQuery │
│(학습 로그) │ │ (AI 질의) │
│ xAPI 형식 │ │ 질문/답변 │
└─────────────┘ └─────────────┘5.2 핵심 엔티티 설명
| 엔티티 | 설명 | 주요 필드 |
|---|---|---|
| Tenant | 멀티테넌트 단위 (학과/부서) | id, name, settings, createdAt |
| User | 사용자 (학생/교수/관리자) | id, email, role, tenantId, profile, language |
| Problem | 코딩 문제 | id, title, description, difficulty, tags, language, testCases, solutionCode, metadata |
| TestCase | 테스트케이스 | id, problemId, input, expectedOutput, isHidden, weight |
| Submission | 코드 제출 | id, userId, problemId, code, language, submittedAt, version |
| GradingResult | 채점 결과 | id, submissionId, score, stageResults(14단계), executionTime, memoryUsage |
| AIFeedback | AI 분석/피드백 | id, submissionId, analysis, suggestions, learningGuide, modelUsed |
| LearningLog | 학습 행동 데이터 | id, userId, verb, object, result, timestamp (xAPI 형식) |
| Lecture | 강의 그룹 | id, name, professorId, tenantId, semester |
| Assignment | 과제/시험 | id, lectureId, problemSetId, type(과제/시험), deadline, settings |
| AIQuery | AI 질의응답 로그 | id, userId, question, answer, context, modelUsed, timestamp |
| SimilarityResult | 코드 유사도 | id, assignmentId, pairs, similarityScore, method |
6. 외부 연동
| 연동 대상 | 프로토콜 | 용도 | 비고 |
|---|---|---|---|
| Claude API (Anthropic) | REST API | 코드 분석, 피드백 생성, 질의응답, 문제 생성 | 주 LLM — EP 핵심 역량 |
| OpenAI GPT API | REST API | 보조 LLM, A/B 비교 테스트 | 대안/폴백 |
| xAPI / LRS | xAPI 표준 | 학습 행동 데이터 수집 | 표준 기반 학습 분석 |
| S3 호환 스토리지 | S3 API | 미디어 파일(이미지/영상) 저장 | MinIO 또는 클라우드 S3 |
| SMTP | SMTP | 이메일 알림 (과제 마감, 리포트 등) | 선택적 |
| SSO (학교 인증) | OAuth 2.0 / SAML | 한림대 학교 계정 연동 | 추후 확장 |
7. 비기능 요구사항
7.1 보안
- HTTPS(TLS 1.3) 전 구간 암호화
- JWT 기반 인증, 토큰 만료/갱신 관리
- RBAC(역할 기반 접근 제어): 학생/교수/관리자
- 코드 실행 환경 완전 격리 (Docker 컨테이너, 네트워크 제한, 리소스 제한)
- SQL Injection, XSS, CSRF 방어
- 개인정보 암호화 저장 (AES-256)
- 접근 로그 및 감사 로그 기록
7.2 성능
- 코드 실행 응답: 10초 이내 (일반 문제)
- 채점 결과 반환: 30초 이내 (14단계 전체)
- AI 피드백 생성: 15초 이내
- 동시 접속: 최소 200명 동시 코드 실행 지원
- 페이지 로드: 3초 이내 (첫 로드)
7.3 확장성
- 수평 확장 가능한 아키텍처 (컨테이너 기반)
- LLM 모델 교체/추가 용이한 어댑터 패턴
- 새로운 프로그래밍 언어 추가 용이 (Docker 이미지 추가)
- 멀티테넌트 확장으로 타 대학 적용 가능
7.4 가용성
- 서비스 가용성 99.5% 이상 (학기 중)
- 자동 백업 (일 1회 + 변경분 실시간)
- 장애 시 자동 알림 + 복구 프로세스
7.5 국제화 (i18n)
- 한국어, 영어 기본 지원
- 사용자 계정별 언어 설정 저장
- 브라우저 언어 자동 감지
- next-intl 표준 방식 적용
8. 기능 요약 매트릭스
| 구분 | 기능ID | 기능명 | 관련 요구사항 | 우선순위 |
|---|---|---|---|---|
| 시스템 | FN-SYS-001 | 시스템 기본 환경 구축 | ECR-001, ECR-002 | 필수 |
| 시스템 | FN-SYS-002 | 다층 방어 보안 아키텍처 | ECR-003 | 필수 |
| 공통 | FN-COM-001 | 공통 UI/UX 프레임워크 | SFR-001 | 필수 |
| 공통 | FN-COM-002 | 사용자 인증 및 계정 관리 | SFR-002 | 필수 |
| 공통 | FN-COM-003 | 멀티테넌트 아키텍처 | SFR-003 | 필수 |
| 문제은행 | FN-QB-001 | 코딩 문제은행 구축 | SFR-004, SFR-021 | 필수 |
| 문제은행 | FN-QB-002 | 문제 검색 및 관리 | SFR-005 | 필수 |
| 문제은행 | FN-QB-003 | 문제 이미지/영상 첨부 | SFR-021 | 중간 |
| 학습자 | FN-LRN-001 | 웹 기반 문제 풀이 (웹 IDE) | SFR-006 | 필수 |
| 학습자 | FN-LRN-002 | 학습 활동 기록 | SFR-009 | 필수 |
| 학습자 | FN-LRN-003 | 학습 목표 관리 | SFR-011 | 중간 |
| 채점 | FN-GRD-001 | 자동 채점 시스템 (14단계) | SFR-007 | 필수 |
| AI | FN-AI-001 | AI 학습 해설 및 피드백 | SFR-008 | 필수 |
| AI | FN-AI-002 | AI 학습 패턴 분석 | SFR-010 | 필수 |
| AI | FN-AI-003 | AI 질의응답 (AI 튜터) | SFR-015 | 중간 |
| AI | FN-AI-004 | AI 문제 자동 생성 | SFR-016 | 중간 |
| AI | FN-AI-005 | 코드 유사도 분석 | SFR-019 | 중간 |
| 교수자 | FN-TCH-001 | 학생 학습 관리 | SFR-013 | 필수 |
| 교수자 | FN-TCH-002 | 학습 리포트 생성 | SFR-012 | 중간 |
| 교수자 | FN-TCH-003 | 문제별 학습 분석 | SFR-014 | 중간 |
| 교수자 | FN-TCH-004 | 강의 및 과제 관리 | SFR-017 | 필수 |
| 교수자 | FN-TCH-005 | 시험 및 평가 관리 | SFR-018 | 필수 |
| 교수자 | FN-TCH-006 | 수업 속도 반응 시스템 | SFR-020 | 낮음 |
총 23개 기능 (필수 14개 / 중간 7개 / 낮음 2개)
RFP 요구사항 커버리지
- 시스템 환경 요구사항 (ECR-001~003): 100% 커버
- 기능 요구사항 (SFR-001~021): 100% 커버 (21개 전체)
- 모든 요구사항이 하나 이상의 기능ID에 매핑됨