요약 — CodeQuest에서 문제 한 건을 공유하려면 강좌 전체를 열어야 하는 도메인 경계를 분석했다. 공유 단위를 문제로 낮추고 개별 공유·해제와 전체 공개 목록을 분리했다. 기능 구조 개선은 보존하되 사용률 상승을 측정한 성과로 쓰지 않으며 소유자/공유 대상/공개 권한, 해제 후 조회·직접 URL 인가의 검증 범위를 구분한다.
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 |
전체 공개 문제 목록 |