Issue
HandongJudge 전용 파일 포맷을 사용한 대량 문제 Import 페이지를 구현합니다.
(서버는 Import 시 파싱 후 DOMjudge ZIP으로 변환해 업로드함)
HandongJudge Import 포맷 (참고)
사용자가 업로드하는 ZIP 파일 구조:
- DOMjudge 포맷이 아닌 서비스 전용 단순 구조
- 폴더명 = 문제 제목
{문제제목}/
├── description.md # 문제 설명 (마크다운)
├── problem.ini # timelimit=1, memorylimit=256
└── testcases/
├── 1.in
├── 1.out
├── 2.in
├── 2.out
└── ...
요구사항
1. 대량 문제 생성 페이지 진입
2. 파일 선택
3. 검증 결과 표시
4. 수정
5. 승인 및 Import
6. Import 결과
7. Export (선택)
참고 사항
- 백엔드 API:
POST /api/problems/bulk/parse, POST /api/problems/bulk/create (BE 이슈 참조)
- Tutor 페이지 CSS:
.bulk-import 스코프 사용, 모달 열림 시 focus 스타일 무시 규칙 추가
- 기존 ProblemManagement 스타일/레이아웃 참고
참고 자료
- BE 이슈: HandongJudge 포맷 Import/Export 및 bulk API
- ProblemManagement 페이지 구조
- AssignmentManagement 등 기존 대량/목록 UI
To-do
Issue
HandongJudge 전용 파일 포맷을 사용한 대량 문제 Import 페이지를 구현합니다.
(서버는 Import 시 파싱 후 DOMjudge ZIP으로 변환해 업로드함)
HandongJudge Import 포맷 (참고)
사용자가 업로드하는 ZIP 파일 구조:
{문제제목}/
├── description.md # 문제 설명 (마크다운)
├── problem.ini # timelimit=1, memorylimit=256
└── testcases/
├── 1.in
├── 1.out
├── 2.in
├── 2.out
└── ...
요구사항
1. 대량 문제 생성 페이지 진입
/tutor/problems/bulk-import).bulk-import(Tutor CSS 스코프 규칙 준수)2. 파일 선택
3. 검증 결과 표시
POST /api/problems/bulk/parse응답 기반 테이블4. 수정
5. 승인 및 Import
POST /api/problems/bulk/create호출6. Import 결과
7. Export (선택)
GET /api/problems/{id}/export호출 → HandongJudge 포맷 ZIP 다운로드참고 사항
POST /api/problems/bulk/parse,POST /api/problems/bulk/create(BE 이슈 참조).bulk-import스코프 사용, 모달 열림 시 focus 스타일 무시 규칙 추가참고 자료
To-do