임동욱 임동욱 08-21
feat: 퀴즈 수정 팝업의 키워드를 제목에서 되살린다
저장할 때 키워드를 쉼표로 이어 quizTitle 한 칸에 넣으므로, 수정 화면을 열면 키워드가
전부 비어 있었다. 제목을 쉼표로 갈라 줄을 채운다.

설명은 저장 경로에 자리가 없어 되살릴 수 없다(사용자 확정) — 키워드만 채워지고 설명은
빈 칸으로 열린다. 백엔드가 키워드 목록을 받게 되면 이 변환은 필요 없어진다.

Co-Authored-By: Claude Opus 5 
@911150a93c8552401b598775e041a52a58cc9787
app/(protected)/(basic)/contents/quizzes/_components/quiz-form.tsx
--- app/(protected)/(basic)/contents/quizzes/_components/quiz-form.tsx
+++ app/(protected)/(basic)/contents/quizzes/_components/quiz-form.tsx
@@ -14,6 +14,7 @@
   ANSWER_MESSAGE_OPTIONS,
   QUIZ_ANSWER_OPTIONS,
   QUIZ_LEVEL_OPTIONS,
+  keywordsFromText,
   type QuizItem,
   type GradesBySchool,
 } from '@/lib/domain/content';
@@ -104,7 +105,12 @@
         </ContentFormRow>
 
         <ContentFormRow label="키워드">
-          <ContentKeywordField error={errors.keywords} />
+          <ContentKeywordField
+            defaultKeywords={
+              item ? keywordsFromText(item.keywordText) : undefined
+            }
+            error={errors.keywords}
+          />
         </ContentFormRow>
 
         <ContentFormRow label="질문" required>
lib/domain/content.ts
--- lib/domain/content.ts
+++ lib/domain/content.ts
@@ -62,6 +62,21 @@
   description: string;
 };
 
+/**
+ * 퀴즈의 `quizTitle`을 키워드 줄로 되돌린다.
+ *
+ * 저장할 때 키워드를 쉼표로 이어 한 칸에 넣으므로 **설명은 남지 않는다**(사용자 확정).
+ * 그래서 수정 화면을 열면 키워드만 채워지고 설명은 빈 칸이며, 그대로 저장하면 설명은 계속
+ * 비어 있다. 백엔드가 키워드 목록을 받게 되면 이 함수는 필요 없어진다.
+ */
+export function keywordsFromText(text: string): ContentKeyword[] {
+  return text
+    .split(',')
+    .map((part) => part.trim())
+    .filter(Boolean)
+    .map((keyword) => ({ keyword, description: '' }));
+}
+
 /** 등록 폼이 처음 보여 주는 키워드 줄 수(사용자 확정 — 종전 2줄에서 1줄로). */
 export const DEFAULT_KEYWORD_ROWS = 1;
 
Add a comment
List