TL;DR — 문제 은행이 강좌에 종속돼 있어 공유의 최소 단위가 강좌였다. 문제 하나를 주려면 강좌를 통째로 열어야 했다. 공유 단위를 문제로 낮추고 교수 간 개별 공유·해제 API를 두어, 재사용의 단위를 실제로 재사용하고 싶은 크기에 맞췄다.
ProblemBank가 Course를 참조하고 Problem 목록을 소유하는 구조 — 즉 문제는 강좌에 종속돼 있었다공유의 최소 단위를 문제로 낮추고, 그 단위에 맞는 API를 폈다.
| 메서드 · 경로 | 기능 |
|---|---|
POST /problem/{problemId}/share |
문제 한 건을 지정한 교수에게 공유 |
POST /problem/{problemId}/unshare |
공유 해제 |
GET /problem/{problemId}/shared-users |
현재 공유 중인 대상 조회 |
GET /problem/{problemId}/shareable-users |
공유 가능한 대상 조회 |
GET /shared-list |
나에게 공유된 문제 목록 |
GET /public-list |
전체 공개 문제 목록 |