Skip to content

[2024/08/10/토] 백, 프론트 주고받는 데이터 형식 회의 #27

Description

@SeoMiYoung

결과 분석 페이지 UI

image

보영이가 이런식으로 정보가 올거라고 알려줬다.

[ 서버로부터 오는 정보 형태 ]

{
  "role_play": {
    "type": "병원놀이",
    "child_role": "환자",
    "ai_role": "의사",
    "setting_voice": "엄마",
    "start_time: "14:35:12",
    "end_time": "20:35:12"
  },
  "conversation_summary": "의사와 환자가 대화하는 상황입니다. 민규가 목이 아파서 의사 선생님에게 진료를 요청하고 있습니다. 의사 선생님은 민규의 열을 측정하고 약을 처방했습니다. 민규는 다음 번에 다시 진료받을 것을 기약하며 대화를 마무리 했습니다.",
  "language_development_analysis": {
    "vocabulary_use": {
      "total_word_count": 36
      "basic_word_count": 17,
      "new_word_count": 5,
      "new_used_words": ["약", "아파요", "열나요", "감사합니다"]
    },
    "sentence_structure": [
         {"dialog_conent": "얼굴이 화끈하고 머리가 지끈합니다", "comment": "'화끈하다', '지끈하다'라는 감각적인 어휘를 사용하여 신체적 감각이나 감정을 구체적으로 묘사했습니다."},
        {"dialog_conent": "목이 붓고 머리가 아파서 왔어요", "comment": "'목이 붓다', '머리가 아프다'라는 어휘를 사용하여 자신의 상태를 정확하게 묘사하고 있습니다. 단어 조합을 적절히 잘해서 활용하고 있습니다."}
    ]
  },
  "emotional_development_analysis": {
    "vocabulary_use": {
      "total_word_count": 15,
      "basic_word_count": 31,
      "new_word_count": 2,
      "new_used_words": ["감사합니다", "기뻐요", "행복해요"]
    },
    "sentence_structure": [
         {"dialog_conent": "하루종일 머리가 아파서 우울했어요", "comment": "'우울하다'라는 감정 표현을 직접적으로 활용하여 자신의 기분을 묘사했습니다."},
        {"dialog_conent": "하지만 맛있는 걸 먹어서 기분이 좋아졌어요", "comment": "'기분이 좋아지다'라는 감정 표현을 직접적으로 활용하여 자신의 기분을 묘사했습니다. 맛있는걸 먹고 난 후 긍정적인 감정 변화를 보였습니다."}
    ]
  },
  "interaction_patterns": {
    "child_questions_and_responses_rate": {
      "child_responses": 12,
      "ai_responses": 23
    },
    "interaction_summary": "의사가 대부분의 대화를 주도하면서 상황을 이끌어갔고, 환자 자신의 아픈 부분을 자세하게 설명하면서 활발한 상호작용이 이루어졌습니다."
  },
  "comprehensive_results": "민규는 언어 발달 측면에서 매우 우수한 모습을 보이고 있습니다. 다양한 어휘를 활용하여 자신의 상태와 감정을 구체적으로 표현할 수 있으며, 대화의 주도권을 잡고 상호작용을 이끌어가는 능력이 있습니다. 감정 표현 능력도 충분히 발달되어 있으며, 이를 통해 자신의 정서 상태를 명확히 전달할 수 있습니다."
}

매치를 해보면, 다음과 같다.

역할놀이 종류 type
09:00 PM start_time
10m end_time - start_time
민규 역할 child_role
AI 역할 ai_role
역할놀이 대화 내용 요약 conversation_summary
기본 어휘 사용 비율 total_word_count 대비 basic_word_count (%)
고급 어휘 사용 비율 total_word_count 대비 new_word_count (%)
주요 사용 어휘 표현 new_used_words
문장 구조 및 언어 구사도 분석 dialog_conent와 comment
감정 어휘 사용 비율 total_word_count 대비 basic_word_count (%)
감정 표현 문장 활용 비율 total_word_count 대비 new_word_count (%)
주요 사용 감정 표현 new_used_words
감정 표현 및 정서반응 분석 sentence_structure
민규의 발화 비율 child_responses
AI의 발화 비율 ai_responses
대화 주도성 분석 interaction_summary
종합 평가 comprehensive_results

스크립트 모음 화면

[ 기획 회의 ]

image

[ 현재 개발 ]

Animation

[ 서버로부터 오는 정보 형태 ]

{
        "history_list": [
            {
                "history_id": 1,
                "situation": "병원놀이",
                "date": "2024-06-09",
                "duration": "26:12",
                "voice": "엄마"
            },
            {
                "history_id": 2,
                "situation": "학교놀이",
                "date": "2024-06-07",
                "duration": "41:08",
                "voice": "아빠"
            },
            # 추가 데이터...
        ]
    }

💫 통신 시나리오 이해하고 시작하기

보영이의 DB설계에 의하면, 사용자의 선택에 대해서 다음과 같은 요청을 넘겨줘야한다.

(1) 사용자 설정 완료 후, 다음으로 넘어가는 순간

image

[ React 서버 측 --> fastAPI 서버 ]

{
  "voice_id": 1,
  "situation": "school",
  "my_role": "학생",
  "ai_role": "선생님"
}

[ fastAPI 서버 측 --> React 서버 ]

그러면, fastAPI 서버측에서는 history값을 프론트에게 다음과 같이 넘겨줄거다.

{
  "history_id": 1
}

이게 무슨 의미이냐면, 지금부터 채팅을 하면서 진행되는 채팅은 history_id 1번으로 전달해줘라~라는 의미이다.

이제 채팅페이지로 넘어가서 채팅을 진행하게 될텐데, 프론트측은, 채팅이 진행될때마다, 서버에게 history_id 1번에 해당하는 채팅임을 알려줘야한다. 그러면 이후에 진행될 채팅에서 프론트는 채팅 정보를 fastAPI 서버가 전달해준 history번호로 전달하면 된다.

(2) 채팅을 진행하면서

image

[ React 서버 측 --> fastAPI 서버 ]

{
  "message": {
    "question": "어디가 아파서 왔나요?"
  },
  "chat_history_id": {
    "history_id": 15
  }
}

[ fastAPI 서버 측 --> React 서버 ]

그러면 서버측에서는 LM Studio의 응답을 받아서 프론트에게 이렇게 응답할 것이다.

{
  "response": "머리가 아파서 왔어요"
}

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions