feat(character): 캐릭터 등록 API
- 모든 내용을 form 에 등록하던 방식을 image와 request(json string)으로 등록하도록 수정
This commit is contained in:
parent
7f56d0b423
commit
80b298440b
|
@ -23,35 +23,33 @@ async function getCharacter(id) {
|
||||||
async function createCharacter(characterData) {
|
async function createCharacter(characterData) {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
|
|
||||||
// 기본 필드 추가
|
// 이미지만 FormData에 추가
|
||||||
formData.append('name', characterData.name)
|
|
||||||
formData.append('description', characterData.description)
|
|
||||||
formData.append('isActive', characterData.isActive)
|
|
||||||
|
|
||||||
// 추가 필드가 있는 경우 추가
|
|
||||||
if (characterData.personality) formData.append('personality', characterData.personality)
|
|
||||||
if (characterData.gender) formData.append('gender', characterData.gender)
|
|
||||||
if (characterData.birthDate) formData.append('birthDate', characterData.birthDate)
|
|
||||||
if (characterData.mbti) formData.append('mbti', characterData.mbti)
|
|
||||||
if (characterData.ageRestricted !== undefined) formData.append('ageRestricted', characterData.ageRestricted)
|
|
||||||
if (characterData.worldView) formData.append('worldView', characterData.worldView)
|
|
||||||
if (characterData.relationships) formData.append('relationships', characterData.relationships)
|
|
||||||
if (characterData.speechPattern) formData.append('speechPattern', characterData.speechPattern)
|
|
||||||
if (characterData.systemPrompt) formData.append('systemPrompt', characterData.systemPrompt)
|
|
||||||
|
|
||||||
// 태그와 메모리는 배열이므로 JSON 문자열로 변환
|
|
||||||
if (characterData.tags && characterData.tags.length > 0) {
|
|
||||||
formData.append('tags', JSON.stringify(characterData.tags))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterData.memories && characterData.memories.length > 0) {
|
|
||||||
formData.append('memories', JSON.stringify(characterData.memories))
|
|
||||||
}
|
|
||||||
|
|
||||||
// 이미지가 있는 경우 추가
|
|
||||||
if (characterData.image) formData.append('image', characterData.image)
|
if (characterData.image) formData.append('image', characterData.image)
|
||||||
|
|
||||||
return Vue.axios.post('/api/admin/characters', formData, {
|
// 나머지 데이터는 JSON 문자열로 변환하여 request 필드에 추가
|
||||||
|
const requestData = {
|
||||||
|
name: characterData.name,
|
||||||
|
systemPrompt: characterData.systemPrompt,
|
||||||
|
description: characterData.description,
|
||||||
|
age: characterData.age,
|
||||||
|
gender: characterData.gender,
|
||||||
|
mbti: characterData.mbti,
|
||||||
|
speechPattern: characterData.speechPattern,
|
||||||
|
speechStyle: characterData.conversationStyle,
|
||||||
|
appearance: characterData.appearance,
|
||||||
|
tags: characterData.tags || [],
|
||||||
|
hobbies: characterData.hobbies || [],
|
||||||
|
values: characterData.values || [],
|
||||||
|
goals: characterData.goals || [],
|
||||||
|
relationships: characterData.relationships || [],
|
||||||
|
personalities: characterData.personalities || [],
|
||||||
|
backgrounds: characterData.backgrounds || [],
|
||||||
|
memories: characterData.memories || []
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('request', JSON.stringify(requestData))
|
||||||
|
|
||||||
|
return Vue.axios.post('/admin/chat/character/register', formData, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data'
|
'Content-Type': 'multipart/form-data'
|
||||||
}
|
}
|
||||||
|
@ -62,34 +60,33 @@ async function createCharacter(characterData) {
|
||||||
async function updateCharacter(characterData) {
|
async function updateCharacter(characterData) {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
|
|
||||||
// 기본 필드 추가
|
// 이미지만 FormData에 추가
|
||||||
formData.append('name', characterData.name)
|
|
||||||
formData.append('description', characterData.description)
|
|
||||||
formData.append('isActive', characterData.isActive)
|
|
||||||
|
|
||||||
// 추가 필드가 있는 경우 추가
|
|
||||||
if (characterData.personality) formData.append('personality', characterData.personality)
|
|
||||||
if (characterData.gender) formData.append('gender', characterData.gender)
|
|
||||||
if (characterData.birthDate) formData.append('birthDate', characterData.birthDate)
|
|
||||||
if (characterData.mbti) formData.append('mbti', characterData.mbti)
|
|
||||||
if (characterData.ageRestricted !== undefined) formData.append('ageRestricted', characterData.ageRestricted)
|
|
||||||
if (characterData.worldView) formData.append('worldView', characterData.worldView)
|
|
||||||
if (characterData.relationships) formData.append('relationships', characterData.relationships)
|
|
||||||
if (characterData.speechPattern) formData.append('speechPattern', characterData.speechPattern)
|
|
||||||
if (characterData.systemPrompt) formData.append('systemPrompt', characterData.systemPrompt)
|
|
||||||
|
|
||||||
// 태그와 메모리는 배열이므로 JSON 문자열로 변환
|
|
||||||
if (characterData.tags && characterData.tags.length > 0) {
|
|
||||||
formData.append('tags', JSON.stringify(characterData.tags))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterData.memories && characterData.memories.length > 0) {
|
|
||||||
formData.append('memories', JSON.stringify(characterData.memories))
|
|
||||||
}
|
|
||||||
|
|
||||||
// 이미지가 있는 경우 추가
|
|
||||||
if (characterData.image) formData.append('image', characterData.image)
|
if (characterData.image) formData.append('image', characterData.image)
|
||||||
|
|
||||||
|
// 나머지 데이터는 JSON 문자열로 변환하여 request 필드에 추가
|
||||||
|
const requestData = {
|
||||||
|
name: characterData.name,
|
||||||
|
systemPrompt: characterData.systemPrompt,
|
||||||
|
description: characterData.description,
|
||||||
|
age: characterData.age,
|
||||||
|
gender: characterData.gender,
|
||||||
|
mbti: characterData.mbti,
|
||||||
|
speechPattern: characterData.speechPattern,
|
||||||
|
speechStyle: characterData.conversationStyle,
|
||||||
|
appearance: characterData.appearance,
|
||||||
|
tags: characterData.tags || [],
|
||||||
|
hobbies: characterData.hobbies || [],
|
||||||
|
values: characterData.values || [],
|
||||||
|
goals: characterData.goals || [],
|
||||||
|
relationships: characterData.relationships || [],
|
||||||
|
personalities: characterData.personalities || [],
|
||||||
|
backgrounds: characterData.backgrounds || [],
|
||||||
|
memories: characterData.memories || [],
|
||||||
|
isActive: characterData.isActive
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('request', JSON.stringify(requestData))
|
||||||
|
|
||||||
return Vue.axios.put(`/api/admin/characters/${characterData.id}`, formData, {
|
return Vue.axios.put(`/api/admin/characters/${characterData.id}`, formData, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data'
|
'Content-Type': 'multipart/form-data'
|
||||||
|
|
Loading…
Reference in New Issue