Files
julius_baer_onboarding/app.py

70 lines
2.3 KiB
Python
Raw Normal View History

import logging
2025-04-12 19:05:52 +02:00
from flask import Flask, request
2025-04-12 19:02:34 +02:00
from flask_cors import cross_origin
import config
2025-04-12 19:05:52 +02:00
from dto.requests import GameStartRequestDTO, GameDecisionRequestDTO
from dto.responses import GameStartResponseWithBotDecisionDTO, GameDecisionResponseWithBotDecisionDTO
from services.julius_baer_api_client import JuliusBaerApiClient
2025-04-12 22:10:37 +02:00
from services.advisor import Advisor
2025-04-13 03:38:42 +02:00
from utils.storage.game_files_manager import store_game_round_data
2025-04-12 02:15:19 +02:00
2025-04-11 22:42:54 +02:00
app = Flask(__name__)
2025-04-12 16:58:01 +02:00
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - [%(module)s] - %(message)s')
2025-04-12 18:45:02 +02:00
jb_client = JuliusBaerApiClient()
2025-04-11 22:42:54 +02:00
2025-04-12 18:45:02 +02:00
@app.route('/new-game', methods=['POST'])
@cross_origin() # allow all origins all methods
2025-04-12 18:45:02 +02:00
def new_game():
2025-04-12 16:37:06 +02:00
game_start_request = GameStartRequestDTO(player_name=config.API_TEAM)
res = jb_client.start_game(game_start_request)
2025-04-12 22:10:37 +02:00
bot_decision = Advisor().make_decision(res.client_data)
2025-04-12 16:37:06 +02:00
res_with_bot_decision = GameStartResponseWithBotDecisionDTO(
message=res.message,
session_id=res.session_id,
player_id=res.player_id,
client_id=res.client_id,
client_data=res.client_data,
score=res.score,
2025-04-12 22:20:37 +02:00
bot_decision=bot_decision.answer,
bot_reason=bot_decision.reason,
)
2025-04-13 03:38:42 +02:00
store_game_round_data(bot_decision.answer, res_with_bot_decision, res.score, str(res.session_id), 'active')
return res_with_bot_decision.model_dump_json()
2025-04-12 02:15:19 +02:00
2025-04-12 19:05:52 +02:00
@app.route('/next', methods=['POST'])
@cross_origin() # allow all origins all methods
2025-04-12 19:05:52 +02:00
def next_client():
body = request.get_json()
decision = body.get("decision")
client_id = body.get("client_id")
session_id = body.get("session_id")
make_decision_request = GameDecisionRequestDTO(decision=decision, client_id=client_id, session_id=session_id)
res = jb_client.send_decision(make_decision_request)
2025-04-12 22:10:37 +02:00
bot_decision = Advisor().make_decision(res.client_data)
2025-04-12 19:05:52 +02:00
res_with_bot_decision = GameDecisionResponseWithBotDecisionDTO(
status=res.status,
score=res.score,
client_id=res.client_id,
client_data=res.client_data,
2025-04-12 22:20:37 +02:00
bot_decision=bot_decision.answer,
bot_reason=bot_decision.reason,
)
2025-04-13 03:38:42 +02:00
store_game_round_data(bot_decision.answer, res_with_bot_decision, res.score, str(session_id), res.status)
return res_with_bot_decision.model_dump_json()
2025-04-12 19:05:52 +02:00
2025-04-12 18:45:02 +02:00
if __name__ == '__main__':
2025-04-11 22:42:54 +02:00
app.run()