캐릭터 챗봇 #74
|
@ -270,6 +270,7 @@
|
||||||
outlined
|
outlined
|
||||||
auto-grow
|
auto-grow
|
||||||
rows="4"
|
rows="4"
|
||||||
|
:rules="systemPromptRules"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
class="caption grey--text text--darken-1 mt-1 custom-caption"
|
class="caption grey--text text--darken-1 mt-1 custom-caption"
|
||||||
|
@ -908,10 +909,10 @@
|
||||||
<v-btn
|
<v-btn
|
||||||
color="primary"
|
color="primary"
|
||||||
:loading="isLoading"
|
:loading="isLoading"
|
||||||
:disabled="!isFormValid || isLoading"
|
:disabled="isSaveDisabled"
|
||||||
@click="saveCharacter"
|
@click="saveCharacter"
|
||||||
>
|
>
|
||||||
저장
|
{{ isEdit ? '수정' : '저장' }}
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-form>
|
</v-form>
|
||||||
|
@ -994,7 +995,7 @@ export default {
|
||||||
v => (v && v.trim().length > 0) || '한 줄 소개를 입력하세요'
|
v => (v && v.trim().length > 0) || '한 줄 소개를 입력하세요'
|
||||||
],
|
],
|
||||||
imageRules: [
|
imageRules: [
|
||||||
v => !this.isEdit || !!v || !!this.character.imageUrl || '이미지를 선택하세요'
|
v => (this.isEdit ? true : (!!v || '이미지를 선택하세요'))
|
||||||
],
|
],
|
||||||
genderOptions: ['남성', '여성', '기타'],
|
genderOptions: ['남성', '여성', '기타'],
|
||||||
mbtiOptions: [
|
mbtiOptions: [
|
||||||
|
@ -1003,11 +1004,25 @@ export default {
|
||||||
'ISTJ', 'ISFJ', 'ESTJ', 'ESFJ',
|
'ISTJ', 'ISFJ', 'ESTJ', 'ESFJ',
|
||||||
'ISTP', 'ISFP', 'ESTP', 'ESFP'
|
'ISTP', 'ISFP', 'ESTP', 'ESFP'
|
||||||
],
|
],
|
||||||
typeOptions: ['Clone', 'Character']
|
typeOptions: ['Clone', 'Character'],
|
||||||
|
systemPromptRules: [
|
||||||
|
v => (this.isEdit ? true : (!!v && v.trim().length > 0) || '시스템 프롬프트를 입력하세요')
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
isSaveDisabled() {
|
||||||
|
if (this.isLoading) return true;
|
||||||
|
if (!this.isFormValid) return true;
|
||||||
|
if (!this.isEdit) return false; // 등록 시에는 변경 감지 없이 유효성만 확인
|
||||||
|
|
||||||
|
// 수정 시에는 변경 사항이 있는 경우에만 저장 가능
|
||||||
|
const changed = this.getChangedFields();
|
||||||
|
const hasNonIdField = Object.keys(changed || {}).some(k => k !== 'id');
|
||||||
|
const imageChanged = !!this.character.image; // 새 이미지 선택 여부
|
||||||
|
return !(hasNonIdField || imageChanged);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
|
Loading…
Reference in New Issue