feat(chat): 캐릭터 폼에 '한 줄 소개', 캐릭터 유형, 원작 정보 추가 및 API 필드 반영
CharacterForm.vue: 설명을 한 줄 소개(TextField)로 변경하고 MBTI 옆에 캐릭터 유형 Select 추가, 태그 아래 원작명/원작링크 필드 추가. api/character.js: createCharacter 요청에 characterType, originalTitle, originalLink 반영. 수정/등록 로직에 관련 필드 매핑 및 변경 필드 추출 반영. 왜: 신규 요구사항 반영 및 API/데이터 정합성 확보.
This commit is contained in:
parent
efca5e445d
commit
a3e82a81f8
|
@ -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,
|
||||
|
|
|
@ -69,17 +69,16 @@
|
|||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<!-- 캐릭터 설명 -->
|
||||
<!-- 캐릭터 한 줄 소개 -->
|
||||
<v-row>
|
||||
<v-col cols="12">
|
||||
<v-textarea
|
||||
<v-text-field
|
||||
v-model="character.description"
|
||||
label="캐릭터 설명"
|
||||
label="캐릭터 한 줄 소개"
|
||||
:rules="descriptionRules"
|
||||
required
|
||||
outlined
|
||||
auto-grow
|
||||
rows="4"
|
||||
dense
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -117,7 +116,7 @@
|
|||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<!-- MBTI -->
|
||||
<!-- MBTI & 캐릭터 유형 -->
|
||||
<v-row>
|
||||
<v-col
|
||||
cols="12"
|
||||
|
@ -131,6 +130,18 @@
|
|||
dense
|
||||
/>
|
||||
</v-col>
|
||||
<v-col
|
||||
cols="12"
|
||||
md="6"
|
||||
>
|
||||
<v-select
|
||||
v-model="character.type"
|
||||
:items="typeOptions"
|
||||
label="캐릭터 유형"
|
||||
outlined
|
||||
dense
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<!-- 태그 - 입력 후 띄어쓰기 할 때마다 Chip 형태로 변경 -->
|
||||
|
@ -168,6 +179,32 @@
|
|||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<!-- 원작 정보 -->
|
||||
<v-row>
|
||||
<v-col
|
||||
cols="12"
|
||||
md="6"
|
||||
>
|
||||
<v-text-field
|
||||
v-model="character.originalTitle"
|
||||
label="원작명"
|
||||
outlined
|
||||
dense
|
||||
/>
|
||||
</v-col>
|
||||
<v-col
|
||||
cols="12"
|
||||
md="6"
|
||||
>
|
||||
<v-text-field
|
||||
v-model="character.originalLink"
|
||||
label="원작링크"
|
||||
outlined
|
||||
dense
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<!-- 긴 텍스트 섹션 -->
|
||||
<v-row>
|
||||
<v-col cols="12">
|
||||
|
@ -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'
|
||||
];
|
||||
|
||||
|
|
Loading…
Reference in New Issue