에디터 고도화¶
요지¶
MS3 기능. 권한에 따라 수업노트·질문/답변·후기 등을 작성하는 공용 에디터(Tiptap 기반)를 고도화 — 헤딩·이미지·파일·링크를 손쉽게 첨부해 작성 경험을 개선. 첨부를 MediaAsset로 리소스 공통 재사용한다. 수업노트 Spec Out 항목을 끌어올린 후속 작업.
해결하는 문제¶
텍스트 위주 작성은 수업노트·질문의 표현력이 부족했다(수업노트에서 Spec Out된 항목). 에디터 고도화는 이미지·파일·링크를 손쉽게 첨부해 작성 경험을 끌어올리고, 첨부 처리 로직을 한 번 만들어 수업노트·Q&A·과제에 동일하게 적용한다.
- 작성자: 이미지 드래그&드롭 삽입, 파일 다운로드 링크 첨부, 외부 링크 og 카드 임베드, 기본 서식(헤딩·말머리·들여쓰기·bold·기울임).
- 개발:
MediaAssetService/MediaAssetContentResolver로 첨부 생성·조회를 한 곳에서 처리 → 신규 리소스는TargetType추가 +mediaIds연결만으로 첨부 지원.
핵심 동작¶
- 이미지: 툴바 [이미지] 또는 드래그&드롭 → 업로드 로딩 → 썸네일 본문 삽입(크기 조절·정렬). jpg/png/gif/webp, 1개 5MB.
- 파일: 첨부 → 다운로드 링크 카드(아이콘+파일명+용량), 다중. pdf/docx/pptx/hwp/hwpx/xlsx/zip, 1개 30MB.
- 링크:
Ctrl+K/버튼 → og 미리보기 카드(링크/표시 문구 개별 편집·임베드). - 미디어 참조(
media://): 본문(Tiptap content)에는 첨부를media://<mediaId>형태 참조로 저장하고, 상세 조회 시MediaAssetContentResolver가 S3 presignedUrl·만료시간으로 치환해 렌더 — 원본 URL을 본문에 박지 않아 만료·재발급에 안전.
적용 리소스: 수업노트(teaching-note) · Q&A(qna) · 과제(과제관리) — MediaAsset + targetType으로 첨부를 공통 처리.