프로젝트 정보

3주차 활동 보고서

액션 아이템

Flask 서버 구축

image.png

from flask import Flask, request, jsonify
from flask_cors import CORS
import logging
import html 

from translate_service import translate_ko_to_en, translate_en_to_ko
from summarize import summarize_text
from emotion import analyze_emotion

app = Flask(__name__)

CORS(app, resources={r"/*": {"origins": "*"}})

logging.basicConfig(level=logging.DEBUG)

@app.route('/summarize', methods=['POST'])
def summarize_and_analyze():
    data = request.get_json()
    text_ko = data.get('text', '')

    if not text_ko:
        return jsonify({'error': '텍스트가 없습니다.'}), 400

    try:
        # 1. 한글 → 영어 번역
        text_en = translate_ko_to_en(text_ko)
        app.logger.debug(f"한글 -> 영어 번역: {text_en}")

        # 2. 영어 요약
        summary_en = summarize_text(text_en)
        app.logger.debug(f"영어 요약 결과: {summary_en}")

        # 3. 영어 요약 → 한글 번역
        summary_ko = translate_en_to_ko(summary_en)
        app.logger.debug(f"한글 요약 결과: {summary_ko}")

        # 4. 감정 분석 (원문 영어 텍스트 기준)
        emotion_label = analyze_emotion(text_en)
        app.logger.debug(f"감정 분석 결과: {emotion_label}")

        return jsonify({
            'summary': summary_ko,
            'emotion': emotion_label
        })

    except Exception as e:
        app.logger.error(f"에러 발생: {e}")
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    print("Flask 서버 실행 중")
    app.run(host='0.0.0.0', port=5000)
 

플로우 차트 제작

flowchart TD
    A[📝 사용자 한글 일기 작성<br>Flutter 앱] --> B[🌐 영어 번역<br>Google Cloud Translation API]
    B --> C[📡 일기 전송<br>Flask 서버]
    C --> D[🤖 요약 및 감정 분석<br>Transformers 모델]
    D --> E[🌐 결과 한글 번역<br>Google Cloud Translation API]
    E --> F[📱 결과 시각화<br>Flutter 앱<br>요약 텍스트 + 감정 이모티콘]