3주차 활동 보고서
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>요약 텍스트 + 감정 이모티콘]