diff --git a/app.py b/app.py index dca9ed1..ba7a76b 100644 --- a/app.py +++ b/app.py @@ -1769,6 +1769,75 @@ def handle_activity_response(room_name, user_response, username): s for s in section["steps"] if s["step_id"] == activity_state.step_id ) + # Check if the step has a question + if "question" not in step: + # Move to the next step or section + next_section, next_step = get_next_step( + activity_content, section["section_id"], step["step_id"] + ) + + if next_step: + activity_state.section_id = next_section["section_id"] + activity_state.step_id = next_step["step_id"] + activity_state.attempts = 0 + + db.session.add(activity_state) + db.session.commit() + + # Emit the new step content blocks + content = "\n\n".join(next_step["content_blocks"]) + new_message = Message( + username="System", content=content, room_id=room.id + ) + db.session.add(new_message) + db.session.commit() + + socketio.emit( + "message", + { + "id": new_message.id, + "username": "System", + "content": content, + }, + room=room_name, + ) + + # Emit the new question if it exists + if "question" in next_step: + question_content = f"Question: {next_step['question']}" + new_message = Message( + username="System", content=question_content, room_id=room.id + ) + db.session.add(new_message) + db.session.commit() + + socketio.emit( + "message", + { + "id": new_message.id, + "username": "System", + "content": question_content, + }, + room=room_name, + ) + else: + # Display activity info before completing + display_activity_info(room_name, username) + + # Activity completed + db.session.delete(activity_state) + db.session.commit() + socketio.emit( + "message", + { + "id": None, + "username": "System", + "content": "Activity completed!", + }, + room=room_name, + ) + return + # Categorize the user's response category = categorize_response( step["question"], user_response, step["buckets"], step["tokens_for_ai"] @@ -1860,28 +1929,31 @@ def handle_activity_response(room_name, user_response, username): room=room_name, ) - # Emit the new question - question_content = f"Question: {next_step['question']}" - new_message = Message( - username="System", content=question_content, room_id=room.id - ) - db.session.add(new_message) - db.session.commit() + # Emit the new question if it exists + if "question" in next_step: + question_content = f"Question: {next_step['question']}" + new_message = Message( + username="System", content=question_content, room_id=room.id + ) + db.session.add(new_message) + db.session.commit() - socketio.emit( - "message", - { - "id": new_message.id, - "username": "System", - "content": question_content, - }, - room=room_name, - ) + socketio.emit( + "message", + { + "id": new_message.id, + "username": "System", + "content": question_content, + }, + room=room_name, + ) else: - # Activity completed! - # Display activity info before deleting. + # Display activity info before completing display_activity_info(room_name, username) + # Activity completed + db.session.delete(activity_state) + db.session.commit() socketio.emit( "message", { @@ -1891,9 +1963,6 @@ def handle_activity_response(room_name, user_response, username): }, room=room_name, ) - - db.session.delete(activity_state) - db.session.commit() else: # the user response is any bucket other than correct. activity_state.attempts += 1 diff --git a/research/activity13-choose-adventure.yaml b/research/activity13-choose-adventure.yaml index ccbcd86..fecb4d0 100644 --- a/research/activity13-choose-adventure.yaml +++ b/research/activity13-choose-adventure.yaml @@ -1,5 +1,6 @@ default_max_attempts_per_step: 3 -tokens_for_ai_rubric: "You are a master storyteller. Your task is to create a coherent and engaging story based on the following chat history. The story should seamlessly integrate the user's responses and the AI's feedback, ensuring that the narrative flows naturally. Pay special attention to the user's choices and how they shape the story. Use descriptive language to bring the scenes to life and make the story immersive. The story should have a clear beginning, middle, and end, reflecting the user's journey and the outcomes of their decisions. Here is the chat history. +tokens_for_ai_rubric: | + You are a master storyteller. Your task is to create a coherent and engaging story based on the following chat history. The story should seamlessly integrate the user's responses and the AI's feedback, ensuring that the narrative flows naturally. Pay special attention to the user's choices and how they shape the story. Use descriptive language to bring the scenes to life and make the story immersive. The story should have a clear beginning, middle, and end, reflecting the user's journey and the outcomes of their decisions. Here is the chat history. sections: - section_id: "section_1"