From a3e82a81f85075217278070daf80262cebcb3c24 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Mon, 11 Aug 2025 15:51:45 +0900 Subject: [PATCH] =?UTF-8?q?feat(chat):=20=EC=BA=90=EB=A6=AD=ED=84=B0=20?= =?UTF-8?q?=ED=8F=BC=EC=97=90=20'=ED=95=9C=20=EC=A4=84=20=EC=86=8C?= =?UTF-8?q?=EA=B0=9C',=20=EC=BA=90=EB=A6=AD=ED=84=B0=20=EC=9C=A0=ED=98=95,?= =?UTF-8?q?=20=EC=9B=90=EC=9E=91=20=EC=A0=95=EB=B3=B4=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20=EB=B0=8F=20API=20=ED=95=84=EB=93=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CharacterForm.vue: 설명을 한 줄 소개(TextField)로 변경하고 MBTI 옆에 캐릭터 유형 Select 추가, 태그 아래 원작명/원작링크 필드 추가. api/character.js: createCharacter 요청에 characterType, originalTitle, originalLink 반영. 수정/등록 로직에 관련 필드 매핑 및 변경 필드 추출 반영. 왜: 신규 요구사항 반영 및 API/데이터 정합성 확보. --- src/api/character.js | 3 ++ src/views/Chat/CharacterForm.vue | 64 +++++++++++++++++++++++++++----- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/src/api/character.js b/src/api/character.js index 2c1f32c..b090cd9 100644 --- a/src/api/character.js +++ b/src/api/character.js @@ -34,6 +34,9 @@ async function createCharacter(characterData) { age: characterData.age, gender: characterData.gender, mbti: characterData.mbti, + characterType: characterData.type, + originalTitle: characterData.originalTitle, + originalLink: characterData.originalLink, speechPattern: characterData.speechPattern, speechStyle: characterData.conversationStyle, appearance: characterData.appearance, diff --git a/src/views/Chat/CharacterForm.vue b/src/views/Chat/CharacterForm.vue index 8286c0a..9c638aa 100644 --- a/src/views/Chat/CharacterForm.vue +++ b/src/views/Chat/CharacterForm.vue @@ -69,17 +69,16 @@ - + - @@ -117,7 +116,7 @@ - + + + + @@ -168,6 +179,32 @@ + + + + + + + + + + @@ -925,6 +962,9 @@ export default { gender: '', age: '', mbti: '', + type: '', + originalTitle: '', + originalLink: '', speechPattern: '', conversationStyle: '', appearance: '', @@ -950,8 +990,8 @@ export default { v => (v && v.trim().length > 0) || '이름을 입력하세요' ], descriptionRules: [ - v => !!v || '설명을 입력하세요', - v => (v && v.trim().length > 0) || '설명을 입력하세요' + v => !!v || '한 줄 소개를 입력하세요', + v => (v && v.trim().length > 0) || '한 줄 소개를 입력하세요' ], imageRules: [ v => !this.isEdit || !!v || !!this.character.imageUrl || '이미지를 선택하세요' @@ -962,7 +1002,8 @@ export default { 'INFJ', 'INFP', 'ENFJ', 'ENFP', 'ISTJ', 'ISFJ', 'ESTJ', 'ESFJ', 'ISTP', 'ISFP', 'ESTP', 'ESFP' - ] + ], + typeOptions: ['Clone', 'Character'] } }, @@ -1247,6 +1288,9 @@ export default { age: this.character.age, gender: this.character.gender, mbti: this.character.mbti, + type: this.character.type, + originalTitle: this.character.originalTitle, + originalLink: this.character.originalLink, speechPattern: this.character.speechPattern, speechStyle: this.character.conversationStyle, appearance: this.character.appearance, @@ -1269,7 +1313,7 @@ export default { // 기본 필드 비교 const simpleFields = [ - 'name', 'description', 'age', 'gender', 'mbti', + 'name', 'description', 'age', 'gender', 'mbti', 'type', 'originalTitle', 'originalLink', 'speechPattern', 'isActive' ];